微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADC124S021读数据有误

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?请用示波器监测一下信号波型。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top