请问有用过MSP430F5529的AD的吗 对于它的采样周期 如果我使用计时器触发AD采样 比较值是200(即使算上AD采样加转换的时间也可以都按照8MHz计算) 计时器的时钟频率是8MHz(无分频) 那么我的采样频率是40K左右吗? 如果不是 我要怎么计算它的采样周期? 十分感谢
在我的程序中 经过测试 不是40K左右 通过看采样点数 在20K左右 是什么原因 十分感谢
代码如下
WDTCTL = WDTPW + WDTHOLD;
//初始化时钟
UCSCTL3 = SELREF_2; UCSCTL4 |= SELA_2; UCSCTL0 = 0x0000; do
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
SFRIFG1 &= ~OFIFG; }while (SFRIFG1&OFIFG);
__bis_SR_register(SCG0); UCSCTL1 = DCORSEL_5; UCSCTL2 |= 249; // (624 + 1) * 32768 = 20MHz
__bic_SR_register(SCG0); // Enable the FLL control loop
//初始化ADC
P6SEL = 0x10; //使能ADC输入通道6.4
REFCTL0 &= ~REFMSTR; ADC12CTL0 = ADC12ON+ADC12MSC+ADC12SHT0_1+ADC12REFON+ADC12REF2_5V; //打开ADC12 设置多次转换 设置采样间隔 打开参考电压 设置为2.5V
ADC12CTL1 = ADC12SHP+ADC12CONSEQ_2+ADC12SSEL_3; //是否分频注意 //选择采样定时器作为采样触发信号 采样模式单通道多次转换 ADC参考时钟源SMCLK
ADC12MCTL0 = ADC12SREF_1+ADC12INCH_4; // Vr+=Vref+ Vr-=AVSS 选择6.4通道
ADC12CTL2 = ADC12RES_2; //ADC12分辨率控制位 12位 需要13个时钟周期的转换时间 可以分频 delay(48); //延迟 是参考电压稳定
ADC12CTL0 |= ADC12ENC; //使能转换
//初始化TA0
TA0CCTL0 = CCIE; //比较器中断使能 时钟源选择SMCLK
TA0CCR0 = 200; //比较值设为200,
TA0CTL |= MC_1 + TASSEL_2 + TACLR; //时钟为SMCLK,比较模式,开始时清零计数器
xinxin mao:
首先要搞清楚什么是adc的采样率,并不是你读取的速度是20k就是20k的采样率,你非要要求的话 ,只有把adc的时钟分割,就可以了,其他的并不需要设置,不过按照我之前的经验的话,这个东西不是无限可以分频的,所以如果你要20k的 就只有买20k的adc ,本身mcu的adc不能有那么低的采样率。
灰小子:
回复 xinxin mao:
建议参考http://www.ti.com/cn/lit/pdf/slau208,里面讲的比较详细。
SeaFesse:
采样率 是 1秒钟对信号进行的采样点数。你的采样保持时间必须是小于两个采样点的时间间隔。
其次,为了保证采样到的数据可以还原原始模拟波形,采样率必须是被采信号的2倍以上。
真正理解这两句话,你就有答案了。
user2000895:
AD本身的采样率你设置了没有,你设置的这个只不过是你读数据的速度,并不能算真正的AD采样率!