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:通过 HW 清除 PWM TZ 事件

Guru**** 2482105 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1451534/tms320f28379d-clearing-pwm-tz-event-through-hw

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

工具与软件:

您好!

我需要实现一种机制来清除 TZ 事件-但不使用软件。

时序至关重要、因此我不能依赖跳转到 ISR 来进行管理。

该机制需要根据比较寄存器之一(理想情况下是 CMPC 或 CMPD、但我可以通过 CMPA 或 B 进行管理)的 CTR 来清除 TZ 事件。

CBC 可通过 HW 清零 TZ、但仅适用于 CTR = PRD 或 ZRO。

OneShot 需要使用 SW 来清除 TZCLR.bit.OST。

我更倾向于使用单触发、并通过 CLB 将其清除(可以检查 CTR =我们需要的任何值)。

使用 CLB 做到这一点吗? 它是否可以访问 TZCLR.bit.OST?

是否有其他硬件机制可以满足该要求?

我还需要同时将 PWM1释放到9、因此 CLB 似乎是唯一的选项...

谢谢!

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

    您好!

    您无法使用 CLB 写入 TZCLR.BIT.OST。 但是、您可以将硬件信号连接到输入 X-BAR -> CLBXBAR -> CLB -> EPWMXBAR -> DCAVET1、这将使输出跳闸。  

    CLB 将使用一个 FSM、该 FSM 将由硬件信号设置并由 CMPC/D 事件清除。

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

    谢谢 Steve、

    我的问题不是触发信号、而是在某个点清除 TZ。

    在任何情况下、我都不需要 CLB 来实现您想要的功能-我可以通过 INPUUTxbar 将我的信号直接连接到 DCAVET1。

    " CLB 将使用一个由 HW 信号设置并由 CMPC/D 事件清除的 FSM、这是什么意思?

    你刚才说了一句话,它是不可能用 CLB 清除 OST ?

    你让我感到困惑。

    这是一种非常复杂的情况、因此请准确回答。

    谢谢你

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

    1 μ s、您的 TZ 事件通过 CBC 控制 PWM、那么您可以配置 PWM 模块中的 TZCLR 寄存器、以自动清除 PRD 或零处的 TZ 事件。 如下图所示。

    2、如果您的 TZ 事件来自 CMPSS 并通过 DACEVT1/2直接控制 PWM、那么您可以在 CMPSS 模块中配置 COMPDACCTL[RAMPSOURCE]寄存器、以自动清除 CMPC 或 CMPD 设置的位置的 TZ 事件。 如下图所示。

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

    您好!

    让我更详细地解释一下。

    CLB 的目的是在上升沿锁存 TRIP 信号、以保持 TRIP 信号直到 CMPC/D 事件发生。 CLB 的 FSM 将充当锁存器、在该锁存器中、由跳闸信号的上升沿设置并由 CMPC/D 事件清除。  

    如果您只是通过 X-BAR 连接、您将无法按所需方式清除行程。 使用 CBC 时受限于 ZRO 或 PRD 事件。

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

    感谢您的意见和建议。 两者都似乎可以实现并解决了问题。

    斯特万-现在我明白你的意思。 因此、建议使用 CBC 方法、但 FSM 可以将其清除掉位于 CTR = ZRO 或 PRD 一侧。

    是否有可以用作设计该 FSM 的参考的示例或类似示例?

    我正在尝试找出哪种方法更直接地实施。 我以前从未使用过 CLB。。

    谢谢!

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

    您好!

    您可以按照前面的建议使用 DCAEVT.FORCE、路由如前面所述:"将硬件跳闸信号连接到输入 X-BAR -> CLBXBAR -> CLB -> EPWMXBAR -> DCAVET1。" 该跳闸将是 CLB 的输入、在您的情况下、其他输入将是 CMPC 事件、因为您想使用该事件来清除跳闸。 CLB 的输出将是您想要实现的"实际"跳闸。  

    C2000 Academy 上有 CLB 的在线资源、C2000Ware 中也有软件示例可供您参考。 这些示例可能在以下目录下找到: C:\ti\c2000\C2000Ware_5_03_00_00\driverlib\f2837xs+ examples\cpu1\clb