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.
你好。
如果 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:
感谢您提供的信息。 您还有一些问题:
一些初步建议:
如果我有误解、请告诉我-如果您有可以分享的内容、则图示或快速描述您正在构想/尝试的内容、也不会造成伤害
此致、
艾里森
您好 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 负载会增加。
就我而言、具有两个比较寄存器的解决方案运行良好。
感谢您的帮助和建议。此致
克里斯蒂安