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:如果 TBCTR=CMPA、使用 DMA 持续将数据传输到 CMPA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1356985/tms320f28379d-continously-transfer-data-to-cmpa-with-dma-if-tbctr-cmpa

器件型号:TMS320F28379D

你好。

如果 TBCTR=CMPA、我希望通过使用 DMA 传输下一个 CMPA 值来在一个 ePWM 周期内生成更多脉冲。

因此、我配置了一个可触发 DMA 通道的 SOCA 事件。 该通道会将下一个动作限定符和 CMPA 值传输到右侧寄存器。 可以进行传输、我可以在调试器中看到寄存器已正确写入。 但我不会 getting ePWM 输出上的任何脉冲。 如果我用调试器禁用 DMA 传输、最后的值会保留在寄存器中、并且脉冲会出来。

这通常是可行的吗? 如果是、有什么我可能遗漏的想法吗?

谢谢!
Br
克里斯蒂安

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

    尊敬的 Christian:

    您需要回答的一些问题:

    您要在单个 PWM 周期中实现多少个脉冲? 好奇它的用例是什么。

    [报价 userid="106576" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1356985/tms320f28379d-continously-transfer-data-to-cmpa-with-dma-if-tbctr-cmpa "]、但我不能 getting 任何 pusle on ePWM 输出。 [/报价]

    您是否这样说 ePWM 输出在整个过程中都为低电平(从不是脉冲为高电平)? 或者、您是说每个周期 ePWM 脉冲是否通常仅基于一个静态 CMPA 值、但不会使用新的 CMPA 值进行相应更新?

    CMPA 值的加载方案是什么? 您是否正在使用影子加载? 以及您还有哪些其他 ePWM 配置(例如计数模式、周期、动作限定符等)

    此致、

    艾里森

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

    您好、Allison。

    您打算在单个 PWM 周期内实现多少个脉冲? 好奇这种情况是什么。[/引号]

    ~20个脉冲。 这个用例是用于发电厂发电机抽取的晶闸管点火开关。

    您是说 ePWM 输出始终为低电平(从不产生高脉冲)? 或者您的意思是每个周期仅基于一个静态 CMPA 值而不使用新的 CMPA 值进行相应更新的 EPWM 脉冲吗?

    是的、它始终处于低电平状态。 但我可以看到 CMPA 寄存器的更新。

    CMPA 值的加载方案是什么? 您是否正在使用影子加载? 以及您还有哪些其他 ePWM 配置(例如计数模式、周期、动作限定符等)

    已禁用隐藏。 计数模式递增。 20ms 周期。 动作限定器寄存器也会从 DMA 更新。 (设置或清除)、DB 被禁用。 禁用 TZ。

    Br
    克里斯蒂安

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

    尊敬的 Christian:

    感谢您提供的信息。 您还有一些问题:

    • 您希望以什么频率 PWM 运行? 50kHz 对吧?
    • 您是否在寻找可变 脉宽或占空比? 或者您是否希望生成具有相同脉宽的20个脉冲?
      • 如果脉宽相同、您是否考虑使用 PWM 斩波器模块?

    一些初步建议:

    • 肯定的递增模式(向上向下计数会使问题更加复杂)
    • 是的、应该为 CMPA 禁用影子加载-使用立即模式
    • 您可以使用"切换"动作限定器、因此 PWM 通道输出在 CMPA 上切换为高电平或低电平、而不是每次更新动作限定器寄存器:
      • 您还可以尝试同时使用 CMPA 和 CMPB、并对两者进行更新、但此处可能不需要这一点、具体取决于您尝试更新的值。
    • DMA 仍需要时间来加载新值、因此请小心地将 CMPA 更改为接近它的值(例如、CMPA = 4更新为 CMPA = 5)

    如果我有误解、请告诉我-如果您有可以分享的内容、则图示或快速描述您正在构想/尝试的内容、也不会造成伤害

    此致、

    艾里森

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

    您好 Allison。

    您希望以什么频率运行 PWM? 50kHz 对吗?

    不、是50Hz (或60Hz)。

    您是否正在寻找可变 脉冲宽度或占空比? 或者您是否希望生成具有相同脉冲宽度的20个脉冲?

    是的、但仅适用于周期的1/6。 我认为 PWM 斩波器是不合适的。

    DMA 似乎太快。 现在、我已对 CMPA 进行编程、以在引脚上执行开关操作、并已对 CMPC 进行编程、以在 CMPA 之后触发 DMA 5个周期。 这是有效的(但更多的编译)。
    对于 DMA 速度过快并在 AQ 引擎可以对引脚执行操作之前写入下一个比较值的理论、您有何看法?

    此致
    克里斯蒂安

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

    尊敬的 Christian:

    啊是的,我这边的拼写错误--> 50 Hz  

    斩波器具有固定宽度和固定频率的脉宽、因此我认为您在这里也不能使用它。

    如果我理解正确、您认为您需要延迟 DMA 触发(以加载下一个 CMPx 值)? 这是因为计数器= CMPx 匹配应导致 PWM 输出切换、并且 DMA 更新下一个 CMPx 值、但 DMA 传输发生得太快?

    我知道您最初说您将基于 ePWM SOCA 信号触发 DMA -您能够有一个软件触发 DMA 而不是使用 ePWM SOCA 作为 DMA 触发源(在硬件中)的中断吗? 切换输出操作发生后需要中断。  

    此致、

    艾里森

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

    您好 Allison

    如果我理解正确,您是说需要延迟 DMA 触发器(以加载下一个 CMPx 值)? 这是因为计数器= CMPx 匹配应导致 PWM 输出切换、且 DMA 更新下一个 CMPx 值、但 DMA 传输发生得太快?

    是的、这是我的神迹。 如果我使用 CMPA 来切换输出、并使用 CMPC 触发 DMA、这会起作用。

    我知道您最初说您是基于 ePWM SOCA 信号触发 DMA -是否能够提供软件触发 DMA 而不是使用 ePWM SOCA 作为 DMA 触发源(在硬件中)的中断? 切换输出操作发生后需要中断。  [/报价]

    我也尝试过这种方法、不是为了触发 DMA、而是从 ISR 写入 CMPA 和 AQ 寄存器。 它在工作。 但随着中断、CPU 负载会增加。

    就我而言、具有两个比较寄存器的解决方案运行良好。
    感谢您的帮助和建议。

    此致
    克里斯蒂安

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