搜索
bottom↓
回复: 9
打印 上一主题 下一主题

求教!ads7841不出数据

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2006-10-19 22:45:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用c写ads7841但始终数据不出,拿示波器看了一下时序,BUSY在控制字写后没有置高,DOUT在控制字写后没变,DOUT只在写控制字的时候有变化,偶尔读出来数据全高,很奇怪啊

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

2
发表于 2006-12-5 11:38:56 | 只看该作者
我也遇到了问题,读出数据不对,跟你的现象不同,我用存储示波器观察,dclk时序正确,先是八个上升沿触发脉冲输入din设置控制字,同时dout有数据输出(疑问??困惑),busy由低变高再补偿一个脉冲,busy由高变低,接着16个下降沿触发脉冲输出dout,结果每次输出结果变化太大,比如参考电压5v,4通道单端输入,在ch0输入0v  输出结果为964或者418或者672等等反正每次输出结果变化太大,各位大虾也帮分析一下。

出0入0汤圆

3
发表于 2006-12-7 10:32:30 | 只看该作者
经过几个加班终于搞定了,还的多谢网络的强大,参考了一个国外的博客,源代码(不是针对51单片机的,似乎像是32位芯片)写的很好,整理后为自己所用,不敢独自分享,贡献出来为以后的兄弟们参考,为网络源代码共享添块砖加片瓦,详细如下:

/*******************************************************************************

** 函数原型:unsigned int ADS7841_Read_Data(unsigned char Channel);

** 功    能:SPI总线的A/D ADS7841 驱动程序

** 入口参数:unsigned char Channel   表示选择读取通道

** 出口参数:unsigned int   返回所读取得12位数据。

** 说    明:ADS7841为12位A/D,先对其进行设置:数据位D0---D7,其中D0---D1是

**           设置ADC的功耗模式,D2是模拟输入通道设置,H为4个单通道,L为两个

**           差分输入,D3为mode,当mode(pin)接地时为12位采样方式,接高电平时

**           mode为1时8位采集,为0时12位采集,D4---D6为输入通道选择,D7为起始位

** 作   者: 绝鱼 nobody_008@163.com

** 日   期: 2006年11月09日

**-------------------------------------------------------------------------------------------------------

** 修 改 人: 绝鱼 nobody_008@163.com

** 日   期: 2006年11月06日

*******************************************************************************/

unsigned int ADS7841_Read_Data(unsigned char Channel)          //Channel=0:CH0;1:CH1;2:CH2;3:CH3;

{

        unsigned int ADCResult=0;

        unsigned char DataInput=0;

        unsigned char i,ADS7841_CHANNEL;

        

        switch (Channel)

        {

                case 0:ADS7841_CHANNEL=0x10;break;

                case 1:ADS7841_CHANNEL=0x50;break;

                case 2:ADS7841_CHANNEL=0x20;break;

                case 3:ADS7841_CHANNEL=0x60;break;

                default:ADS7841_CHANNEL=0x10;break;               

        }

        DataInput=ADS7841_S|ADS7841_CHANNEL|ADS7841_MODE|ADS7841_SGL_DIF|ADS7841_POWER_DOWN;



        DCLK=0;

        DIN=0;

        CS=VALID;

        for(i=0; i<8; i++)

        {

          DIN=DataInput&0x80;

          DataInput=DataInput<<1;

          DCLK=0;

          NOP;

          DCLK=1;                       //模拟SPI串行接口 发送数据

        }

   NOP;

   DCLK=0;

              while(BUSY)

              {

   NOP;

   DCLK=1;

   NOP;

   DCLK=0;

             }  /*当BUSY脚由高变为低时,则开始数据输出*/

              NOP;

  for(i=0;i<12;i++)

  {

   DCLK=1;

  ADCResult=(ADCResult<<1)|DOUT;    //模拟SPI串行接口 接收数据

     DCLK=0;

     NOP;

   }

   for(i=0;i<4;i++)

  {

   DCLK=1;

   NOP;

   DCLK=0;

   NOP;

  }

        CS=INVALID;

        return ADCResult;

}

出0入0汤圆

4
发表于 2006-12-31 16:39:51 | 只看该作者
TO:paulw

你好,我的还是不行,有问题

大多时候总是零,有时候会出现一写数据,但是数据不对



能得到你的帮助吗

我的QQ:251133274



谢谢你了

出0入0汤圆

5
发表于 2009-5-8 21:50:56 | 只看该作者
请问我用51单片机控制ADS7841,那么ADS的时钟信号从哪里取得呢??谢谢!!知道的前辈请指导一下

出0入0汤圆

6
发表于 2009-8-22 18:14:39 | 只看该作者
这个得顶一下,有空看看,我最近也写了一个,基本调通了。

出0入0汤圆

7
发表于 2012-6-15 20:44:28 | 只看该作者
我也遇到了这个问题,忙信号时钟为高电平,请教 啊

出0入0汤圆

8
发表于 2012-6-15 20:57:59 | 只看该作者
为什么啊?纠结啊

出0入0汤圆

9
发表于 2015-2-8 10:00:26 | 只看该作者
我现在还做做ads7841
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 18:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表