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

急!急!急!,ADC读出数据不对

时间:10-02 整理:3721RD 点击:

uint ad124s021 ()

 { uint ValH,ValL;   uint i,j;  

 uint return_val=0;//返回值  

 uint ad_channel;//ADC通道  

 CS1 = 1;   CS1 = 0; //使能线   

  for (j=0;j<4;j++)//循环读两次数据,取4次的值  

 {           ad_channel = 0xc7;//通道1    

  ValH = 0;     //数据高位    

  ValL = 0;      //数据低位    

  SCLK1 = 1;     //时钟线       

   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<<1)|DOUT;        

   }             

  if (i >=9)           

    {      

ValL =(ValL<<1)|DOUT;       

    }              

  }   

  return_val+= ((ValH<<8)+ValL);   

      }

   CS1 = 1;

  return (return_val>>2);求平均数

}

SCLK1 = 1;      SCLK1 = 0;     SCLK1 = 1;

没有说你的mcu 类型, 这样处理可能速度太快, 中间加点延时吧

SCLK1 = 1;      SCLK1 = 0;     SCLK1 = 1;

没有说你的mcu 类型, 这样处理可能速度太快, 中间加点延时吧

Hi Fushuang,

为了能让我们更好地帮助你解决问题,能否更具体地介绍一下你现在所遇到的问题?用的是那款ADC,是怎么连接的?

谢谢合作!

Br

Martin

应该是中断没有处理好。

您用的是哪款单片机,还有AD芯片是那一款。转换的时候,是需要适当的延时的。

你给的信息不够详细,无法解答。建议你把ADC型号和MCU型号都列举出来,把电路原理图也放出来。

另外,读取出错大多数原因都是寄存器没有配置好,电气连接有问题,或者是受到了干扰。

最好把读取出来的数据也发送出来以便检查问题所在。

SCLK1 = 1;      SCLK1 = 0;     SCLK1 = 1;这速度太快了吧,建议加点延时。。

中断也没有处理好。有没有检查下中断呢?

你把这个语句SCLK1 = 1;      SCLK1 = 0;     SCLK1 = 1;  

换为以下:

SCLK1 = 1;      NOP;   NOP;   NOP;   NOP;   NOP;   NOP;  

SCLK1 = 0;     NOP;   NOP;   NOP;   NOP;   NOP;   NOP;  

SCLK1 = 1;  NOP;   NOP;   NOP;   NOP;   NOP;   NOP;  

你用的ADC是哪一个型号呢?不同的ADC对时序的要求也不是很一样。

LZ  能不能将你的程序发给我一下,我也在做这个芯片的程序,谢谢, 邮箱:916208723@qq。com

我怎么没看出来上面讨论的是那一颗ADC呢!

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

网站地图

Top