This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
从TRM上来看,F280049的EPWMxA和EPWMxB可以单独配置HRPWM。在我们的应用中需要产生带死区的互补的两路HREPWM波形。原始波形AQ模块,EPWM1A和EPWM1B波形均由CMPA比较产生,配置示意图如下图1所示。请问是可以在此基础上进一步通过CMPAHR同时实现对EPWM1A和EPWM1B的高精度调节吗?另外,如图2所示,如何理解 CMPBHR is for use with the AQ output of Channel B ,and is not related to CMPB? 是说如果需要在OUTB上独立产生高精PWM波,必须用CMPA+CMPBHR或者CMPB+CMPBHR来实现吗?期待专家的回复,谢谢!
图1
图2
您好,
请问是可以在此基础上进一步通过CMPAHR同时实现对EPWM1A和EPWM1B的高精度调节吗?
不可以,CMPAHR 不是与 CMPA 绑定,而是与channel A 绑定。
CMP< channel > HR
与 CMPA 相反,它与 CHANNELA 无关。
因此您可以将 CMPBHR 设置为与 CMPHR 相同的值。
您好,感谢回复!
可以将 CMPBHR 设置为与 CMPHR 相同的值。
您的意思是可以通过CMPA+CMPBHR(CMPBHR设置为CMPAHR相同的值)来实现EPWM1B通道的高精PWM波吗?
您好!我在测试HRPWM时遇到一个问题想请教一下:我在程序中按照TRM中的说明配置CMPA和CMPAHR,测试中发现无论duty设置为什么值,CMPAHR寄存器中的值始终为0,若在此基础上再将u16CMPFracVal2左移8位复制给CMPAHR,则可以产生HRPWM。想问一下这是什么原因呢?CMPAHR是16位的寄存器,低8位忽略,应该只需要左移8为就可以。另外,使用HRPWM时,CMPAHR是不是不能为0?例程中设置CMPAHR至少为1是处于什么考虑呢?麻烦帮忙卡一下,谢谢!
您好,
1) 对于 CMPAHR来说,只需填充upper 8 bit即可。
2)不想让CMPAHR 为0,请至少使用1。
这是一个非常易于使用的代码片段。 遵循此步骤,应该可以正常工作。
您好,
1)
1) 对于 CMPAHR来说,只需填充upper 8 bit即可。
只需填充upper 8 bit,那应该就是<<8位即可,但是测试时发现,如果只是把比较器小数部分的数值<<8位,则CMPAHR数值始终为0,左移16位才可以,请问是那里有问题吗?
2)
2)不想让CMPAHR 为0,请至少使用1。
对于高精寄存器,CMPAHR/CMPBHR/TBPRDHR/TBPHSHR,使用时都需要使其至少为1吗?实测时发现如果CMPAHR有为0的情况,则出来的驱动duty不对。请问至少为1的原因是什么呢?
您好,
只需填充upper 8 bit,那应该就是<<8位即可,但是测试时发现,如果只是把比较器小数部分的数值<<8位,则CMPAHR数值始终为0,左移16位才可以,请问是那里有问题吗?
如果在调试期间在寄存器视图中查看:CMPAHR = 0xXYZW,那么您只想要使用 XY。
对于高精寄存器,CMPAHR/CMPBHR/TBPRDHR/TBPHSHR,使用时都需要使其至少为1吗?实测时发现如果CMPAHR有为0的情况,则出来的驱动duty不对。请问至少为1的原因是什么呢?
工程师这边唯一确定的是, CMPAHR/CMPBHR必须使用1或更高。