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/TMS320F28027:cmpa 差异

Guru**** 2530710 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/604105/ccs-tms320f28027-difference-in-cmpa

器件型号:TMS320F28027

工具/软件:Code Composer Studio

您好,

我是微控制器领域的新手。

有人能告诉我这两条线路之间的区别以及如何使用它们吗?

Epwm1Regs.CMPA=600;

Epwm1Regs.half-CMPA=600;

谢谢你

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

    大家好、Madhuri

    首先、我想您的意思是

    Epwm1Regs.CMPA.all = 600;
    Epwm1Regs.CMPA.half.CMPA = 600; 

    存在差异。 CMPA 分为两部分:用于常规 ePWM 计数器比较的 CMPA 和用于高分辨率比较的 CMPAHR (其中 HR 表示高分辨率)。 可以将每个 TBCLK 分为更多的时钟(我想最多255个)、以便 在 PWM 信号生成中实现难以置信的精度。 您可以参阅有关 ePWM 和 HRPWM 模块的文档。

    因此、如果您的 PRD = 10000、并且想要生成 50%的占空比、则必须写入  

    Epwm1Regs.CMPA.half.CMPA = 5000; 

    如果要实现50.00054%的占空比、则必须写入 CMPA.half-CMPAHR 寄存器。 当然、您首先需要设置 HR 子模块。

    我还认为、第一种方法甚至不会构建。  

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

    感谢您的详细解释。

    毫无疑问、如果我的占空比超过50%。 然后我必须使用

    Epwm1Regs.CMPA

    对于像50.003%这样的精细占空比操作、我必须包含 HRPWM、对吧?

    如果我希望高分辨率 PWM 小于50%、该怎么办
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以将任何值写入 EPwmXRegs.CMPA.half-CMPA。 但该值不得大于您的周期。

    只需确保:

    我们假设 TBPRD = 200、计数器在递增计数模式下计数。 在本例中、您的 PWM 的精度是多少? 它是(1/200)*100%=0.5%

    这意味着、您可以正确设置步骤0.5%的任何占空比:您可以设置0.0%(CMPA = 0)、10.0%(CMPA = 20)、13.5%(CMPA = 27)、30.0%(CMPA = 60)... 99.5%(CMPA = 199) 100.0%(CMPA = 200)。

    所有此 CMPA 必须写入 EPwmXRegs.CMPA.half-CMPA 寄存器。

    但是、如果您想要设置更精确的占空比、例如10.2%、则无法实现。 因为在这种情况下、您需要 CMPA =(10.2/100%)* TBPRD = 0.102*200 = 20.4。 但 CMPA 只能是整数值、因此只能设置 CMPA = 20或 CMPA = 21 (分别为10.0%和10.5%)。  

    因此、在这种情况下、高分辨率模块可以提供帮助:您可以设置 CMPA = 20 (10.0%)、而不是设置 CMPAHR 来添加缺失的0.2%。

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