您好!
我正在使用 TMS320F2809微控制器、我对 HRPWM 模块有一些疑问。
首先、我尝试了 Example_280xHRPWM_SFO_V5.C. 似乎是在工作。
在本例中、我使用的是 TBPHS、而不是 CMPA 寄存器。
我阅读了数据表 spru924f、更确切地说是在第15/42页。 我们可以看到如何计算两个寄存器。
因此,如果我们遵循以下示例:
1)
MEP_ScaleFactor = 55
PWMDuty = 99、1896/180 = 0、551053
PWMPeriod = 715
CMPA = PWMDuty* PWMPeriod = 394
CMPAHR =(FRAC (PWMDuty*PWMPeriod)*MEP_ScaleFactor +1.5)<<8)=(FRAC (0、551053 * 715)*55 +1.5)*256)=(0、0031333 * 55 +1.5)*256)= 428 = 0x1AC (较低的8位将被硬件忽略)
CMPAHR = 0x100 = 256
(* ePWM[i]).cmpa.all =((long) cmpa_reg_val)<<16 | CMPAHR_REG_val;= 394*65536 + 256 = 25821440
2)
MEP_ScaleFactor = 55
PWMDuty = 99、1882/180 = 0、551045 (该角度是距离1最近的一个)示例)
PWMPeriod = 715
CMPA = PWMDuty* PWMPeriod = 393
CMPAHR =(FRAC (PWMDuty*PWMPeriod)*MEP_ScaleFactor +1.5)<<8)=(FRAC (0、551045 * 715)*55 +1.5)*256)=(0、9975722*55 +1.5)*256)=14429 = 0x385D (较低的8位将被硬件忽略)
CMPAHR = 0x3800 = 14336
(* ePWM[i]).cmpa.all =((long) cmpa_reg_val)<<16 | CMPAHR_REG_val;= 393*65536 + 14436 =25770084
这两点之间的差异使我感到有些麻烦。 (25821440 - 25770084= 51356)。
我在 Excel 中实现了这些方程。 我的占空比是线性的、但 CMPA.ALL 不是。 可能是正常的。
但在本例中、当 CMPA 寄存器发生变化时、我可以看到占空比存在差异。
CMPA.ALL 寄存器的角度(占空比)函数的演变。
红色表示这正是它在数据表中所写的内容。
我们可以看到我正在讨论的差距、我可以在我的系统中看到它。
是否有任何解释?
非常感谢
| PWMDuty |