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:配置 ePWM 以在 SYNCIN 上加载 CMPA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1438619/tms320f28379d-configure-epwms-to-load-cmpa-on-syncin

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

工具与软件:

我无法配置 EPWM 以在发生 SYNCIN 事件时加载 CMPA。

下面是我的设置:

我将使用 ePWM 模块1至11。 我需要为 ePWM 9至11加载影子化 CMPA 和 CMPB 值 分量  带宽限制。 现在、我正在尝试执行以下操作

- ePWM 1 配置为在 TBCTR=0时生成 SYNCOUT 脉冲
- EPWM 2到11配置为使用 SYNCOUT = SYNCIN
- ePWM 1到8配置为高电平有效(非互补)
- ePWM 9到11被配置为高电平有效互补
- EPWM 9到11配置为在 SYNCIN 上加载 CMPA 和 CMPB


最后这部分是一个似乎不适合我的部分。  

我附上了一个可以演示该问题的工作测试项目。

相关代码如所示 第561-577行

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
EPwm9Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm9Regs.CMPCTL.bit.LOADASYNC = 2;
EPwm9Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm9Regs.CMPCTL.bit.LOADBSYNC = 2;
EPwm10Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm10Regs.CMPCTL.bit.LOADASYNC = 2;
EPwm10Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm10Regs.CMPCTL.bit.LOADBSYNC = 2;
EPwm11Regs.CMPCTL.bit.LOADAMODE = 0;
EPwm11Regs.CMPCTL.bit.LOADASYNC = 2;
EPwm11Regs.CMPCTL.bit.LOADBMODE = 0;
EPwm11Regs.CMPCTL.bit.LOADBSYNC = 2;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX



当我运行此程序并测试 PWM 占空比是否正确更新时、我可以看到从未实际加载占空比、尽管我可以确认 ePWM 同步信号存在。

下图显示了 PWM 信号、GPIO 引脚上的同步信号输出以及我用于触发测量的标志。 触发点之前和之后的占空比应不同、但绝不改变。



---

为了进行比较、下面是我设置时的行为 EPwmxRegs.CMPCTL.bit.LOADASYNC = 0  低频 PWM。 您可以看到、占空比在 CTR = 0点时得到应有的更新。



我似乎缺少一些使 EPWM 在 SYNC 上加载的设置、但我无法确定 此处的哪些内容不正确。 根据技术参考手册的第15.5节、我将正确设置所有 CMPCTL 寄存器。

期待收到您的回复。 我已经将一个工作项目附加为.zip 文件 (请确保在"Project Properties">"Linked Resources"中正确设置 C2000WARE_ROOT 的值、以确保库依赖项正确链接) (2024年11月22日编辑:在注释中更新了项目)

此致、
Rahul

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

    尊敬的 Rahul:

    您能否仔细检查一下您为这些 PWM 设置的同步输入源是否正确?

    请发送同步选择寄存器的片段以验证同步源是否设置正确-如果设置正确、则加载方案应在您对 SYNC 设置影子加载后正常工作。

    此致、

    Allison

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

    尊敬的 Rahul:

    感谢您提供的信息。 请再给我几天时间看看。

    此致、

    Allison

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

    您好、Allison、

    谢谢。 期待您和/或 C2000团队中的任何其他人的回复。

    此致、
    Rahul

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

    您好  有任何更新吗?

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

    尊敬的 Rahul:

    还没有更新-我明天会跟进。 感谢您的耐心!

    此致、

    Allison

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

    尊敬的

    经过广泛的试错后、我已经确定 使 CMPA 加载到 SYNCI 上的方法是设置

    EPwmxRegs.TBCTL.bit.PHSEN = 1  

    换言之、PHSEN 位不仅仅是在同步时向 TBCTR 加载 TBPHS 值、它还似乎决定了 CMPA 是否在同步时加载。

    技术参考手册中的任何地方都没有提到这一点 . 我想了解这是否符合 PHSEN 在 ePWM 模块内工作的设计理念、或者是否因为某种巧合才在本项目中开展工作。

    我附上了一个新的 zip 文件、可以对该文件进行 A/B 测试以验证这种行为。

    e2e.ti.com/.../3187.test_5F00_epwm_5F00_sync.zip

    这里注释了645至655行、由于所有模块的 PHSEN 均设为1、因此 SYNCI 上的 CMPA 负载行为与预期一样。

    如果取消这些行的注释(对于所有模块、将 PHSEN 设置为0)、则加载将不再起作用。

    此致!
    Rahul

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

    尊敬的 Rahul:

    感谢坚持不懈-很高兴您能够获得所需的输出。

    PHSEN 位将决定同步脉冲是否可以用作 PWM 的同步输入源、因此当它提到"清除 TBCTL[PHSEN]位时、此行为与 TRM 一致将 ePWM 配置为忽略同步输入脉冲。" 同步输入脉冲用于加载选通。

    然而、 对于用于其他寄存器加载(TBPHS 之外)的 SYNC 信号、它可能不会被清除。 我将在以后的本节中对此进行说明

    此致、

    Allison

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

    您好、Allison、

    感谢您的备注、以便在将来澄清这一点。 我解释了您提到的关于 TBCTL 的陈述、认为它仅适用于 TB 子模块、而不适用于 CC。 从解释中可以看出、TBCTL[PHSEN]配置 ePWM 模块内的所有子模块、以忽略 SYNCIN 脉冲。  

    此致!
    Rahul

x 出现错误。请重试或与管理员联系。