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.

[参考译文] TMS320F28377D:关于 SFO 函数

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/593029/tms320f28377d-regarding-sfo-function

器件型号:TMS320F28377D

您好!

我们在 TMS320F28377D 中以向上向下模式在通道 A 和 B 中使用 HRPWM。 为此、我们探索 SFO_V8_FPU_lib_build_c28.lib。

是否有必要在 while 中调用 SFO()函数,如下所示。


while (status =SFO_Incomplete)//完成前调用 { 状态= SFO (); 如果(status =SFO_ERROR) { error(); } }

此致、

Himanshu

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

    是的、强烈建议在使用 HRPWM 之前运行 SFO 校准。 SFO 函数计算正确边缘定位所需的 MEP 比例因子。 您显示的代码是正确的用法。

    如果您还没有,可以查看 TRM HRPWM 一章中的 SFO 附录以了解更多详细信息。

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

    您好!

    感谢您的盛情款待。

    在开始 ePWM/HRPWM 初始化之前、我已经完成了。 然后每1分钟调用一次

    但在 while ()循环中需要它吗? 我按如下方式完成了该操作。

    状态= SFO_INCOMPLETE;
    
    // while (状态= SFO_INCOMPLETE)
    {
    status = SFO ();
    } 

    调用 while 循环是否正确或有必要?

    此致、

    Himanshu

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

    不需要、在控制循环的每次迭代中都不需要调用 SFO ()。

    从 SFO 附录中:
    “需要执行 SFO 功能的重复率取决于应用程序的操作环境。 与所有数字 CMOS 器件一样、温度和电源电压变化会对 MEP 运行产生影响。 但是、在大多数应用中、这些参数变化缓慢、因此通常每5到10秒执行一次 SFO 函数就足够了。 如果预计变化会更快,则可能必须更频繁地执行才能与应用程序匹配。”

    因此、如果温度或电压没有显著变化、应用可能只需完成一次 SFO 校准即可计算适合长时间的换算系数。 1分钟对于您的应用来说可能足够频繁、但如果您发现时间不够、也可以更改为每10秒。

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

    您好!

    我们知道您所说的一切。 但我的观点是不同的。

    初始化后、我无法调用 while 循环中的 SFO ()函数进行校准。 因此、我按如下所示对其进行更改。

    状态= SFO_INCOMPLETE;
    
    
    // while (状态= SFO_INCOMPLETE)
    {
    状态= SFO ();
    } 

    是否需要在 while 循环中调用 SFO ()函数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不需要、它不必处于该 while 环路中。 务必使用 while 循环进行初始化、以检查校准是否已完成。

    初始化之后,您只能定期调用 SFO (),而无需检查完成状态。 但最好检查 STATUS 是否为 SFO_ERROR、并在需要时处理该错误。

    此致、
    Elizabeth