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:将工作应用代码从 TMS320F28377S 移植到 TMS320F28377D

Guru**** 2455780 points
Other Parts Discussed in Thread: TMS320F28377S, TMS320F28377D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/757211/tms320f28377d-porting-working-application-code-from-tms320f28377s-to-tms320f28377d

器件型号:TMS320F28377D
主题中讨论的其他器件:TMS320F28377S

我的客户询问以下问题。

"我正在努力将一些有效的应用程序代码从 TMS320F28377S 移植到 TMS320F28377D。  我现在从 SFO ()例程返回一个错误来校准 HRPWM。  由于 CPU2正在使用某些 ePWM 模块、我怀疑 SFO 函数无法访问它们。

参考手册的 HRPWM 部分包含使用 SFO ()例程的以下变量。

int MEP_ScaleFactor = 0;//scale factor 值

volatile struct ePWM_regs * ePWM[]={0、&EPwm1Regs、&EPwm2Regs、&EPwm3Regs、&EPwm4Regs};

看起来、ePWM 阵列可能会告诉例程要使用哪些 ePWM 模块、但我找不到有关如何针对特定应用进行配置的任何文档。  在本例中、我们使用 EPWM1、2、4、5、7、 CPU2上为8、CPU1上为 EPWM3。  这是否是 SFO()错误的原因,或者是否可能是另一个问题? "

谢谢、Merril

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

    我不敢打赌这就是问题所在。 当 SFO 完成其校准后、使用 EPWM1。 它将更新所有 ePWM 中的寄存器。 由于某些 EPWM 由 CPU2拥有、因此这会导致问题。 SFO 库仅在 CPU1上运行。  

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

    您好、团队 C2000、

    客户询问... "TI 是否有解决方案允许 CPU1在 CPU2拥有1个或多个 PWM 外设时校准 HRPWM?"

    谢谢、Merril

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们没有一个示例、但我可以继续了解需要执行哪些步骤才能实现这一目标。

    NIMA Eskandari
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HRPWM 功能仅在 CPU1上可用。 必须将使用 HR 的 EPWM 分配给 CPU1。 TRM 中提到了这一点。 我四处搜索、询问设计是否有办法解决这个问题、似乎答案是否定的
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Nimi、

    谢谢。。。 实际客户情景/用例/问题如下所示。

    "我们知道 HRPWM 只能在 CPU1上使用。 但是,我们的具体问题与两个*单独的* ePWM 有关。 例如:

    CPU1拥有 ePWM3
    CPU2拥有 ePWM1
    CPU1尝试使用 SFO ()提供的库来校准 ePWM3
    CPU1崩溃是因为它不是只校准 ePWM3的库,而是尝试校准它自己不拥有的*所有* PWM,甚至 ePWM1。"

    谢谢、Merril

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

    好的,Newman

    我研究了你的问题并研究了 SFO 库。

    1、不要在分配给 CPU2的任何 PWM 上使用 HRPWM。

    EPWM1必须分配给 CPU1并将用于 SFO 校准。

    同样如下面的代码所示。 传递到 HRPWM SFO LIB 的结构应如下定义、EPWM1Regs 作为零索引元素。

    int MEP_ScaleFactor;// SFO 库使用的全局变量
    //结果可用于所有 HRPWM 通道
    //此变量也被复制到 HRMSTEP
    //按 SFO ()函数注册。
    
    //
    // ePWM 寄存器结构指针数组:
    //* ePWM[0]定义为示例中未使用的虚拟值
    //
    volatile 结构 ePWM_reg * ePWM[PWM_CH]=
    {EPwm1Regs、&EPwm1Regs、&EPwm2Regs、&EPwm3Regs、&EPwm4Regs、
    EPwm5Regs、&EPwm6Regs、&EPwm7Regs、&EPwm8Regs};
    

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

    你好、Nima、

    我是提出这个问题的工程师之一。  因此、我对您的信息的解释如下:

    对于该库,如果我们要执行任何 HRPWM,EPWM1 *必须*位于 CPU1上。  在我们当前的实现方案中、由于我们目前的硬件布局和必要的软件分段、CPU2需要 EPWM1。  我认为我们需要重新进行硬件布局以使用不同的 ePWM 吗?

    如果我的解释是正确的、TI 是否可以通过任何方式更改 SFO 库、以便使用数据结构中列出的第一个 PWM 而不是 EPWM1进行校准?

    对于所有这些信息、需要在《技术参考手册》的 HRPWM 一章中添加一个注意事项、大红色标志、说明:

    a:HRPWM 只能在 CPU1上运行。

    b.您必须将 EPWM1绑定到 CPU1才能使 SFO 正常工作。

    此致、

    Jeremy Overesch

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

    提到 HRPWM 仅在 CPU1上可用。

    我们正努力改变《证券及期货条例》的图书馆,并一直在研究如何使《证券及期货条例》更方便用户使用。

    我将尝试查看是否可以更改 SFO 以使用其他 ePWM 来校准 HR 模块。 如果我发现任何对您有帮助的结果、我将在这里重新发帖。