在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)函数的。
请问有谁知道是为什么吗?
此帖出自
小平头技术问答
一周热门 更多>