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:SFO 函数

Guru**** 2538955 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/600123/tms320f28379d-sfo-function

器件型号:TMS320F28379D

大家好、我有以下问题。

由于用户不知道每个粗略步进有多少个 MEP 步进、所以我们应该调用 SFO 函数来了解这些信息、对吧? 该信息安装在名为 MEP_ScaleFactor 的变量中、对吧? 用户可以指定每个粗略步进的 MEP 步进数吗?

我在一个示例中看到下面的代码,它们在 main()之前的源代码中定义了 MEP_ScaleFactor,所以每次我们使用 SFO()时,我们都应该定义一个名为 MEP_ScaleFactor 的变量? 只要变量的名称是 MEP_ScaleFactor,SFO()就可以识别该变量,对吧?

int MEP_ScaleFactor;// SFO 库使用的全局变量
//结果可用于所有 HRPWM 通道
//此变量也被复制到 HRMSTEP
//按 SFO ()函数注册。

3.当我们配置 CMPAHR 寄存器时,我们应该知道 MEP_ScaleFactor 的值,所以我们应该调用函数 SFO (),对吧? 如果我们启用自动转换,我们是否仍然需要调用函数 SFO ()?

4.在计算 MEP 阶跃数时,为什么要增加0.5? 在下图中、舍入意味着什么? 它是否与函数 round (3.14159262)=3.14相同?

谢谢你。

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

    1.是的,由 SFO ()计算的 MEP 步骤的适当值存储在 MEP_ScaleFactor 中。 是的,用户可以写入所需的值,但当再次调用 SFO()时,MEP_ScaleFactor 可能会再次更新。
    2.是的,SFO()需要名为 MEP_ScaleFactor 的全局变量。
    3.是的,仍必须调用 SFO()以更新 MEP_ScaleFactor。 启用自动转换将自动将 MEP_ScaleFactor 值写入 HRMSTEP 寄存器
    4.在所示的计算中加上0.5通常会导致 MEP 阶跃数为整数、然后可用于确定 CMPAHR 值。

    此致、
    Elizabeth