3984|6

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

谁有AD7731的C程序,能提供参考下吗? [复制链接]

用51单片机做数据采集,谁有AD7731的C程序,能提供参考下吗?我实在是没辙了,调试了很久了
我邮箱  279201105@qq.com  万分感谢

最新回复

我之前写的是带返回值的,但是现在又个问题,我在写模式寄存器之后写校准参数的时候,等待Rdy拉低的时候,在这个地方死循环了,也就是说,校准没成功,偶尔这个地方有可以成功,这是什么原因呢?  详情 回复 发表于 2010-4-12 11:20
点赞 关注

回复
举报

86

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
有什么问题摆出来嘛,大家一起分析分析
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
不就是个SPI通信吗
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
这是我的初始化程序,写程序和读程序,两位帮帮看下,正确吗?我烧进去没任何反应,读回来的数据也不对
/**********************************************************************
* 名称 : ADCinit()
* 功能 : AD芯片初始化函数
* 输入 : 无
* 说明 : 对任何寄存器的读或者写之前都必须通过对通信寄存器来实现
         当寄存器是16位的时候 ,可以将其分解成为两个8位连续发送
                 两次,只是要注意发送的连续性,不能间隔时间,而且要注意
                 发送的顺序必须是高8位在前...............O(∩_∩)O哈哈~
***********************************************************************/
void ADCinit()
{
        WriteAdc(0x03);
        /*通信寄存器,选择写滤波寄存器*/
        WriteAdc(0x80);
        WriteAdc(0x04);
        /*设置滤波寄存器,CHP=1(使用补偿),SKIP=0(使用FIR),FAST=0(单步方式)*/
        WriteAdc(0x02);
        /*通信寄存器,选择写方式寄存器*/
        WriteAdc(0xb1);
        WriteAdc(0xb4);
        /*模式寄存器:内部满刻度校准,单极性,0-80mv,24位,5V(VREF)AIN1-AIN2差分输入*/
}
/**********************************************************************
* 名称 : WriteAdc()
* 功能 : 写8位的数据到AD7731
* 输入 : WriteData
* 说明 : 高字节先发送的算法,WriteData&temp,temp的最高位是1(0x80),
         在进行与运算之后,如果是0的话,与运算的结果是0;如果是1的话
                 与运算的结果是1,即程序描述的DIN=0或者DIN=1,得到运算结果之
                 后送给DIN,即表示把要发送的数字发给了AD7731...O(∩_∩)O哈哈
**********************************************************************/
void WriteAdc(uchar WriteData)
{
    uchar i;
        uchar temp=0x80;
        Cs=0;                                          /*片选信号,选定AD7731*/       
    for(i=0;i<8;i++)              /*循环移位八次*/
       {
                           Sclk=0;                          /*下降沿*/
                        if((WriteData&temp)==0x80)/*取出最高位*/
                                Din=1;                  /*发送数据,必须是高字节先发送*/
                        else
                                Din=0;
                        Sclk=1;                   /*先写好数据给时钟*/
                        WriteData=WriteData<<1;/*向左移一位,把最高位移除*/
             }
        Cs=1;                                          /*关闭片选信号*/                       
}
/**********************************************************************
* 名称 : ReadDataAdc()
* 功能 : 从AD7731读取转换后的数据函数
* 输入 : 无
* 说明 : 带返回值
***********************************************************************/
void ReadDataAdc()
{
        uchar Data24;                          /*等价于unsigned long int 长整形数据*/
        uchar a;                                 /*数据位数*/
        Data24=0x00;                            /*哈哈,别忘了这是四个字节的*/
        Cs=0;
        for(a=0;a<8;a++)                 /*采集的数据为24位数据,循环采集24次*/
        {  
                Sclk=0;       
                if(Dout==0)
        Data24=Data24<<1;             /*左移一位。先接收的位移到高处,即最高位 */                                          
            if(Dout==1)
                {
               Data24=Data24<<1;Data24=Data24+0x01;             /*加输出数位*/
                        Sclk=1;
                }
                if((a==7)|(a==15))  
                {
                        Data24=0x00;
                }
        }         
        Cs=1;
        return(Data24);                         /*返回数据*/
}
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 
你的void ReadDataAdc()有问题,要有返回值,你写的无法返回,改为 uchar ReadDataAdc()
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
你的void ReadDataAdc()有问题,要有返回值,你写的无法返回,改为 uchar ReadDataAdc()
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

7
 
我之前写的是带返回值的,但是现在又个问题,我在写模式寄存器之后写校准参数的时候,等待Rdy拉低的时候,在这个地方死循环了,也就是说,校准没成功,偶尔这个地方有可以成功,这是什么原因呢?
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表