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.

[参考译文] TMS320F28377S:SFO 库出现问题并且 CLA 延迟了 PWM 寄存器更新

Guru**** 2479745 points
Other Parts Discussed in Thread: TMS320F28377S

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/647359/tms320f28377s-problems-with-sfo-library-and-delayed-pwm-register-updates-from-cla

器件型号:TMS320F28377S

我将 TMS320F28377S 器件与 CLA 中运行的控制环路一起使用、并更新 ePWM CMPA 寄存器。 在主处理器内核的后台循环中、每隔100ms 调用一次 SFO V8库。 CLA 代码经过定时、可在新的 ePWM 周期开始之前提供 CMPA 寄存器更新。 在随机时间、我看到 CLA 花费了高达25ns 的额外时间(200MHz 时)来完成所有 CMPA 寄存器的更新。 我已经跟踪了当 CLA 尝试更新 CMPA 寄存器时、当 SFO 库在主内核上执行时将发生的延迟。

我无法找到有关 SFO 库及其执行时间和状态的详细信息、而不是其初始调用时间。 在后台周期性调用 SFO 库期间、预期不会对 ePWM 访问或中断操作产生任何影响。

如何最好地消除 SFO 库的活动或使其与 CLA 同步?

SFO 库是否会干扰中断和/或包含会延迟中断的任何 REP 指令?

是否有可能执行 SFO 库并且 ePWM 更新会导致中断例程中的延迟?

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

    200MHz 时、25ns 为5个周期。 CLA 可能会遇到这些延迟、因为 C28x 正在同时访问 PWM 寄存器。 C28x 具有高于 CLA 的读取/写入访问优先级。 因此、当两个 CPU 尝试访问同一总线或外设桥上的同一外设或外设时、CLA 将被挂起。

    您可以使用消息 RAM 执行一些同步。 接触 PWM 寄存器后、您可以将 C28x 信号传输到 CLA。

    我不知道您对 REP 说明的含义。 您是指 RPT (重复)指令。

    我需要一位 SFO 库专家来帮助解决这些问题。

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

    是的、在 SFO 函数中有针对延迟的 RPT 指令来完成校准、并且有可能引起次要中断延迟。 使用 SFO 时、产生中断的最大延迟应约为20个周期。

    如果应用程序没有太多的温度/电压波动,您可以考虑每5-10秒调用一次 SFO。

    SFO 调用旨在作为初始化和/或后台循环的一部分、而不是在 ISR 中。 这可确保 SFO 实际执行并且不依赖于要生成的中断。

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

    是的、我看到的延迟来自 C28x 同时访问 PWM 寄存器。 在文档中、我可以在哪里找到有关 C28x 在外设访问期间具有 CLA 优先级的信息? 我知道、该文档讨论了 C28x 和 CLA 对共享存储器使用循环仲裁。

    系统在 CLA 上运行不能延迟的实时控制循环。 控制循环中缺少更新窗口可能会导致系统不稳定。 当 CLA 准备好访问它们时、CLA 必须向 C28x 发出信号以不执行 SFO 库中的 PWM 访问。 为此、我需要访问 SFO 库源。 HRPWM 文档介绍了在后台运行 SFO 库以保持缩放因子优化的必要性、这意味着它不应导致运行软件的其余部分出现任何问题。  我需要获得更详细的信息来了解该库将如何影响我的软件的其余部分、例如中断的最大延迟和 ePWM 的访问序列、这将导致 CLA 操作在访问 ePWM 寄存器时的延迟。

    是的、我指的是 RPT 指令。   

    降低调用 SFO 的频率没有任何帮助、因为调用它时、它仍会导致 CLA 控制环路中的延迟。

    由于 C28x 和 CLA 彼此独立运行、因此阻止 C28x 同时访问 ePWM 寄存器的唯一方法是尝试通过中断例程管理 SFO 库 PWM 访问。 这将允许 CLA 和 C28x 之间的同步、并且不允许它们同时访问 PWM 寄存器。

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

    我们无法将源代码发布到 SFO 库。

    TRM 和数据表包含有关 C28x 和 CLA 存储器访问的仲裁信息。

    您可以通过多种方法来同步 CLA 和 C28x。 您可以使用消息 RAM。 您也可以使用 MIRUN。 C28x 可以查看 MIRUN 寄存器。 如果 CLA 任务正在运行、那么 C28x 应该等待访问 PWM 寄存器、直到 CLA 任务完成。

    希望这对您有所帮助。 如果您有任何疑问、请告知我们。

    SAL