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.

[参考译文] TMS320F280049:HRPWM 的同步脉冲机制

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1517613/tms320f280049-sync-pulse-mechanism-for-hrpwm

器件型号:TMS320F280049
Thread 中讨论的其他器件:C2000WARESysConfig

工具/软件:

大家好:

我配置了4个 HRPWM 模块以实现高分辨率频率和相移控制。

我选择了 EPWM1作为主器件、其余的是从器件。

通常、我设法获得了所需的频率和相移、但我对同步机制有疑问。

我将每80uS 控制周期计算一次周期和相移值。

然后、我要在 PWM1时基计数器= 0时更新每个从器件 PWM 的相移值。

到目前为止、我可以做到这一点。 但我想在触发同步脉冲后禁用同步机制、以便使用 HRPWM 导致的抖动问题产生的影响较小。

在这里问题开始。 下面是我的尝试:

1 - PWM 中断方法

  • 我配置了 PWM1中断、在 PWM1时基 CTR = 0时触发。   
  • 在 PWM_update 函数结束时、我会调用这条线路来激活同步机制 EPWM_setSyncOutPulseMode (myEPWM1_BASE、EPWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);
  • 然后、通过 HRPWM_enableInterrupt (myEPWM1_BASE)启用 PWM1 INT;
  • 在 PWM ISR 中、我禁用同步机制、还会在下一个 PWM_update 函数中再次启用 PWM 中断
    •  HRPWM_setSyncOutPulseMode (myEPWM1_BASE、EPWM_SYNC_OUT_PULSE_DISABLE);
    •  EPwm1Regs.ETSEL.bit.intn=0; //禁用 ePWM1中断
  • 这种方法通常可以正常工作、但会随机产生以下问题:
    • 有时同步脉冲不会被触发、尽管我可以看到 SW 进入 PWM1 INT (根据逻辑 PWM INT 应该在同步脉冲触发后输入、至少我希望是这样)
    • 有时 EPWM1中断会影响 ADC INT。 ADC INT 由虚拟 PWM 触发、该 PWM 不是 HR 模式、完全独立于4个 HRPWM 模块
  • 我想这些问题是由于中断处理和缺少嵌套逻辑而产生的、但我不确定它们是否要使用相同的事件(PWM1 TBCTR = 0)来触发同步脉冲和触发 PWM 中断

2-我的第二个热处理方法是使用同步脉冲作为 PWM 中断的触发器(我想作为数字比较子模块的 TZ 事件中断)。 使用这种方法时、我会确保将进入同步脉冲、从而进入 PWM 中断 ISR。 那么我将安全地禁用同步脉冲机制。

  • 到目前为止、我无法设法使用此方法启用 PWM ISR

3:我的第三种方法是使用已配置的 ADC 中断

  • 在这种方法中 、在 PWM_update 函数的 ePWM_setSyncOutPulseMode (myEPWM1_base、ePWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO)之后、我创建一个标志变量1。
  • 然后 ın ADC 中断(ADC INT fperiod 为5us)我将计数器递增至一个对应于10us 的阈值。 这个阈值时间足以满足我的 PWM 可具有的所有频率范围。
    • 我的意思是、在最小频率下、我可以保证在禁用同步机制之前至少会触发一个同步脉冲。  
  • 不过、您可以很容易地理解、在禁用同步机制之前、HRPWM 的开关频率何时增加了多个同步脉冲被触发。  
    • 这增加了抖动问题对 PWM 的影响。 我可以在示波器屏幕上看到 PWM 信号不完全稳定。

总之、当主器件 HRPWM TBCTR = 0时、我正在寻找一种为从器件 HRPWM 触发同步脉冲的方法、因为这会使所有转换更加平滑。  

我可以尝试其他任何建议。

此致、

Gökhan μ s

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

    实际上、一种机制会在 CTR = 0时发送单次同步脉冲、然后自行禁用、这种机制会非常有用。

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

    尊敬的 Gokhan:

    您是否查看过 C2000WARE SDK 中的 ePWM ex 14? 这会执行一次性加载、使用 PWM=ZRO 事件来同步其他 CTR。 然后、它仅在设置全局一次性锁存器后加载。

    此致、

    Ryan Ma

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

    您好、Ryan、

    我运行 Ex、但它在每个周期发送同步脉冲、正如我可以在示波器屏幕上看到的那样。
    此外、在 代码中、我无法看到使用 CTR = 0时的一次性加载。 在 SysConfig 中、"Sync Out pulse"设置为" 当时基计数器等于零时生成同步脉冲"。 这意味着每个周期都会触发 SYNC 脉冲。 在 main 中、我没有看到禁用该功能的代码。

    在本例中、我正在寻找一种解决方案、该解决方案在 CTR = 0时发送同步脉冲并立即禁用同步机制、以便在下一个控制周期前不会发送同步脉冲。

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

    尊敬的 Gokhan:

    明白了、我想您需要这个功能。 这是用于 SYNCOUT 信号的一次性锁存功能。 不幸的是,我们没有一个确切的例子,但应该没有太多的配置涉及. 只需配置 OSHTSYNCMODE 并写入 OSHTSYNC 位。

    此致、

    Ryan Ma

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

    您好、Ryan、

    再次感谢您。

    我有一个问题。  

    İ 猜一次性加载和一次性同步加载是不同的。 因此、针对单次加载的注释(即启用高分辨率、无单次加载时的注释)对单次同步无效

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

    再次大家好、Ryan、

    我已经 在启用 HRPWM 的情况下尝试了这种单次触发同步机制。 到目前为止效果很好。

    谢谢你。

    那么、我前面一个问题的答案是"可与 HRPWM 进行单次同步"。

    我对此有一个疑问:

    考虑到使用 HRPWM、如果我要在 CTR = 0时发送同步脉冲、哪一个更适合生成同步输出脉冲?

    1. ePWM_setSyncOutPulseMode (myEPWM1_BASE、ePWM_SYNC_OUT_PULSE_ON_COUNTER_ZERO);
    2. EPWM_setSyncOutPulseMode (myEPWM1_BASE、EPWM_SYNC_OUT_PULSE_ON_COUNTER_COMPARE_C);CMPC 值为0。

    我之所以提出这个问题、是因为 TRM 中的注释

    我知道在一次性同步模式下、除了需要发送同步脉冲的那一刻外、我可以防止抖动。 但这个注释让我想知道吗?

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

    尊敬的 Gokhan:

    我前面一个问题的答案是"可通过 HRPWM 使用一次性同步"。
    [/报价]

    正确的是、您将会遇到+/- 1-2周期抖动、如同步发生时的注意事项中所述。

    [引述 userid="601478" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1517613/tms320f280049-sync-pulse-mechanism-for-hrpwm/5837342 #5837342"]

    考虑到使用 HRPWM、如果我要在 CTR = 0时发送同步脉冲、哪一个更适合生成同步输出脉冲?

    [/报价]

    其中任何一种配置都可以正常工作。 我建议使用在 ZRO 上发送 SyncOut 的功能并使用一次性同步加载。

    此致、

    Ryan Ma