TI中文支持网
TI专业的中文技术问题搜集分享网站

msp430F6638由定时器触发ADC12采样的频率问题

我打算通过定时器来触发ADC采样,但是无论如何调整都无法改变定采样频率,相关代码如下:

时钟设置:

UCSCTL0 = 0x0000; 
UCSCTL1 = DCORSEL_5; 
UCSCTL2 = FLLD_1 | 374; // DCO=12MHz

ADC12设置:

P6SEL = 0x0F; // Enable A/D channel inputs
ADC12CTL0 = ADC12ON + ADC12MSC + ADC12SHT0_8; // Turn on ADC12, extend sampling time to avoid overflow of results
ADC12CTL1 = ADC12SHP + ADC12CONSEQ_3 + ADC12SHS_1; // Use sampling timer, repeated sequence
ADC12MCTL0 = ADC12INCH_0 + ADC12SREF_1; // ref+=AVcc, channel = A0
ADC12MCTL1 = ADC12INCH_1 + ADC12SREF_1; // ref+=AVcc, channel = A1
ADC12MCTL2 = ADC12INCH_2 + ADC12SREF_1; // ref+=AVcc, channel = A2
ADC12MCTL3 = ADC12INCH_3 + ADC12SREF_1 + ADC12EOS; // ref+=AVcc, channel = A3, end seq.
ADC12IE = 0x08; // Enable ADC12IFG.3
ADC12CTL0 |= ADC12ENC; // Enable conversions

定时器TA0设置:

TA0CCR0 = 10000; // PWM Period,1.2kHz

TA0CCTL1 = OUTMOD_7; // CCR1 reset/set

TA0CCR1 = 2000;

msp430f663x的手册上说当ADC12SHS设置为1时,ADC12的采样由TA0.1触发,按照如上设置,我的AD采样频率应该是1.2kHz,我用AD对50Hz的工频信号进行采样,理论上24个点就能够采集一个周波。但是通过调试,我发现实际上却需要90多个点才行,也就是说这使的采样频率只有1.2kHz的四分之一左右,并且更重要的是,无论我怎么改变TA0CCR0和TA0CCR1寄存器的值,采样频率都不会改变。

所以我想请问一下,是我设置的不对,还是哪里出了问题?

灰小子:

你的定时器的时钟频率是多少?

一个adc采样的周期包括采样保持时间和转换时间,手册里有介绍,可以计算出一个周期需要多少时钟周期。

赞(0)
未经允许不得转载:TI中文支持网 » msp430F6638由定时器触发ADC12采样的频率问题
分享到: 更多 (0)