打印
[数据转换器-信号链]

大神,求助

[复制链接]
1166|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
斗转乾坤|  楼主 | 2014-6-24 00:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AD, ui, ADC, dc, TI
求各位大神解救:
     我用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);
}

相关帖子

沙发
xyz549040622| | 2014-6-24 06:03 | 只看该作者
你可以抓波形试试,看看DIN脚的数字量是否与你MCU读到的数据一致,由此来判断是硬件问题还是软件问题,一般是你程序的问题

使用特权

评论回复
板凳
斗转乾坤|  楼主 | 2014-6-24 07:06 | 只看该作者
xyz549040622 发表于 2014-6-24 06:03
你可以抓波形试试,看看DIN脚的数字量是否与你MCU读到的数据一致,由此来判断是硬件问题还是软件问题,一般 ...

我已解决,谢谢了:lol

使用特权

评论回复
地板
mmuuss586| | 2014-6-24 08:37 | 只看该作者

解决了就好;
也不分享解决的经验;

使用特权

评论回复
5
斗转乾坤|  楼主 | 2014-6-24 15:09 | 只看该作者
mmuuss586 发表于 2014-6-24 08:37
解决了就好;
也不分享解决的经验;

其实就是程序中多了DOUT=0;只要把这语句删掉就行了:D:lol,真是小小问题搞死人

使用特权

评论回复
6
歇斯底里| | 2017-7-13 19:41 | 只看该作者
斗转乾坤 发表于 2014-6-24 15:09
其实就是程序中多了DOUT=0;只要把这语句删掉就行了:D:lol,真是小小问题搞死人 ...

你好,我想问一下 你的程序里
if(i<9)
    { ad_channel = ad_channel << 1;  //取高位
           DIN = CY;
    }

CY代表什么

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

70

帖子

2

粉丝