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.

MSP430F4152进入LPM3,在不同电压下中断后SMCLK频率变化问题

Other Parts Discussed in Thread: MSP430F4152

请教各位大神,本人遇到点问题,描述如下:

功能描述:

芯片采用MSP430f4152,使用TA1输出PWM来驱动蜂鸣器,TA1的时钟使用SMCLK,整个系统进入LPM3模式,有按键后(外部中断),TA1打开,输出PWM,100ms后关闭,驱动蜂鸣器,就这么简单,MCLK和SMCLK的源均使用DCO。

现象:

1.如果我按照上述描述来做,发现在不同的电压下,SMCLK的频率会变,我采用稳压电源来调整电源电压,2.0v-3.0v之间调整,然后按键让蜂鸣器响,结果发现蜂鸣器频率不一致,用示波器去量,频率的确变了。

2.如果我不进入LPM3模式,而是直接while(0x00)或者LPM0模式,则调整电源电压,按键蜂鸣器频率不变化,再次使用示波器去量,频率也无变化。

3.如果我将TA1的时钟源改成LFXT1CLK,进入LPM3模式,则调整电源电压,也是频率无变化。

注意:因为进入LPM3模式,所以DCO是在进入中断后才会打开,这里是按键外部中断,有中断后,6us才唤醒DCO。

问题:
按理讲按键后(LPM3模式,进入外部中断),系统会6us内立即唤醒DCO,那么MCLK和SMCLK都会运行,那么此时使用SMCLK作为时钟源的TA1的PWM频率应该不变,但是却变了,这是为什么??
  • 刚才改变了测试方法,直接用IO输出时钟信号的方法测试,MSP430F4152对应的IO是P1.1输出MCLK,P1.6输出LFXT1CLK,然后分别使用while(0x01),LPM0和LPM3测试,依然按键中断唤醒,在中断里使用while(0x01),让其不退出中断,然后调整电压范围,此时再去量测P1.1和P1.6,均使用示波器量,测试结果如下:

    1.while(0x01)和LPM0的P1.1的MCLK以及LFXT1CLK都不会随着电压变化而变化,稳定。

    2.LPM3下,MCLK会随着电压变化而变化,比较明显,2.1v电压时频率可能会降到1Mhz,而3.0v可能会升到8Mhz甚至10Mhz,很不稳定。

  • 楼主你好,根据手册里的频率和电压的关系图,随着供电电压的降低,msp430f4152的运行最高频率会下降。

    但像楼主说的在2.1v降到1MHz的情况,觉得可能还有其他原因。

  • 首先感谢楼上的回答,我是外部接了32768hz的低频晶振,4152自带fll+,所以可以稳定在7.99Mhz,我又做了一些测试,按照上面的方法,进入LPM2,然后再进入中断中while(0x01),再量频率,电压变化,频率并不会变。所以LPM2也没有测试,目前看下来就是LPM3不行,发现LPM3和LPM2也就是一个DC generator的区别,这个是什么?另外LPM4也没有测试,我稍后测试一下看看。

  • 经测试,LPM4跟LPM3一样,也会变,目前看来只要DC generator关闭的状态,中断醒来后,在电压变化情况下(有效范围内,2.0-3.0),频率都会变化。

  • 感谢各位关注,找到原因了,在msp430f 4152的user manual的299页,5.2.9里

    An interrupt service request clears SCG1, CPUOFF, and OSCOFF if set but
    does not clear SCG0. This means that FLL operation from within an interrupt
    service routine entered from LPM1, 3, or 4, the FLL remains disabled and the
    DCO operates at the previous setting as defined in SCFI0 and SCFI1. SCG0
    can be cleared by user software if FLL operation is required.