求各位大神解救:
我用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);
}
|