28335 HRPWM问题

2019-03-24 09:30发布

在28335中使用HRPWM模块,并使用SFO函数动态校正MEP的个数。
根据官方datasheet中的描述,当某个EPWM通道工作在正常模式下时,可以在该通道上使用SFO_MepDis_V5(n)函数来校正MEP的个数,并供其他其他使用HRPWM的通道使用。

当我在28335中将EPWM4,EPWM5配置成HRPWM模式时(EPWM1、2、3工作在普通PWM模式),由于EPWM1并没有使用HRPWM功能,因此在主循环中直接不断调用SFO_MepDis_V5(1)来校正MEP_ScaleFactor[1] ,并将校正结果提供给EPWM4、5的HRPWM使用。


但实际运行情况是,只有在初始化时,第一次使用SFO_MepDis_V5(n)函数后,MEP_ScaleFactor[n]的值大约在45左右,是正确的,以后再次调用时,MEP_ScaleFactor[n]的值始终为 0x7FFF(10进制下为32767)。请问 有人用过类似的功能或遇到过类似的类似的情况吗?求指导。


为了找出原因,我曾在初始化阶段使用SFO_MepDis_V5(n)对MEP_ScaleFactor[n]的初值进行连续两次初始化,结果单步调试时,第一次初始化后,MEP_ScaleFactor[n]的值为45,再次初始化后,MEP_ScaleFactor[n]的值就变成了0x7FFF。(此时各PWM通道还未进行配置,也就是说,不是因为再HRPWM运行时调用SFO_MepDis_V5(n)函数而导致该错误的)似乎SFO_MepDis_V5(n)只有在第一次调用后,才会产生正确的结果,以后不管怎么调用,产生的结果一律为0x7FFF。


我也曾尝试过在HRPWM运行时使用SFO_MepEn_V5(n)函数来校正,但该函数运行速度太慢了,校正一个通道大约需要5~6秒的时间(不知道是否正常)。而且官方手册上说,在HRPWM运行时,对于没有配置为HRPWM的EPWM通道是可以运行SFO_MepDis_V5(n)函数的。


请问有谁知道是为什么吗?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
664044809
2019-03-24 17:59
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章