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.

[参考译文] CCS/TMS320F28379D:非整数 TBPHS 值的 HRPWM 相移

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/830797/ccs-tms320f28379d-hrpwm-phase-shift-for-non-integer-tbphs-values

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

您好!

我正在使用 MATLAB 为 Delfino 生成 HRPWM 相移代码。 我遇到了 TBPHS 的非整数值问题。 对于非整数值、实际相移方向相反、在整数值处观察到相移突变突变。 下面是一个示例。 下面还给出了生成的 C 代码。

TBPHS ->相移(度数)

150      158.1.
150.5   158.8
150.8   159.2
151.      156.8
152.      155.5

EPwm2Regs.TBPHS.bit.TBPHS = ICN_PFC_Controller_P.twoDelta_value;

/*--更新 TBPHSHR -*/

extern int MEP_ScaleFactor;
REAL_T TBPHSf = ICN_PFC_Controller_P.twoDelta_value;
TBPHSf = EPwm2Regs.TBPHS.bit.TBPHS;
TBPHSf *= 65536;
EPwm2Regs.TBPHS.bit.TBPHSHR =(uint16_T) TBPHSf;

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

    您好!

    TBPHSHR 配置似乎不正确、小数部分应被 MEP_SCALE 系数复用并写入8位空间而不是16位空间、因为 TBPHS 寄存器的最后8位被保留、如下图所示。  

    因此,配置应该类似于:

    TBPHSf = EPwm2Regs.TBPHS.bit.TBPHS;
    TBPHSf *= MEP_ScaleFactor;
    EPwm2Regs.TBPHS.bit.TBPHSHR =(uint16_T)(TBPHSf << 8);

    如果我的回复回答了您的问题、请点击位于我帖子底部的"我的问题已解决"按钮。

    此致

    Himanshu

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

    Himanshu、

    感谢您的回复。 我已尝试您推荐的代码片段。 我收到以下编译错误。

    错误:表达式必须具有整型。  

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

    您好!

    我刚才提供了伪代码来解释高分辨率相位寄存器的编程、您需要根据您对结构和变量的定义将其转换为合法代码。  此外、我猜编译错误结果是因为对浮点变量执行了左移运算。 在这种情况下,Typecasting 应该修复此问题:

    EPwm2Regs.TBPHS.bit.TBPHSHR =(uint16_T)((((uint16_T) TBPHSf)<< 8);

    如果我的回复回答了您的问题、请点击位于我帖子底部的"我的问题已解决"按钮。

    此致

    Himanshu