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.

[参考译文] MSP430F5659:PWM 频率

Guru**** 2535750 points
Other Parts Discussed in Thread: MSP430F5659

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/686382/msp430f5659-pwm-freq

器件型号:MSP430F5659

您好!

我使用 msp430f5659来生成 PWM 波形。 我已经使用下面给出的代码来使用计时器生成 PWM。

   PWM_PINDIR;
   PWM_PINMODESELECT;                       //选择引脚1.6作为 PWM 输出。

   TA0CCR0 = 1000;                          //在定时器 A0捕捉/比较0寄存器中将周期设置为1000us。
   TA0CTL = tassel_2+ MC_1 + TACLR;        //tassel_2选择 SMCLK 作为时钟源、
                                             //和 MC_1告诉它在 TA0CCR0向上计数模式中向上计数到值、清零 TAR。
   TA0CCTL1 = OUTMOD_7;
   TA0CCR1 = 500;                           //电源开启的周期(以微秒为单位)。 这是时间的一半、
                                             //这相当于50%的占空比。
   //TA0CTL = tassel_2 + MC_1;               //tassel_2选择 SMCLK 作为时钟源、和
                                            //MC_1会告诉它向上计数到 TA0CCR0中的值。
   TA0CCTL0 = CCIE;                         // CCR0中断被启用
   _bis_SR_register (LPM0_bits);           //切换到低功耗模式0。

// Timer0 A0中断服务例程
#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=TIMER0_A0_VECTOR
_interrupt void TIMER0_A0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(TIMER0_A0_Vector)) TIMER0_A0_ISR (void)
其他
错误编译器不受支持!
#endif

   PWM_PINTOGGLE;                           //切换 P1.6
   _BIC_SR_register (LPM0_BITS);


我获得的 PWM 频率为12kHz、但我的 SMCLK 以12MHz 的频率振荡。  如何获得更高的频率?

我尝试通过更改 TA0CTL 寄存器 ID 中的值来更改输出 PWM 频率、但它不会影响频率。

如何更改 PWM 的频率? 我必须修改哪个寄存器值才能获得所需的频率。

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

    您好!

    感谢您发布此问题!

    请注意:TA0CCR0寄存器值定义 PWM 频率、TA0CCR1寄存器值定义占空比。

    因此、要更改输出 PWM 频率、您需要调整 TA0CCR0寄存器。

    您可以 通过将计时器时钟频率(在您的情况下 SMCLK = 12MHz、如您所知)除以计时器比较值(在 TA0CCR0中为数字、在您的情况下为1000)来计算生成的 PWM 频率。 在您的当前示例中、它会产生12kHz 的频率、如您所述。

    如果您需要更高的 PWM 频率、请减小 TA0CCR0中的值、并调整 TA0CCR1中的值以实现正确的占空比。

    请查看 《MSP430F5xx 和 MSP430F6xx 系列用户指南》、第17.2.4.2节 Timer_A 比较模式。

    有关使用 Timer_A 实现 PWM 的示例、您还可以查看 MSP 驱动程序库中包含的示例。

    如果您有其他问题、请告诉我。

    此致、

    Britta

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢您提供相关信息。
    我想在差分引脚(引脚 P1.6、P1.5)上生成2个 PWM 波形、以用于桥接驱动应用。
    我需要引脚 P1.5上的反相 PWM 波形。
    在 P1.6上生成了一个 PWM 频率。
    如何同时从单个 ISR 例程生成另一个反相波形。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您可以将两个引脚配置为 OUTn 信号的输出。 当定时器达到 CCRn 值时、OUTn 信号改变。

    请参见 《MSP430Fxx 和 MSP430F6xx 系列用户指南》的第17.2.5.1.2节。

    如果您可以将 CCRx 寄存器设置为相同的值、但选择将 OUTn 信号反相、请参阅上述链接用户指南第17.2.5.1节中的表17-2 (例如、您可以在引脚1.5上使用复位/设置模式、在引脚1.6上使用设置/复位模式、请参阅表17-2中的所有选项)。

    《用户指南》第17章应提供实施功能所需的所有信息。

    此致、

    Britta

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

    "如何获得更高的频率?"

    您应该问自己、因为您编写的代码清楚地说明了如何更改 PWM 频率。