|
这种高精度的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;
}
|
|