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

TMS320F2835 adc连续采样

我现在想采集adc2的值,用软件触发,连续采样,我的设置如下:

AdcRegs.ADCCTL1.bit.INTPULSEPOS = 0;

AdcRegs.INTSEL1N2.bit.INT2E = 0;//关闭中断
AdcRegs.INTSEL1N2.bit.INT2CONT = 1; //连续模式
AdcRegs.INTSEL1N2.bit.INT2SEL = 0x10; //选择无效
AdcRegs.ADCSOC1CTL.bit.CHSEL = 2; //将ADCINA2映射到通道1
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0;//软件触发

//
// set SOC1 S/H Window to 7 ADC Clock Cycles, (6 ACQPS plus 1)
//
AdcRegs.ADCSOC1CTL.bit.ACQPS = 6;
EDIS;
AdcRegs.ADCSOCFRC1.bit.SOC1=1;

然后我每次读的时候:

AdcRegs.ADCSOCFRC1.bit.SOC1=1;//软件触发
adc_tmp=AdcResult.ADCRESULT1;//读值

如果我改成这样:

//AdcRegs.ADCSOCFRC1.bit.SOC1=1;//软件触发

adc_tmp=AdcResult.ADCRESULT1;//读值

就读不出数来,也就是说,我把软件触发关闭,adc值就读不出来,那么这个AdcRegs.INTSEL1N2.bit.INT2CONT = 1; //连续模式有什么意义呢?如果每次我读取都需要软件触发的话,这个连续方式作用不大啊,我的理解是我把连续模式打开后,我只要软件触发一次后,我读取adc_tmp=AdcResult.ADCRESULT1;的值都会成功,因为我把连续模式打开了,如果不是这么理解的话,那么这个连续模式是怎么理解的呢?在什么情况下才有用呢?

Susan Yang:

参考用户指南,该位设置后会强制给通道产生SOC信号,从而实现连续采样

user6392471:

回复 Susan Yang:

按照这个回答,那不就是我只要设置一次AdcRegs.ADCSOCFRC1.bit.SOC1=1;然后我每次adc_tmp=AdcResult.ADCRESULT1;读取数据,都应该有数据的,但是实际情况却是如果我只设置一次AdcRegs.ADCSOCFRC1.bit.SOC1=1;后,只能读取一次adc_tmp=AdcResult.ADCRESULT1;这个值,当我的ADC端口电压变化后,adc_tmp=AdcResult.ADCRESULT1并没有改变。这是为什么呢?

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F2835 adc连续采样
分享到: 更多 (0)