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.

[参考译文] TMS320F280025C:需要一种对 ePWM 脉冲进行计数的方法

Guru**** 2430620 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1062512/tms320f280025c-need-a-way-to-count-epwm-pulses

器件型号:TMS320F280025C

您好!

我需要一些有关如何对 ePWM 脉冲进行计数的建议、然后在达到特定数字后将其关闭。

我知道我可以使用跳闸区域子模块来关闭 PWM 信号,我发现 eQEP 和 CLB 模块可以对脉冲进行计数--但是,我没有任何 GPIO 引脚可以自由连接到纵横制。

我也不能使用计时器中断、因为 PWM 信号的频率会发生变化。

我不确定、通过让 CLB 模块生成中断而无需使用 GPIO。

如果有人向我指出正确的方向,我将不胜感激。

此致、

Vishnu

编辑:我应该提到我需要对 ePWM4和 ePWM7的脉冲进行计数--我注意到 ePWM1和 ePWM2有一个到 CLB 的直接连接。 但是、似乎 CLB_OUT_4和 CLB_OUT_5已连接到 ePWM XBAR - 是否有方法让 CLB 在计数特定数量的脉冲后向 ePWM XBAR 发送输出、然后发送到跳闸区域子模块?

编辑2:如果我使用 ePWM 的 TZ 子模块、那么在这之后如何重新启用 ePWMA 和 ePWMB 信号?

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

    使用 ETINT (ePWM 中断)计数模块。 生成所需 PWM 周期数的中断、然后将所有操作设置为低电平。 或者使用跳闸区域模块的一次性(OST)设置并使用 SW FRC 触发 OST。

    如果您使用 OST、一旦您希望重新启用 OST、请清除 OST 标志。

    NIMA

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

    感谢您的建议。

    不过,有一点小问题--是否可以使用 CLB 外设中的一个计数器来实现这一点?

    我实现了你的建议、它运行良好、但我不太喜欢每15个脉冲触发一次中断。 当发生匹配事件时、让 CLB 逻辑块中的 HLC 向 CPU 发出中断将是一种更巧妙的解决方案。 为此,我需要以某种方式将 ePWM4_B 作为计数器的时钟馈送--我在参考手册中没有办法这样做,但我对微控制器是陌生的,所以我可能错过了一些东西。

    如果可能、请告诉我。

    此致、

    Vishnu

    编辑:我考虑将计数器用作加法器、在我将连接到 ePWM 输入的每个事件信号处添加1。 这是一个变频 PWM 应用、因此我更喜欢它与 CLB 时钟异步运行。 问题是、我似乎无法找到保存要添加的预定义值的 EVENT_LOAD_VAL 寄存器-它是否与 HLC 需要写入的 C0寄存器相同?

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

    我认为这是可行的。 将 EPWM 输出作为边界输入传入 CLB、然后使用输入滤波器检测边缘、并将其传递到计数器的事件信号、并在每个事件上"加1"。 在计数器= 15时、覆盖从 CLB 输出的信号、您将使用该信号覆盖 ePWM4_B 输出。  

    NIMA

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

    你好、Nima、

    感谢您的意见。 这接近于我最终执行的操作、即对边沿进行计数、在 MATCH2寄存器中设置一个值、并将 HLC 的匹配事件设置为 Event0。 然后、这会向 CPU 发出中断、从而冻结 ISR 内部的 EPWM 计数器。 它的卷积更高、但它有助于处理大量脉冲的计数、因为 ET 最多只能处理15个重复事件。 比如、2000个脉冲、我不得不调用 ET ISR 134次、但现在我可以在结束时调用一次 花了一整天的时间来编码,但是很值得。 真的很感谢这里的指导! 他们让我想到、否则、我可能会找到一个不太优雅的解决方案。

    Vishnu