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/MSP430FR2355:两个 PWM 之间的相位差

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/864280/ccs-msp430fr2355-phase-difference-between-two-pwm

器件型号:MSP430FR2355

工具/软件:Code Composer Studio

您好!

我希望在 P1.6和 P1.7上使用针对向上计数模式配置的 timer0_B 生成的 PWM 之间产生30度的相位差。 我应该对编写的代码进行哪些更改?

#include 

int main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止 WDT

P1DIR |= BIT6 | BIT7; // P1.6和 P1.7输出
P1SEL1 |= BIT6 | BIT7; // P1.6和 P1.7选项选择

//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

TB0CCR0 = 1000-1; // PWM 周期
TB0CCTL1 = OUTMOD_7; // CCR1复位/置位
TB0CCR1 = 750; // CCR1 PWM 占空比
TB0CCTL2 = OUTMOD_7; // CCR2复位/置位
TB0CCR2 = 750; // CCR2 PWM 占空比
TB0CTL = TBSSEL_SMCLK | MC__UP | TBCLR;// SMCLK、向上计数模式、清除 TBR

_bis_SR_register (LPM0_bits); //输入 LPM0
__no_operation(); //对于调试器
} 

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

    Sourav、您好!

    您是否尝试控制相位并调整占空比?  50%占空比是否始终正常?   

    为了控制相位、我认为您必须使用信号计时器来生成两个 PWM。  我可以考虑2个可能的选项。

    1.  使用切换输出模式。  在该输出模式下、您将始终拥有50%的占空比、但它应允许您仅使用 CCRx 寄存器即可轻松控制波形的相位。  它也不需要 CPU 干预。  

    2. 使用 CCRx 中断并自行手动切换 GPIO。  这将允许您控制 PWM 的相位和占空比。  这可能需要多达5个 CCRx 寄存器、这在 Timer_B7上是可能的。  这将需要 CPU 跳转和处理 ISR、这将增加少量 CPU 开销和极小的延迟。   

    您认为这些选项中的任何一个都可以使用吗?

    谢谢、

    JD