16位高性能低功耗A/D转换器AD7705及其应用 沈国民 王欢 谢军龙 (华中科技大学 武汉,430074) 摘要:介绍了16位高性能、低功耗A/D转换器AD7705的特点,并给出了AD7705结合8031单片机进行压力测量的硬件接口电路及软件编程方法。 关键词:A/D转换器单片机压力测量 ABSTRACT:The paper describes the characters of the high—performance,low—power A/D converter AD7705,introduces its application for pressure measurement with a single chip mierocomputer8031. KEYWORDS:A/D Converter Single chip microcomputer Pressure measurement 1 AD7705简介 1.1 主要性能 AD7705是美国AD公司新近推出的一种低成本、高分辨率A/D转换器,它适用于宽动态范 围测量、工业控制或工艺控制中的低频信号的转换。是用于智能系统、微控制系统和基于DSP系统的理想产品。其功能框图如图1所示。它具有如下功能及特点: (1)双通道全差分模拟输入,可接受直接来自传感器的低电平的输人信号; (2)用Σ一△转换技术实现了16位无丢失代码性能,0.003%的非线性度; (3)可编程增益前端,增益:1—128; (4) 可配置成三线串行接口; (5)信号极性以及更新速率的选择可用串行输入口由软件来配置; (6)该器件包括自校准和系统校准选项,以消除器件本身或系统的增益和偏移误差; (7) 只需2.7~3.3V或4.75~5.25V单电源; (8) CMOS结构确保器件具有极低功耗,3V电压时,最大功耗为lmV; (9)等待或掉电模式下,器件消耗的电源电流仅为10ptA; (10)主时钟频率为1MHz或2.4576MHz,数据输出更新频率有20Hz、25Hz、100Hz、200Hz、 50Hz、60Hz、250Hz、500Hz八种选择。
AD7705的引脚排列如图2所示。其中SCLK, 串行时钟输入;MCLK IN/MCLK OUT,主 主时钟信号输入/输出;CS,片选信号,低电平有效;RESET,复位输入端;AIN2(+)/AIN2(-),差分模拟输入通道2的正/负输入端;AINl(+)/AINl(-),差分模拟输入通道1的正/负输入端;DRDY,数据输出准备,当它为低电平表示可从AD7705的数据寄存器中获取新的输出字;DOUT/DIN,串行数据输出/输入端;电源电压,+2.7V一+5.25V;GND,内部电路的地电位基准点。 1.3工作时序 AD7705的读写时序如图3所示。 注意在读写过程中串行数据的传输顺序为高位在先,低位在后,这与8031串行口的数据传输顺序恰好相反。另外,在读取A/D转换结果时,需先检测丽位,只有在该位为低电平时,才能读取已更新的A/D转换结果。 1.4片内寄存器 AD7705片内包括8个寄存器,其编程功能是通过对寄存器的设置来控制的,对这些寄存的读/写操作通过器件的串行接口来完成。 第1个是通信寄存器,它管理通道操作,决定下一个操作是读操作还是写操作,以及下一次读或写哪一个寄存器。所有与器件有关的通信必须从写入通信寄存器开始。上电或复位后,器件等待在通信寄存器上进行一次写操作,即接口的默认状态。在接口序列丢失的情况下,如果在DIN为高电平时的写操作持续足够长的时间(至少32个串行时钟周期),AD7705将会回到默认状态。此外,通信寄存器还控制等待模式和通道选择,DRDY的状态也可从它上面读出。下表即为通信寄存器的各位说明。 其中,0/DRDY位状态与DRDY引脚状态相同;RS2~RS0,寄存器选择位;R/W,读/写操作选择;STBY为高电平则处于等待或掉电模式;CHl~CH0,通道选择。 第2个是设置寄存器,决定校准模式、增益设置、单/双极性输入以及缓冲模式。 第3个是时钟寄存器,包括滤波器选择和时钟控制位。 第4个是数据寄存器,它是16位只读寄存器,器件输出的数据从这个寄存器读出。 最后是校准寄存器组,它存储通道校准数据,包括测试寄存器、零标度校准寄存器和满标度校准寄存器。 2 AD7705的应用 AD7705灵活的串行口使其能很容易地与大多数微处理器进行连接,而且AD7705具有上述的多种优点,因而可将它直接与各种传感器相连,构成对采样速率要求不高的数据采集系统。下面介绍一种AD7705结合8031单片机进行压力测量的硬件接口电路及编程方法。 2.1硬件接口电路 接口电路如图4所示。 在此应用中,压力传感器被安装在一个桥式电路中,在它的OUT(+)和OUT(一)端输出差分输出电压。桥式电路的激励电压用来为AD7705产生基准电压,因此,激励电压的变化不会造成系统内的误差。AD7705的第2个通道作为一个辅助通道来测量另一个变化,如温度,以便消除温度对系统的影响。将AD7705的CS直接接低电平,与8031单片机可采用2线连接。由于8031单片机的串行口通常用来与上位机进行通信,在这种情况下,把AD7705的DO叭’和DIN线接在一起并与8031的P1.10相连以实现串行数据的输入和输出,同时必须使用一个100k12的上拉电阻。P1.1用来输出串行时钟信号。DRDY的状态通过访问通信寄存器的首位(MSB)得到,以确认数据寄存器是否进行过更新。 2.2 AD7705的编程 以上具体说明如何对AD7705进行编程。为避免赘述,在本例中假定只选择通道1作为有效通道(对通道2的数据采集编程可参照通道1),工作条件是增益为1,没有滤波同步,双极性模式,无缓冲,4.9512MHz的时钟和50Hz的输出更新速率。采集一次模拟信号的流程图如图5所示。由于C语言既有一般高级语言的特点,又能直接操作系统硬件,而且具有良好的可移植性,所以用C语言进行程序设计是单片机开发与应用的必然趋势。 本例采用Franklin C51编写源程序,如下: #include<re951.h> #define uchar unsigned char sbit P1-0=P1^0: sbit P1-1=P1^1; sbit ACC-0=ACC^0; uchar RLC(a)/*左循环移位一位*/ {uchar a,b,C; b=a》7; C=a《1; a=clb: return(a); } void Writetoreg(a)/*移位写入8位数据*/ {uchar i,a; for(i=0;i<=7;i++) {P1—0=1,P1—1=O; ACC=RLC(a); P1—0=ACC—O;P1.1=1; } } uchar read()/*移位读出8位数据*/ {uchar i; for(i=0;i<7;i++) {P1—0=1,P1—1=O; ACC一0=P1一O;P1—1=1; ACC=RLC(ACC); } retum(ACC) } void ADC7705(uchar idata*abc)/*一次模拟 数据采集*/ {uchar i,a,reglength=2; Writetoreg(0x20);/*AD7705初始化*/ Writetoreg(0xoc); Writetoreg(0x 10); Writetoreg(0x40); Writetoreg(0x00); a=Read();/*读通信寄存器*/ while(aIxl0)/*判断面i丽位状态*/ {Writetoreg(0x38);/*准备读数据寄存器*7 for(i=O;i<feglength;i++) *adc=Read(); } } 3结束语 AD7705是性能价格比较高的16位串行A/D转换器,它的双输入通道对于需要辅助通道以测定变量用来修正主通道的系统特别适合。AD7705不仅能应用于压力测量,还可以应用于温度测量,以及低功率、单电源的智能发射器和电池监控中。 参考文献 1李朝青.单片机原理及接口技术[M].北京:北京航空航 天大学出版社,1994 2徐爱钧,彭秀华.单片机高级语言C51应用程序设计 [M].北京:电子工业出版社,1998 |
|