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

P0_4用作adc时出现的问题

我现在用p0_4来ADC,P0_2和p0_3用作485通信,输入的电压通过560k 和220k电阻分压, 220k电阻接地,若在220k 并联100nf的电容,测试到的电压为4037,若把100nf电容去掉,则测试到的电压为2567mv,现在是采用的12 bit的分辨率,ad ref是内部的1.25v。单次触发ad方式,请大家帮我分析是什么问题,谢谢。

/******************************************************************************
*函 数 名:InitADC
*功 能:ADC初始化
*入口参数:参考电压 reference、转换通道 channel、分辨率resolution
*出口参数:ADC转换结果
******************************************************************************/
uint16 Read_advalue(uint8 reference, uint8 channel, uint8 resolution)
{
uint16 value; uint16 buf=0;
uint8 loop;
uint8 tmpADCCON3 = ADCCON3; APCFG |= 1 << channel ; //设置ADC输入通道,模拟I/O使能
delay_us(20000); for(loop=0;loop<10;loop++)
{ ADCIF = 0; ADCCON3 = (reference | resolution | channel);
//
while(!ADCIF); //等待 AD 转换完成 value = ADCL >> 2; //ADCL 寄存器低 2 位无效
value |= ((uint8)ADCH << 6); //连接AD转换结果高位和低位 buf+=value;
}
buf/=10;
value=buf;
//根据分辨率获得ADC转换结果有效位 switch(resolution)
{
case ADCCON2_SDIV_64: value >>= 7;break; //7 bit ad
case ADCCON2_SDIV_128: value >>= 5;break; //9 bit ad
case ADCCON2_SDIV_256: value >>= 4;break; //10 case ADCCON2_SDIV_512: value >>= 2;break; //12bit
default:;
} ADCCON3 = tmpADCCON3;
return (value);

cedar_xuesong:

先单独接一个电压表,看看两种情况下,实际电压各是多少

然后对于TI的ADC,精度没有标称的那么高,要多次采样求平均,适当增加一些延时

赞(0)
未经允许不得转载:TI中文支持网 » P0_4用作adc时出现的问题
分享到: 更多 (0)