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.

[参考译文] TMS320F28075:标题:TMS320F28075 在向上/向下计数模式下实施 HRPWM 的问题

Guru**** 2952510 points

Other Parts Discussed in Thread: TMS320F28075

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1649252/tms320f28075-title-issues-with-hrpwm-implementation-in-up-down-count-mode-on-tms320f28075

器件型号: TMS320F28075

您好:

我目前正在使用 TMS320F28075 开发一款产品 、对 向上/向下计数模式下的 HRPWM 配置有疑问。

我 TBPRD 仅 CMPA 在向上/向下双向计数模式下使用生成对称的 PWM 信号。 我的目标是将 HRPWM(高分辨率 PWM)应用于 TBPRD 基准的两侧、从而对最小占空比进行更精细的控制。

我已附上 PWM 配置代码以供您参考。

    EPwm1Regs.TBPRD = (PWMCLK / EPWM1_TMN_SM_0_Freq)>>1;       // Set timer period 705 TBCLKs
    EPwm1Regs.TBPHS.bit.TBPHS = 0x0000;        // Phase is 0
    EPwm1Regs.TBCTR = 0x0000;                  // Clear counter

    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up and down
    EPwm1Regs.TBCTL.bit.PHSEN = TB_ENABLE;        // Enable phase loading for sync signal receive
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // Clock ratio to SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_SYNC_IN;    

    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO; // Load on Zero

    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET;            // Set PWM1A on event A, up count
    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;          // Clear PWM1A on event A, down count
    EPwm1Regs.CMPA.bit.CMPA = ((PWMCLK / EPWM1_TMN_SM_0_Freq)>>1)*0.95;                 //initiate

    EALLOW;
    EPwm1Regs.HRCNFG.all = 0x0;                        // Clear all bits first
    EPwm1Regs.HRCNFG.bit.EDGMODE  = HR_REP;            // MEP control on Rising edge
    EPwm1Regs.HRCNFG.bit.CTLMODE  = HR_CMP;            
    EPwm1Regs.HRCNFG.bit.HRLOAD   = HR_CTR_ZERO_PRD;   
    EPwm1Regs.HRCNFG.bit.AUTOCONV = 1;                 
    EPwm1Regs.HRPCTL.bit.HRPE     = 0;                
    EDIS;

我尝试应用 HRPWM、但我遇到的问题似乎不是对称应用 TBPRD。 如随附的波形所示、HRPWM 效果仅在右侧可见。

  • 红色 (ePWM7A): 这是具有相同 CMPA 值的基准信号(无 HRPWM)。

  • 黄色 (ePWM1A): 这是应用 HRPWM 的信号。

  1. EPwm1Regs.HRCNFG.bit.EDGMODE = HR_REP;

image.png

 

2. EPwm1Regs.HRCNFG.bit.EDGMODE = HR_FEP

image.png

是否可以将 HRPWM 配置为也应用于左侧(如波形 1 中所示)? 如果是、请告知必要的设置或调整?

感谢您的帮助。

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

    抱歉。 最后一句中的内容不正确。

    如您所见、HRPWM 效应仅应用于波形的右侧。 我想知道是否可以配置 HRPWM、以便它也应用于相对于 TBPRD 中心的左侧。 您能否建议在向上/向下计数模式下实现对称 HRPWM 所需的设置或寄存器?

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

    你好、车成镐、

    请留出 1-2 天时间让我审核您的所有信息并制定我的回复。 感谢您的耐心。

    此致、

    Allison

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

    你好、车成镐、

    “HR_REP“仅将 MEP 应用于向上计数 CMPA 匹配(上升沿);“HR_FEP“仅应用于向下计数匹配(下降沿)。 两者都不能控制两条边线。

    您需要将 EDGMODE 更改为“HR_BEP“(双边沿位置= 3):

    EALLOW;

    EPwm1Regs.HRCNFG.all = 0x0;
    EPwm1Regs.HRCNFG.bit.EDGMODE = HR_BEP; // Both edges — MEP fires at Counter A on up-count and Counter A on down-count
    EPwm1Regs.HRCNFG.bit.CTLMODE = HR_CMP; 
    EPwm1Regs.HRCNFG.bit.HRLOAD = HR_CTR_ZERO_PRD; 
    EPwm1Regs.HRCNFG.bit.AUTOCONV = 1;
    EPwm1Regs.HRPCTL.bit.HRPE = 0;

    EDIS;

    在 HR_BEP + CTLMODE = HR_CMP 的向上/向下计数模式下、CMPAHR 分数扩展会提高向上计数和向下计数 CMPA 事件的有效阈值。 上升沿延迟 和 下降沿前进 相同的 MEP 比例 —在 TBPRD 附近对称。

    确保 SFO() 在后台循环中运行、以保持 HRMSTEP 校准。 如果没有有效的 HRMSTEP、AUTOCONV = 1 将产生错误的 MEP 缩放。

    作为此信息的参考:TMS320F2807x TRM SPRUHM9H 部分§14.14.1.3、第 1846–1847 页。

    此致、

    Allison

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

    你好。  Allison

    我需要的是、在上升沿使运行提前、而不是延迟。

    使用 HRPWM 时、是否真的无法在上升沿实现推进?

    此致、

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

    你好、车成镐、

    请记住、HRPWM 不能直接使边沿前移 — MEP 只会从整数 CMPA 边界增加延迟。 但是、通过将 CMPA 递减 1、然后使用 CMPAHR 延迟回到所需位置、可以完全实现边沿推进。 因此、有效边沿位置=(CMPA - 1)+(CMPAHR/255 ×T_TBCLK)

    例如、要将上升沿从其当前位置提前 0.3 TBCLK:

    • 设置 CMPA = ORIGINAL_CMPA - 1
    • 设置 CMPAHR = round (0.7 ×MEP_ScaleFactor)

    如果使用自动转换 (AUTOCONV = 1),则会自动处理 — 写入较小的小数占空比值,硬件会将其拆分为正确的 CMPA(整数)和 CMPAHR(小数)组合。 除了已有的寄存器外、不需要进行特殊的寄存器配置。

    此致、

    Allison

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

    您好、Allison。

    感谢您的解释。 我明白。

    此致、

    Cha

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

    很高兴听到这个消息! Slight smileμ s