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.

[参考译文] TMS320F28P650DK:启用和禁用 PWM 输出、与 PWM 计数器同步

Guru**** 2943400 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1655328/tms320f28p650dk-pwm-output-enable-and-disable-synchronous-with-pwm-counter

器件型号: TMS320F28P650DK

我希望在我的应用中同步启用和禁用 PWM 输出。 例如、启用时、输出 A 和 B 最初处于低电平状态、当 TBCTR 等于零或 PRD(我想也可以这样做)时、应转换到初始周期位置、并从那里正常继续。 如需禁用、我希望 PWM 输出完成该周期、并在 PRD 或 0 处停止(此处也更倾向于可以同时完成这两项操作)。 我在互补配置中对两个 PWM 输出使用向上/向下计数 PWM 并仅对 CMPA(我使用 minDB 来生成死区时间、因为 DB 模块 dt 生成不支持在两个输出上产生 SW 强制低电平。)。

当前禁用的做法是使用 EPWM_setActionQualifierContSWForceAction 函数和 EPWM_setActionQualifierContSWForceShadowMode 在零或 PRD 处加载 SWforceAction 配置。 我在 PRD 和 0 添加了额外的事件、以便在周期开始时加载正确的初始 PWM 状态。

但是、启用时、ZERO 或 PRD 时的额外 AQ 事件会与禁用软件强制的同时发生、因此会将其忽略。 因此、第一个周期具有不正确的 Δ I、会导致我的应用中出现电流尖峰。

我可以想到以下解决方案:

  1. 使用 EPWM_setActionQualifierContSWForceAction 禁用、使用软件强制锁存 CBC 跳变、该跳变在 PRD 或零处清除。 缺点:1.  两种不同的启用和禁用方法并不那么纯净 2. CBC 跳闸应在调用 EPWM_setActionQualifierContSWForceAction 的周期结束之后开始。 这使得 它更加复杂。
  2. 将 CMPB 事件置于 TBCTR 1 或 PRD-1 以校正周期初始状态:缺点:命令占空比为 0/1 时、此 CMPB 事件应为零、否则如果低电平操作 AQ 为零、或者相反、我们可能仍会将高输出状态置于高电平。 这也是一个问题。
  3. 将 CMPB 用于 PWMB、这样我就无法在 CMPB=0 且 CMPA = 0 时将 A 和 B 同时变为低电平。 使用着色加载时、占空比会同步应用。 缺点:我希望还能在 PRD 处禁用和启用、在 shadowload 瞬间切换并不适合我的同步 CLA 任务(计算开始是在 TBCTR 零处触发的、因此 PRD 可能来得太早。
  4. 一些在 PRD 或 0 处使用 SWforce Immediate 或类似内容的软件触发操作:缺点:我不想混淆太多的时序关键型软件中断、因为这会降低软件的可维护性。
  5. 对于一个周期内的两个开关、使用具有高电平和低电平事件的 XCMP。 缺点:此任务可能过于复杂?

我是否错过了任何东西或这种在 C2000 中不容易实现的“基本“要求?

在任何情况下、如果有一种方法对动作限定符使用>=和<=、而不是仅使用==、这样我们就可以确保 ePWM 输出状态相对于 TBCTR 始终正确。 是否有计划在未来的产品中添加类似这样的内容? 否则、TBCTR 同步跳闸和脱跳功能到跳闸区的单触发跳闸也会很有帮助。

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    但是、启用时、ZERO 或 PRD 处的额外 AQ 事件会在禁用软件强制的同时发生、导致将其忽略。 因此、第一个周期的 Δ I 不正确、从而导致我的应用中出现电流尖峰。

    这是正常现象、因为软件强制事件的优先级高于零或 PRD 的 CMP 事件。

    如前所述、CMPA 用作输出 A 和 B 的比较事件、您不能使用 CMPA 来设置 PWM 的初始输出。 在基于 PRD 软件的加载的情况下、可以将 CMPA 设置为 PRD+1、在基于零事件的软件加载的情况下、可以将 CMPA 设置为 1、这将涵盖 ZERO 和 PRD 的初始 PWM 状态设置。

    由于启用和禁用软件动作强制限定符是由软件控制和确定性的,因此您可以在软件强制事件前后加载带有影子加载的 CMPA。 如果无法做到这一点、请根据需要详细说明波形。

    谢谢。