ADC124S021读数据有误
时间:10-02
整理:3721RD
点击:
我用TI的ADC124S021读数据,信号420mv正常,但是在信号470mv时数据不再变化,直到500多mv,数据直接从470跳到了512,什么问题?(因为网上代码都是用到中断,用中断进行SCLK变化会使我的系统死机了,所以没有用中断)。
uint ad124s021 () { uchar ValH,ValL; uint i,j; uint return_val;//返回值 uchar ad_channel;//ADC通道 for (j=0;j<2;j++)//循环读两次数据,取第二次的值 { ad_channel = 0x00;//通道1 ValH = 0; //数据高位 ValL = 0; //数据低位 SCLK1 = 1; //时钟线 CS1 = 0; //使能线 DOUT=0; //输出线 for (i = 1; i < 17; i++) { if(i<9) { ad_channel = ad_channel << 1; //取高位 DIN = CY; } SCLK1 = 1; SCLK1 = 0; SCLK1 = 1; if(i>=5&&i < 9) { ValH =ValH|DOUT; if(i!=8) ValH = ValH << 1; } if (i >=9) { ValL = ValL|DOUT; if(i!=16) ValL = ValL << 1; } } CS1 = 1; DOUT=0; //停止转换 return_val = (((uint)ValH*256)+(uint)ValL); } return (return_val); }
请上传一下ADC部分的原理图。另外你用的是什么型号的MCU?请用示波器监测一下信号波型。