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.

[参考译文] TMS320F2800157-Q1:如何实现与基准 PWM 频率和占空比相关的对称 PWM 脉冲跳跃?

Guru**** 2485495 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1438893/tms320f2800157-q1-how-can-symmetric-pwm-pulse-skipping-be-achieved-in-relation-to-a-reference-pwm-frequency-and-duty-cycle

我正在使用两个 PWM 信号:频率为25kHz 的 PWM1、占空比为80%的 PWM2和频率为250kHz、占空比为50%的 PWM2 (可在运行时调整)。

下面是我当前使用的方法:

  1. 在向上计数和向下计数阶段、我在发生 CMPX 事件时从 PWM1生成中断。 在 ISR 内切换中断源、因此第一次在向上计数时触发中断、第二次在向下计数 CMPX 事件时触发中断。
  2. 当 PWM1计数器正在递增计数并且 ISR 被执行时、一个标志被设定为1。 在递减计数 CMPX 中断期间、标志设置为0。
  3. 在向上计数阶段、我在每个 CMPX 事件中从 PWM2 (250kHz)生成一个中断。
  4. 在 PWM2 ISR 中、我读取由 PWM1设置的标志。 如果标志为1、则使用 TZ 模块启用 PWM2 (250kHz)。 如果标志为0、使用 TZ 模块将 PWM2关闭。

观察结果

  • PWM 信号在开始时开启、在结束时关闭、但这并不能保持对称的 PWM 模式。

发行

  • 如何实现对称 PWM 开关、确保 PWM 以对称方式开启和关闭? 请提供实现对称 PWM 的方法建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 TI 专家:对于这个问题有什么想法吗?

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

    大家好、

    TZ 模块主要用于异步事件以关闭或开启 PWM。 如果需要对称方式、则可以根据用例在 ZRO 或 PRD 上尝试使用具有影子加载模式的 AQCSFRC。

    将该影子加载模式设置为 ZRO 或 PRD、并且写入连续软件强制时、它将在发生下一个 ZRO 或 PRD 事件时关闭 PWM。 这样就保持对称波形、PWM 将在下一个 PWM 周期开始时一起关闭。

    这有什么帮助吗?

    此致!

    Ryan Ma  

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

    尊敬的 Ryan Ma:

    我已经尝试在 ZRO 上使用具有影子加载模式的 AQCSFRC。 不过、您仍然可以看到最后一个脉冲是不对称的。

    下面是我的 PWM2 250kHz ISR 的 sudo 代码(该 ISR 将在每个 TBCTR == CMPA 时触发)

    空 ISR_PWM1 (空)

    if (PulseSkip => on)

    /*软件强制已禁用且无效
    * AQCSFRC。 CSFA = 11和 AQCSFRC。 CSFB = 11 */

    HWREGH (PWM2_BASE + EPWM_O_AQCSFRC)=((HWREGH (PWM2_BASE + EPWM_O_AQCSFRC)&~0xFU)|(0xFU));

    }

    设计

    /*在输出 A 和 B 上强制 A 为持续低电平
    * AQCSFRC。 CSFA = 01和 AQCSFRC。 CSFB = 01 */

    HWREGH (PWM2_BASE + EPWM_O_AQCSFRC)=((HWREGH (PWM2_BASE + EPWM_O_AQCSFRC)&~0xFU)|(0x5U));

    }

    }


      


    观察结果: 在 TBCTR =CMPA 之前、PWM2_B 输出应该打开、但是在发生 AQCSFRC 事件时、其将在 TBCTR == ZRO 上影子到活动状态下关闭。  

    查询:

    1、 通过 AQCSFRC 寄存器关闭 PWM 输出无法实现对称波形

    2. ePWM_setActionQualifierShadowLoadMode 与 ePWM_setActionQualifierContSWForceShadowMode 之间的区别是什么 ?

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

    大家好、

    您能否共享 AQSFRC。 RLDCSF 寄存器设置? 是否设置为0x00?

    CMPAU 和 CMPAD 上只有 AQ 设置吗? 我预计 CMPAD 事件将完成、然后 ZRO 事件将导致加载关闭 PWM。

    此致!

    Ryan Ma

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

    尊敬的 Ryan Ma:

    问题已解决。 在 ISR 内、我要执行两个操作:第一个触发时、我在发生零加载事件时关闭 epwmA、第二个触发时、我在发生 PRD 加载事件时关闭 epwmB。

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

    大家好、  

    很高兴听到,只是为了确认你最终是否使用了 AQCSFRC?

    此致!

    Ryan Ma

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

    尊敬的 Ryan Ma:

    是的、我使用过 AQCSFRC 对 AQSFRC 采取行动 AQCSFRC 为 RLDCSF =零点。 CSFA AQSFRC。  AQCSFRC.CSFB 的 RLDCSF = PRD。

    感谢您  对 AQCSFRC 寄存器的解释。

    谢谢!

    见 P. Parikh   

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

    大家好、

    非常欢迎您! 我将继续并将它标记为已关闭。

    此致!

    Ryan Ma