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/LUNCHXL-F2.8377万S:SFO HRPWM

Guru**** 2539500 points
Other Parts Discussed in Thread: CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/576676/ccs-launchxl-f28377s-sfo-hrpwm

部件号:LAUNCHXL-F2.8377万S

工具/软件:Code Composer Studio

您好,  

我不知道 在TBPRDHR登记簿中写入哪一个值的权利。 我已启用自动转换。

假设EPWMCLK=TBCLK以100MHz运行。 SYSCLK以200MHz运行。 我想创建一个100.05kHz的PWM周期。

将TBPRD寄存器值设置为999以获得100kHz。

 对于TBPRDHR 寄存器值,我不确定。

一个粗步长相当于0.1kHz,因此0.05kHz将是一半。 那么我在TBPRDHR登记簿中写了6.5535万/2吗???

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

    您好,Jonas:

    您是否看过 controlSUITE中的HRPWM_PRDUPDOWN SFO_V8示例? 我认为这将有助于澄清一些事情。  以下是代码的适用循环:

    //
    //从0.2 - 0.999 中将定期检查作为Q16编号进行扫描
    //
    for (PeriodFine = 0x3333;PeriodFine < 0xFFBF;PeriodFine++)
    {
    IF(UpdateFine)
    {
    //
    //由于已启用自动转换,因此需要
    //分数期间必须直接写入
    // TBPRDHHR (或TBPRDHRM)以Q16格式注册
    //(忽略较低的8位)
    //
    // EPwm1Regs.TBPRDHR = PeriodFine;
    //
    //硬件将自动缩放
    // MEP_ScaleFactor的分数周期
    //在HRMSTEP登记簿中(已更新
    //通过SFO校准软件)。
    //
    //硬件转换:
    // MEP延迟移动=((TBPRDHR (15:0)>> 8)* HRMSTEP (7:0)+
    // 0x80)>> 8.
    //
    用于(I=1;i<PWM_CH;i++)
    {
    (*ePWM[i]).tbPRDHR = PeriodFine;//采用Q16格式
    }
    }
    否则
    {
    //
    // TBPRDHR上无高分辨率移动。
    //
    用于(I=1;i<PWM_CH;i++)
    {
    (*ePWM[i]).tbPRDHR = 0;
    }
    }
    
    //
    //调用比例因子优化器库函数SFA(0)
    //定期跟踪因温度/电压而发生的任何变化。
    //此函数通过运行生成MEP_ScaleFactor
    // HRPWM逻辑中的MEP校准模块。 这种规模
    //系数可用于所有HRPWM通道。 HRMSTEP
    //寄存器由SFO功能自动更新。
    //
    状态= SFA();//在后台,MEP校准模块
    //连续更新MEP_ScaleFactor
    
    IF (STATUS == SFO_ERROR)
    {
    Error();// SFO函数在发生错误时返回2,并且# of
    } // MEP步进/粗步进超过最大值255。
    } //循环的结束周期性 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Kris,
    我知道这个例子。 我的问题是浮点值的转换,例如0.5 作为Q16编号。
    我的理解是否正确(浮点值)*2^16=(十进制Q16)?
    浮动 问题16. Q16 (十进制)
    0.0 0x0000 0
    0.1 0x1999 6553.
    0.5 0x8000 3.2768万
    0.999.9847万 0xFFFF 6.5535万
    我看到TBPRDHRRegister中的最后8位被忽略,因此:
    浮动 问题16. Q16 (十进制)
    0.0 0x0000 0
    0.1 0x1990 6544.
    0.5 0x8000 3.2768万
    0.999.7559万 0xFFF0 6.552万

    我可以调整的范围是从0.0 到~ 0.9.9976万。 这是否正确?
    当我使用TBPRDHR时,该周期将被TBCLK周期的一半所吸气?