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.

[参考译文] TMS320F28379D:PWM 问题

Guru**** 2589265 points
Other Parts Discussed in Thread: SYSCONFIG, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1218553/tms320f28379d-pwm-issue

器件型号:TMS320F28379D
Thread 中讨论的其他器件:SysConfigC2000WARE

您好、E2E 专家!

你好。

我使用的是 Delfino F28379D controlCARD 和底座板。

我正在尝试使用以下配置来配置 ePWM:

- PWM1到 PWM5 @ 5.4 kHz, 0相位
- PWM6通 PWM10 @ 5.4 kHz , 180相
- PWM11A @ 2.7 kHz, 0相位
- PWM11B @ 2.7 kHz, 180相位
- PWM12A @ 2.7 kHz - 90相位
- PWM12B @ 2.7 kHz-270相位

对于0相、我使用:
EPWM_setActionQualifierAction (base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_ 高电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA );
EPWM_setActionQualifierAction (base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_ 低电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA );
EPWM_setActionQualifierAction (BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_ 高电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB );
EPWM_setActionQualifierAction (BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_ 低电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB );

...对于180相位,我反转比较匹配的输出:

EPWM_setActionQualifierAction (base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_ 低电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA );
EPWM_setActionQualifierAction (base、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_ 高电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA );
EPWM_setActionQualifierAction (BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_ 低电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB );
EPWM_setActionQualifierAction (BASE、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_ 高电平 , EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPB );

同样的反相用于从90相获取270相。
使用此配置时、我看到 PWM11上的频率为2.7kHz、我看到 PWM11B 按预期从 PWM11A 反相。
但在 PWM12A 上、我看到90相位置的上升沿、但信号在这之后保持高电平、PWM12B 保持低电平且没有转换。
如果我重新排序通道、并使用相同的0+180和90+270将2.7kHz 输出置于 PWM1和 PWM2上、将5.4kHz 输出置于 PWM3到 PWM12上、我可以看到 我预期的输出。
对通道重新排序是解决此问题的一种方法、但我想了解原始通道配置导致此问题的原因。

此致、

CSC

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

    您好、CSC、

    您是否已同步 PWM 模块?

    -如果是这样,你如何同步他们?  

    您是否验证了 PWM12的 CMPA/TBPRD 值? 您确定 PWM12是上-下计数模式吗?

    此致!

    Ryan Ma

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

    您好、Ryan、

    你好。

    我还没有明确尝试同步 PWM、并不完全确定如何同步、但是、当使用逻辑分析仪捕获 PWM 输出时、默认情况下所有这些都显示为同步。

    PWM 通道的初始配置为:
    5.4kHz PWM1 - PWM5、0相位(总共10个通道)
    PWM6 - PWM10频率为5.4kHz、180相位(总共10个通道)
    2.7kHz 下的 PWM11A、0相、2.7kHz 下的 PWM11B 180相(通过反转输出配置、如原始布置所示)
    2.7kHz 的 PWM12A、90相、2.7kHz 的 PWM12B 和270相位(同样通过反转输出配置)

    这种配置不起作用、尝试将 PWM11和 PWM12的相位设置为0以外的任何值会导致输出不一致(通道将在预期的相位时序上变为高电平、但保持在那里、B 通道将始终保持低电平)。

    按如下所示重新排序确实可以正常工作、没有其他更改。

    我还注意到、相位有点偏离、在进行重要实验之后、我发现相位设置需要以度数为单位、而不是以数值为单位。 这忽略了所有 TI 文档都提到逐步引入计数。 driverlib 函数中用于设置相位的 phase 参数偶数会将它命名为 phaseCounts、而不是 phaseDegrees。

    ....尽管事实是,我找到了一个变通的问题通过重新排序的通道配置,我仍然想知道为什么原始配置不工作,但重新排序的一个.

    ...由于你现在已经指出,显式同步可能是必需的,我想知道如何正确地做这件事。

    此致、

    CSC

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

    尊敬的 TI-CSC:

    默认情况下不启用模块间同步。 当 TBCLKSYNC 设置为1时、所有 PWM 模块上的时基计数器 将同步并在 TBCLK 的上升沿启动。

    您是否使用我们的 SysConfig 工具来帮助您开发代码?  

    下面的视频详细介绍了如何计算所需的相位: https://www.ti.com/video/series/C2000-enhanced-pulse-width-modulator.html?keyMatch=VIDEOS%20PWM

    为了在 PWM 模块之间进行同步、请参阅我们的 C2000Ware 示例  

    C:\ti\c2000\C2000Ware_4_03_00_00\driverlib\f2837xd\examples\cpu\epwm\ epwm_ex3_synchronization.c  

    此致、

    Ryan Ma