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.

[参考译文] AM2431:EPWM 同步

Guru**** 2513185 points
Other Parts Discussed in Thread: SYSCONFIG, AM2431

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1367235/am2431-epwm-synchronize

器件型号:AM2431
主题中讨论的其他器件:SysConfig

工具与软件:

您好!所有 TI 专家!

我要同步 EPWM0、1和2。 我已在每个 ePWM 的初始化函数中包含以下代码。

EPWM_tbSyncEnable(epwmBaseAddr, 0, EPWM_TB_CNT_DIR_AFT_SYNC_UP);
EPWM_tbSetSyncOutMode(epwmBaseAddr, EPWM_TB_SYNC_OUT_EVT_SYNCIN);
EPWM_tbSetEmulationMode(epwmBaseAddr, EPWM_TB_EMU_MODE_FREE_RUN);

在 EPWM2的中断回调中、我声明了一个变量 gEpwmIsrCnt。 每次触发一个中断时、gEpwmIsrCnt 增1。 初始化后、只有当 gEpwmIsrCnt 大于10时才会发送同步信号。 具体执行如下:

EPWM2_init(EPWM2_BaseAddr, APP_EPWM2_OUTPUT_CH, EPWM2_FCLK);
EPWM1_init(EPWM1_BaseAddr, APP_EPWM1_OUTPUT_CH, EPWM1_FCLK);
EPWM0_init(EPWM0_BaseAddr, APP_EPWM0_OUTPUT_CH, EPWM0_FCLK);

gEpwmIsrCnt = 0;
while (gEpwmIsrCnt < 10)
    ;

//Send software sync signal to EPWM
EPWM_tbTriggerSwSync(EPWM2_BaseAddr);
EPWM_tbTriggerSwSync(EPWM1_BaseAddr);
EPWM_tbTriggerSwSync(EPWM0_BaseAddr);

此方法是否会正确触发 EPWM 同步? 目前、我以这种方式操作、但我发现 ePWM 输出信号看起来未同步。 因此,我想问,我有没有可能做错的事。

顺便说一下、我要同步的 ePWM 为0、1、2、3和5。 我知道需要将 EPWM2配置为触发 EPWM3、但我不使用 EPWM4。 是否仍需要初始化 EPWM4以允许 EPWM3的同步信号与 EPWM5同步?

此致!

拉里

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

    Larry、您好、请允许我一两天内回来与您联系

    谢谢!

    保拉

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

    您好、Paula、

    谢谢您的重播,希望能尽快得到您的反馈。

    此致!

    拉里

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

    您好、Larry、您的代码对我来说似乎没问题。

    那么、如果您使用示波器、您会看到 ePWM 输出不同步? 您能否使用同步输入、同步输出和 EPMW0、1、2输出共享示波器屏幕截图? 不确定下面黄色部分中突出显示的内容是否适用于您、但不管怎样、仅在案例中突出显示=)

    ePWM 之间存在一些 SYNCI/SYNCO 相关性、因为 ePWM 模块以菊花链形式连接。 此处提供了一些详细信息(来自 TRM):

    12.4.3.3.1.2 ePWM 模块之间的菊花链连接

    ePWM 模块提供同步信号、以允许它们与其他模块或事件同步。 在该器件中、这些信号针对 EPWM0-EPWM8以菊花链方式进行连接、如图12-2230所示。 对于 EPWM3、EPWM4、EPWM5以及 EPWM6、EPWM7、EPWM8、ePWM 模块可以与单独的外部事件同步(通过 SoC 同步多路复用器3和 SoC 同步多路复用器6路复用)。 请注意、EPWM0_SYNCIN、EPWM3_SYNCIN 和 EPWM6_SYNCIN 引脚以及提供 EPWMSYNCI 输入的 ICSSG 中断需要同步。 另请注意、一个 ePWM 模块的 EPWMSYNCOUT 与下一个 ePWM 模块的 EPWMSYNCI 之间不能有额外延迟(同步或流水线)、因为这会在 ePWM 外设的计数器之间引起轻微的相移。 从时间同步和比较事件路由器的连接旨在复位 ePWM 时基计数器、以便将 PWM 输出周期同步到外部同步脉冲(例如、从时间同步网络)的(几倍)。

    AM64x/AM243x 技术参考手册(修订版 H)(TI.com)

    我还建议使用 SysConfig 并在其中添加您的所有 ePWM 模块、因为这可以帮助您在使用 SYNCI/SYNCO 信号时避免引脚多路复用冲突。

    谢谢!

    保拉

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

    您好、Paula、

    我在这里有点困惑。 我认为 EPWM 同步是内部的、但根据您的 syscfg 屏幕截图、似乎需要 IO 来获取同步信号。

    例如、在此屏幕截图中、EPWM0需要在 R21处接收来自 GPIO 的触发信号才能启动、然后从 R20处的 GPIO 向 EPWM1发送下一个同步信号。 是这样吗?

    此致!

    拉里

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

    您好、Paula、

    此外、我还有一个问题。 我要使 EPWM3与 EPWM5同步。 是否需要初始化 EPWM4? 我曾尝试对此进行测试、但在 syscfg 中找不到 EPWM4。 AM2431不支持 EPWM4吗?

    此致!

    拉里

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

    Larry、您好!

    有关您的第一个问题、请参阅 TRM 图12-2230。 菊花链连接在 ePWM 模块之间、您会看到每个 ePWMx 有哪些 SYNCI 选项。 下面的链接和示例快照

     

    AM64x/AM243x 技术参考手册(修订版 H)(TI.com)

     

     

    对于第二个问题、ALX 和 ALV 在可用引脚方面存在差异。 因此、如果是 EPWM4、这些引脚采用 ALV 封装、但不采用 ALX 封装。

    下面的链接和快照示例

     

    AM243x Sitara 微控制器数据表(修订版 G)(TI.com)

    谢谢!

    保拉

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

    您好、Paula、

    感谢您的解释、我找到了问题的根本原因、我可以使 EPWM0/1/2同步、EPWM3和 EPWM5可以在没有 EPWM4的情况下同步。

    此致!

    拉里

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

    太棒了! 谢谢、让我们知道

    保拉