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.

[参考译文] MSP430F6636:无法生成PWM。

Guru**** 2398695 points
Other Parts Discussed in Thread: MSP430F6636

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1088234/msp430f6636-couldn-t-able-to-generate-pwm

部件号:MSP430F6636

您好,TI团队:


我们正在使用MSP430F6636控制器。 我们的目标是 使用 Timer-TA2 -ON CCR0 (PIN NUM:47)生成PWM。  但我们无法为 我们的项目生成PWM。

请验证下面 的代码片段 ,并告知我们是否遗漏了一些内容。

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

GPIO _setAsPeripheralModuleFunctionOutputPin (GPIO_PORT_P3, GPIO PIN5);     

//更新计时器参数以启动计时器     

timer_a_initUpModeParam initUpParam ={0};     

initUpParam.clockSource = timer_a_CLOCKSOURCE_SMCLK;     

initUpParam.clockSourceDivider = timer_a_CLOCKSOURCE_diver_1;     

initUpParam.timerPeriod = SMCLK_Actual_CLK/1.5万;     

initUpParam.timerInterruptEnable_TAIE = timer_a_TAIE_interrupt_disable;     

initUpParam.captureCompareInterruptEnable_CCR0_CCIE =      TIME_A_CCIE_CCR0_INTERRUCE_DISABLE;

initUpParam.timerClear = timer_a_do清除;     

initUpParam.startTimer = false;     

//初始化比较模式以生成PWM     

timer_a_initCompareModeParam initComp2Param ={0};     

initComp2Param.compareRegister = TIME_A_CAPTURECOMPARE_REGISTER_0;     

initComp2Param.compareInterruptEnable = timer_a_CAPTURECOMPare_interrupt_disable;     

initComp2Param.compareOutputMode = TIME_A_OUTPUTMODE_RESET_SET;     

initComp2Param.compareValue = RESET;//Duty_CYCLE2;     

timer_a_initUpMode( timer_a2_base,&initUpParam );     

timer_a_startCounter( timer_a2_base, timer_a_up模式);     

timer_a_initCompareMode( timer_a2_base,&initComp2Param );     

timer_a_setCompareValue( timer_a2_base , timer_a_CAPTURECOMPare_register_0, 50);  

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


我们目前正在尝试实现50 % 占空比,但我们无法实现...我们的目标是实现15 % 占空比。



请帮助我们解决 此问题,以便在同一引脚上生成PWM。  

如果您需要 我们提供更多信息,请告知我们。
此致,
Vivek
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    通常,您不能使用CCR0生成“真实”PWM (在本例中为2.0),因为在UP模式中CCR0也是“断言”比较器--您仅限于使用切换模式的50 %。 [参考用户指南(SLAU208Q)第17.2 .5.1 节,第二句。]

    您是否需要使用WFP 3.5 ,或者是否可以使用其它PIN? WFP 3.6 (例如)的是2.1 ,它可以使用PWM模式。

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

    感谢您的建议。  
    我们已将PIN从47转移到49,我们可以生成预期的PWM,但在这里,我们将PIN 47和49物理短路。

     从固件 端,PIN 49已初始化,PIN 47未初始化。

    我们是否需要从固件端进行其他配置?

    如上所述,我们将获得预期的PWM。 我们能否采用此解决方案? 是忠实的解决办法,还是将来会产生问题?

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

    据我所知,您正在2.2 (WFP 3.7)上生成PWM,并且在2.0 (WFP 3.5)引脚上有一条跳线(或等效的),该引脚被配置为输入。 这种安排应该是好的(注意不要忘记一年后的事情(:-)))。