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.
您好!
我们使用 TMS320F28069的 ePWM 输出来控制半桥。
初始化后、仅调整 PWM 机器的比较值。
这发生在 CLA 中断中。 PWM 机器以30kHz 的频率在上行关闭模式下运行。
Epwm1A 和 Epwm1B 用于上 IGBT 和下 IGBT 同步和反相。
我们希望更改 CTR =零和 CTR =周期时的占空比。 CMPA 应用于两个 PWM。
在我的测试中、我注意到在比较值有效之前、输入 CLA_int 的2到3倍。
我的预期是、在 CLA_int 中计算得出的 CompareValue 将从下一个 CTR =零或 CTR =周期事件生效。
这种延迟来自哪里?
Epwm1的初始化如下:
EPwm1Regs.TBPRD = PWM_PERIode _已使用;//90e6/30e3
EPwm1Regs.TBPHS.Half.TBPHS = 0;
EPwm1Regs.TBCTL.bit.CLKDIV = TB_CLKDIV_DIV1;//0
EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_HSPCLKDIV_DIV1;//0
EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;//1.
EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW;//0
EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE;//0
EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;//2.
EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADODE;//0
EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;//0
EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_Zero_PRD;//2.
EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_Zero_PRD; //2.
EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR;//1.
EPwm1Regs.AQCTLA.bit.CAD = AQ_SET;//2.
EPwm1Regs.AQCTLB.bit.CAU = AQ_SET;//2 -可能不需要
EPwm1Regs.AQCTLB.bit.CAD = AQ_CLEAR;//1-可能不需要
EPwm1Regs.DBCTL.bit.HALFCYCLE = 0;
EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL;//0
EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;//2.
EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FUL_ENABLE;//3.
EPwm1Regs.DBRED = 42;
EPwm1Regs.DBFED = 42;
EPwm1Regs.TBCTL.bit.FREE_SOFT = 0;
此致、
Dominik
Dominik、
导致 CLA 任务触发的是什么?
您期望的事件顺序是什么? 更新 CMPA->启动 CLA 任务->更新占空比??
此致、
Cody
您好 Cody、
CLA 由 ADC 中断触发、该中断由 EPwm1的零或周期事件触发。
ADC int 有效为空。 CLA 将 ADC 结果转换为其实际值并计算下一个比较值。
比较值随后在 CLA 中断中写入 EPwm1.CMPA.half-CMPA。
我的解释是、CompareValue 将用于下一个零或周期事件。
例如:我说我们使用30kHz。 33µs、每1 μ s 调用一次 ADC。 我们的 CLA 10µs 其计算需要 arround Δ t。 我的23µs 将是、该比较值稍后将被使用。
此致、
Dominik
Dominik、
我不希望出现延迟。 如果一个值被写入 CMPA、那么下一个 CTR = 0或 CTR = PRD 事件应该会使 CMPA 值生效。
您的 CLA 任务是否有可能被延迟? 也许触发器被重新配置为其他东西、或者 CLA 正在执行另一个任务?
如何判断先前写入的值是否已生效?
我建议在代码中进行一些 GPIO 切换、以查看 CMPA 何时更新、然后查看其生效所需的时间。 不应比下一个 CTR=0或 CTR=PRD 事件花费任何时间。
此致、
Cody
Dominik、
您是否仍有此问题?
此致、
Cody
您好、Cody、
我仍然有问题、但它们比我最初想象的要小。
我通过将 GPIO 上的 CMPA 从0更改为1000进行测量。 但是、我的 GPIO 是一个滤波信号、需要0.1ms 才能达到3、3V。我误判了它、因为我的逻辑分析仪将较低的电压解释为高信号。
现在、我的触发信号更快、我在没有新比较值的情况下测量0-1个周期。 如果下一个事件在 CMPA =周期时有效、而在 CMPA =零时无效(请参阅图)。
此外、如果我将 CMPA 从1000更改为0、它每次都能正常工作。
此致、
Dominik
Dominik、
我对您的描述不是100%肯定、但听起来您遇到了此问题。
F28069具有更现代的1类 PWM。 https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/646249
此致、
Cody
您好 Cody、
我不确定我是否有与 Ricky 完全相同的问题。 但是、我可以从对话中吸取的内容以及最终对我有用的内容都在发生变化
EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION;
EPwm1Regs.AQCTLA.bit.PRD = AQ_NO_ACTION;
更改为
EPwm1Regs.AQCTLA.bit.ZRO = AQ_SET;//当 CMPA 从0变为 x 以立即工作时需要
EPwm1Regs.AQCTLA.bit.PRD = AQ_CLEAR;//当 CMPA 从 TBPRD 更改为 x 以立即工作时需要
请注意、我的 PWM 逻辑反转至 Rickys。
在传输阴影寄存器之前是否处理了 ZRO 或 PRD 事件? 这会阻止 CAU 和 CAD 事件清除或设置输出吗?
此致、
Dominik
您好 Cody、
我的问题通过我在上一条消息中所述的更改来解决。
不幸的是、我不希望我的更改能够处理您最后一条消息的信息、因为...
(笑声) TBPHS 在初始化后不会被改变。 TBCTR 不会手动更改。
(笑声) 立即模式禁用
(笑声) Cau 的优先级高于 ZRO、CAD 的优先级高于 PRD
我会将最后一条消息标记为"这解决了我的问题"、因为我无法再进行测试、因为其他问题的优先级更高。
感谢您的帮助和问候、
Dominik
Dominik、
明白。 如果您需要其他支持、请随时启动"相关主题"。
此致、
Cody