DSPIC33 ADC转换时间

时间:2017-04-08 17:50:42

标签: c pic adc dspic

我的代码有问题; 我的目标是创建一个代码,从ADC每秒需要8000 - 10000的值。 现在我写了一个测试代码来配置ADC,但根据我的计算,ADC转换时间应该是:

* Tad=Tcy*(adcs+1)=(1/40)*4 = 1.6us
* Tc = 14 * 1.6 = 22.4 us

,但在MPLAB中,当我使用StopWatch时,我发现1次转换需要将近5 ms。

配置:

DSPIC33FJ128MC802
FRC + PLL -> ~ 80 MHz
FCY 40 MHz

ADC配置功能

void adc_init(){

AD1CON1bits.ADON=0;
AD1CON1bits.AD12B = 1;
AD1CON1bits.FORM = 0; 
AD1CON1bits.SSRC = 0; //
AD1CON1bits.ASAM = 0; 
AD1CON2bits.CSCNA = 1;
AD1CON2bits.CHPS = 0; 
AD1CON2bits.SMPI = 0; 
AD1CON3bits.ADRC = 0;
AD1CON3bits.ADCS = 63; 
AD1CSSLbits.CSS3 = 1; 
AD1PCFGL=0xFFFF; 
AD1PCFGLbits.PCFG3 = 0;

IPC3bits.AD1IP = 6; 

AD1CON1bits.ADON = 1; }

读取ADC值的功能

unsigned int read_adc_value(void){
AD1CON1bits.SAMP = 1; // start 
//while(!AD1CON1bits.SAMP);
__delay_us(10);
AD1CON1bits.SAMP = 0; // stop 
while(!AD1CON1bits.DONE);
return ADCBUF0;}

0 个答案:

没有答案