大家好
我最近在用28035进行ADC测试,使用官方F2803XILEG_VDC.H 头文件的ADC_MACRO_INIT宏,进行了一些修改如下,用定时器触发ADC转换,使用的是内部参考电压,但现在调试结果是输入低于1.4V电压没有采样值,高于1.4V才开始有采样值(从0开始)例如:输入1.8V,采样到1F5,换算后是0.4V(是把1.4当做起始值吗?),各位高手帮忙看看我的ADC初始化程序是不是错了,谢谢各位了。
#define ADC_MACRO_INIT(ChSel,Trigsel,ACQPS) \
asm(" RPT#100 || NOP"); \
\
AdcRegs.ADCCTL1.all=ADC_RESET_FLAG; \
asm(" NOP "); \
asm(" NOP "); \
\
EALLOW; \
AdcRegs.ADCCTL1.bit.ADCBGPWD = 1; /* Power up band gap */ \
\
\
\
AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; /*选择内部参考电压*/ \
AdcRegs.ADCCTL1.bit.ADCREFPWD = 1; /* Power up reference */ \
AdcRegs.ADCCTL1.bit.ADCPWDN = 1; /* Power up rest of ADC */ \
AdcRegs.ADCCTL1.bit.ADCENABLE = 1; /* Enable ADC */ \
\
asm(" RPT#100 || NOP"); \
\
AdcRegs.ADCCTL1.bit.INTPULSEPOS= 1; /*ADC转换后把结果锁存在结果寄存器*/ \
AdcRegs.ADCCTL1.bit.TEMPCONV= 0; \
AdcRegs.ADCCTL1.bit.VREFLOCONV = 0; \
\
\
/*AdcRegs.ADCCTL2.bit.CLKDIV2EN = 1; ADC时钟分频 */ \
while(delay_cout >1) { delay_cout--; } /*延时1MS*/ \
\
AdcRegs.SOCPRICTL.bit.RRPOINTER = 1; /*循环指针返回指向SOC1*/ \
\