找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5838|回复: 1
收起左侧

关于24位高精度的AD芯片 AD7999底层驱动

[复制链接]
ID:302379 发表于 2018-4-5 14:26 | 显示全部楼层 |阅读模式
这种高精度的AD,可应用于:电子秤的制作。因为电子秤输出的是差分信号,且信号较为灵敏,必须得用分辨率较高的AD芯片。

疑问?  虽然底层驱动,半当半自写的,但是还有一个疑问为嘛AD7799不能同时开启两个通道?亦或是切换通道?
            AD7799的1通道有什么特殊之处???



/*************************************************************
  函 数 名   :AD7799_Init()
  函数功能   :AD7799的功能配置及初始化
  输    入   :
  输    出   :
  说    明     :根据需要对AD7799的功能配置
  作    者     :hyp
***************************************************************/
//AD初始化
void AD7799_Init()
{
          AD7799_CS=0;
        Delay1ms(5);
/*-------------------增益为128,通道为0------------------*/
        WriteByteToAD7799(0x10);   //写通信寄存器设置下一个操作为配置寄存器
        Delay1ms(2);
/*--------------------------------------------------------------------------------------------------------------------------------  
0x37  0x22 的意义:配置寄存器(16位)
            高8位的高4位:B0(电流使能位)为1,置1的条件是:缓冲器或增益必须大于1  
                          U/B 为1,单极转换码 零差分输入范围(000000H--FFFFFFH)
                              为0,双极转换代码 负满刻度输入 000000H  零刻度差分输入 800000H  满刻度 FFFFFFH
            高8位的低4位:增益位    增益范围1~128 配置请参见手册

            低8位的高4位:    REF-DET 位为1  参考保护使能 ,外部ADC参考电压断路或小于0.5V 状态寄存器内部的NOREF给出指示
                            BUF 位为1      开启内部缓冲器 开启条件 增益必须大于2(高增益)增益1或2时 缓冲器关闭
                                  为0      ADC为非缓冲模式,以降低系统功耗  
            低8位的低4位: 通道选择位      0000  1通道   0001  2通道    0010 3通道(较为特殊)    0111AVDD电源检测,一般不这样设置
                                       
----------------------------------------------------------------------------------------------------------------------------------*/                                               
         WriteByteToAD7799(0x10);
         WriteByteToAD7799(0x21);
   
        //WriteByteToAD7799(0x37);       //设置增益为128  设置增益的时候请务必查阅手册 是否对应你的ADC电压输入范围   
        //    WriteByteToAD7799(0x22);      //REF-DEF=1 参考保护使能 通道选择为1    通道1 000  通道2  001   通道3  010
        Delay1ms(2);                 //(22H)3通道为1级放大       (21H) 2通道 2级放大
/*-------------------写模式寄存器初始化,零值校准------------------*/
        //WriteByteToAD7799(0x08);     //写通信寄存器设置下一个操作为写模式寄存器
        //WriteByteToAD7799(0x80);
    //    WriteByteToAD7799(0x0A);
        //Waite_DOUT();
/*-------------------写模式寄存器初始化,全值校准------------------*/
        //WriteByteToAD7799(0x08);     //写通信寄存器设置下一个操作为写模式寄存器
    //    WriteByteToAD7799(0xA0);
    //    WriteByteToAD7799(0x0A);
        //Waite_DOUT();
/*-------------------模式0(连续转换模式),转换速率:10HZ  200ms  69DB--------------------------*/
/*--------------------------转换速率可根据实际需要查看手册调整----------------------------------*/                        
        WriteByteToAD7799(0x0c);    //RS2 RS1 RS0  001(模式寄存器16bits) CREAD=1 数据寄存器连续读操作位
        Delay1ms(2);
        //配置写模式寄存器为低电平接地,操作模式为连续转换,频率为50HZ
        WriteByteToAD7799(0x01);
        WriteByteToAD7799(0x05);
        Delay1ms(2);
        WriteByteToAD7799(0x5c);  //设置AD为连续转换可读模式。
        AD7799_DIN=0;
}


AD7799底层驱动.zip

54.27 KB, 下载次数: 30

回复

使用道具 举报

ID:302379 发表于 2018-4-5 14:32 | 显示全部楼层
忘了说了,单片机用的是51内核的, STC15F60S2 or IAR15F61S2都可以的。
这个驱动是前一段做高精度电子秤用的。 这个只是单纯的AD采集然后串口打印。
若果大家做微小信号的采集,可以试试这个片子。 就是有点贵了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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