请教各位大神,本人遇到点问题,描述如下:
功能描述:
芯片采用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频率应该不变,但是却变了,这是为什么??
Long King:
刚才改变了测试方法,直接用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,很不稳定。
灰小子:
回复 Long King:
楼主你好,根据手册里的频率和电压的关系图,随着供电电压的降低,msp430f4152的运行最高频率会下降。
但像楼主说的在2.1v降到1MHz的情况,觉得可能还有其他原因。
Long King:
回复 灰小子:
首先感谢楼上的回答,我是外部接了32768hz的低频晶振,4152自带fll+,所以可以稳定在7.99Mhz,我又做了一些测试,按照上面的方法,进入LPM2,然后再进入中断中while(0x01),再量频率,电压变化,频率并不会变。所以LPM2也没有测试,目前看下来就是LPM3不行,发现LPM3和LPM2也就是一个DC generator的区别,这个是什么?另外LPM4也没有测试,我稍后测试一下看看。
Long King:
回复 Long King:
经测试,LPM4跟LPM3一样,也会变,目前看来只要DC generator关闭的状态,中断醒来后,在电压变化情况下(有效范围内,2.0-3.0),频率都会变化。