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.

[参考译文] TMS320F28P650DK:CLB 输入逻辑检测

Guru**** 2553260 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1545327/tms320f28p650dk-clb-input-logic-detection

器件型号:TMS320F28P650DK


工具/软件:

您好、

我一直在努力使用 XBAR + CLB 设置一些硬件故障检测。 我有以下信号

输入 0 ->变为高电平=故障

输入 1-3 ->变为低电平=故障

我希望触发这些故障和 ISR、以便在 ePWM 模块上强制触发 TZ。 到目前为止、我已经使用 XBAR 将这些输入路由到 CLB 逻辑块中(我可以看到它们在 CLB_DBG_OUT_2 寄存器中切换)、并使用以下逻辑 (i0)|(~i1)|(~i2)|(~i3) 将它们放入 LUT0 中。

如果手动触发其中一个故障、我无法看到 LUT40_OUT 设置、但我的 HLC 会使用 INTR11 指令使用 ePIE 持续发送中断请求(设置为在事件 0 期间触发)。 我无法让该 ISR 停止触发。 这里的例程表明我正在清除和确认中断。

__ interrupt void clbTripISR (void)
  /*强制 ePWM 跳闸区事件禁用门控*/
  // EPWM_forceTripZoneEvent (EPWM1_BASE、EPWM_TZ_FORCE_EVENT_DCAEVT1);
  CLB_clearInterruptTag (CLB1_BASE);
  INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group5);

}
 
在继续之前、我有几个问题需要解决。
 
CLB_DBG_OUT_2 寄存器是否指示逻辑块在边界处看到了什么? 根据上面实现的逻辑、我可以在输入端看到 0xE (1110)、但事件仍在触发中。
2. HLC 如何触发事件? 它是来自 LUT 输出的高电平有效还是低电平有效信号? 这是可配置的吗? 我无法在 driverlib 中找到与此相关的任何内容。
如果您有关于如何调试此问题的任何进一步说明、敬请期待。
谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    HLC 触发事件为高电平有效。 您可以根据需要反转 LUT 的输出以反转极性。

    问题:当实际发生故障情况时、是否要重复执行 HLC 例程? 还是在跳闸条件的上升沿/下降沿触发一次? 如果是、它可能有助于添加边沿调节、以便仅根据需要在上升沿和下降沿触发 HLC 例程。

    谢谢您、

    Luke

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

    您好 Luke、

    感谢您提供的信息。 理想情况下、我就像运行单次 HLC 例程一样、以便强制执行 TZ 事件并设置必要的标志来报告给主控制器。 在边沿条件下、唯一的问题是输入之一是 16 通道多路复用器、并且一个输入会在循环通过多路复用器时导致重复的边沿条件。

    关于如何调试这种持续误触发、您还有其他想法吗? 是否建议在 GPIO 上实施干扰滤波器? 如果需要、我可以添加初始化代码。

    我一直在关注 CLB_OUT_EN 寄存器。 您能否确认实际上只有在该寄存器上启用的事件才能够引发 HLC 事件(假设其配置正确)?

    再次感谢

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

    尊敬的 Ayden:

    我预计即使没有边缘滤波、您也会遇到多路复用器循环问题。 也许您可以在更改多路复用器的输入时禁用其输出并使用上升沿滤波?

    要实现一次性 HLC 例程行为、唯一的选择是您描述边缘滤波。 不使用边沿滤波将导致重复的 HLC 程序触发信号。

    使用 CLB_OUT_EN 寄存器启用 CLB 输出覆盖功能对信号是否可以触发 HLC 没有影响。 实际上、CLB_OUT_EN 仅与 OUTLUT 相关、如果我没有记错、OUTLUT 不是 HLC 触发器的可选输入。

    谢谢您、

    Luke