文章编号:167121742(2003)0320281206
成 都 信 息 工 程 学 院 学 报
JOURNALOFCHENGDUUNIVERSITYOFINFORMATIONTECHNOLOGYVol.18No.3
Sep.2003
十六位模数转换器AD7705及其应用
敖振浪, 李源鸿, 谭鉴荣
(广东省气象技术装备中心,广东广州510080)
摘要:AD7705是AD公司最近推出的十六位模数转换器。我们主要介绍了它的功能和特点,给出了基于
AD7705实际应用的硬件、软件设计方法,以及部分程序源代码,总结了实际应用中必须注意的几个技术问题。
关 键 词:AD7705模数转换器;应用;设计中图分类号:TP335+.1 文献标识码:A
1 AD7705简介
AD7705是十六位分辨率的A/D转换器,2通道全差分模拟输入,使用+5V单电源,主要应用于低频测量。
它利用了Σ-△转换技术实现了16位无G失代码性能,三线数字接口,可以通过串行输入接口由软件配置芯片的增益值、输入信号极性和数据更新速率,非常灵活方便。具有自校准和系统校准功能,能够消除器件本身和系统的增益以及偏移误差。是用于开发智能系统、微控制器系统和基于DSP系统的理想产品。1.1 主要特点
2个全差分输入通道的ADC,十六位无丢失代码,0.003%非线性;可编程增益:1~128;三线串行接口;具有
模拟输入端缓冲器;工作电压:2.7~3.3V或4.75~5.25V;低功耗,3V电压时,最大功耗为1mW;等待电流的
μ最大值为8A;16脚DIP、SOIC和TSSOP封装。1.2 片内寄存器操作
AD7705包含了8个片内寄存器,这些寄存器通过器件的串行口访问,所有的操作都是通过对寄存器的操作。
第一个是通信寄存器,器件复位后,通信寄存器处于等待状态,通过通信寄存器写操作,决定下一次操作是写还是
读,同时决定这一次读操作或写操作发生在那个寄存器上。也就是说所有的寄存器(包括通信寄存器本身和输出数据寄存器)进行读操作之前,必须首先写通信寄存器,然后才能读选定的寄存器。下面简单介绍寄存器的功能。
通信寄存器
0/DRDY-RS2
RS1
RS0
R/W-STBY
CH1
CH0
0/DRDY-:写操作时此位必须为0,读操作时表示数据寄存器数据是否准备好。RS2,RS1,RS0:寄存器选择位。
R/W-:读写选择。“0”表示下一次是写操作。“1”表示下一次是读操作。STBY:等待模式,写入“0”器件处于正常工作模式。CH1,CH0:通道选择,00选择通道1,01选择通道2。
设置寄存器
MD1
MD0
G2
G1
G0
B-/U
BUF
FSYN
MD1,MD0:工作模式选择位,00为正常工作模式,01为自校准,10为零刻度系统校准,11为满刻度系统校
准。
收稿日期:2002211229;修订日期:2003202218
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
282成 都 信 息 工 程 学 院 学 报 第18卷
G2,G1,G0:增益选择位,00~08分别对应增益值1~128。
B-/U:单极性/双极性择位“,0”表示双极性。
BUF:输入缓冲控制位“,0”表示无缓冲。FSYN:滤波器同步。
时钟寄存器
ZERO
ZERO
ZERO
CLKDIS
CLKDIV
CLK
FS1
FS0
ZERO:必须为0,否则,会导致器件的非指定操作。CLKDIS:主时钟禁止位“,1”禁止时钟在MCLKOUT引脚输出。CLKDIV:时钟分频位。
CLK:时钟位。时钟频率为2.4576MHz时,该位设置为“1”,时钟频率为1MHz时,该位设置为“0”。
FS1,FS0:滤波器选择位,与CLK一起决定器件的输出更新率。如表1。
表1 FS1、FS0与CLK决定的器件输出更新率
CLK*00001111FS100110011FS001010101输出更新率20Hz25Hz100Hz200Hz50Hz60Hz250Hz500Hz注:假定MCLKIN脚的时钟频率正确,CLKDIV位的设置也是适当的。
数据寄存器:这是一个十六位只读寄存器,它包含了最新的转换结果。
测试寄存器:用于测试期间器件,用户一般不用。
零标度校准寄存器和满标度校准寄存器:都是24位,用户一般不用。
2 应用设计
AD7705主要在单片机小系统中应用。本应用实例是一个低频数据采集电路,采用了89C51单片机,下面详细介绍电路设计和软件设计方法。2.1 与单片机的接口
首先介绍AD7705与单片机的连接方法,因为它采用串行接口,使得与大多数单片机很容易连接。AD7705与8xC51单片机的接口电路如图1所示。
图1 AD7705与8XC51单片机的接口电路
在一般的简单系统中,常常只有1片AD7705或其它共用口线的器件,故CS-通常接低电平,节省了单片机的
输出输入控制线,这样就可以配置成三线连接方式。三线连接方式下决定数据寄存器是否被更新也即是确定数
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
第3期 敖振浪等:十六位模数转换器AD7705及其应用283
据寄存器是否可以被读,只有通过监控通信寄存器DRDY-位来判断,这种做法的代价是时间开销较多,它并不适用于时效性要求比较强的系统。比较好的办法是监控硬件DRDY-引脚的状态,以决定数据寄存器是否被更新,硬件DRDY-引脚的输出与通信寄存器DRDY-位同步,DRDY-引脚一旦变成低电平,表明数据寄存器数据已经更新,可以读取。所以DRDY-输出引脚接至CPU的INT0或INT1就可以实现中断或者查询方式的监控。但不管是查询方式还是中断方式,都需要增加一根数据线。在本设计中采用了硬件DRDY-引脚查询的方法。
串行口包含5个信号,即SCLK、DIN、DOUT、DRDY-和CS-,通常直接连接到8xC51对应的引脚P3.0、P3.1、P3.2、P3.3,DIN线用来向片内寄存器传输数据,而DOUT线用来访问寄存器里的数据。SCLK是串行时钟输入,所有的数据传输都和SCLK信号有关,对于与单片机的接口,为确保芯片数据转换可靠,在两次相邻的数据传输之间,应将本SCLK置为高电平。DRDY-线作为状态信号,表示数据什么时候准备好以便从寄存器读取数据。数据寄存器中有新的数据字的时候,DRDY-脚变为低电平。如果在数据寄存器数据更新之前,若DRDY-脚变为高电平,提示这时候不要读数据,避免在数据寄存器更新的过程中读出不可靠的数据。
AD770的读写操作严格按照时序进行,图2给出AD7705读和写时序。
图2 AD7705读、写时序
2.2 实际应用电路设计
我们设计的是一个气象探测仪器的实际应用电路,专门用于温度和湿度的模数转换。因为实时性要求不太
高,因此数据读取采用了查询方法,这种方法对一般的应用是可以满足要求的。在图3电路中,CLCK、DIN、DOUT和DRDY-引脚直接连接80C52的P1.0-P1.3引脚。由CC3和RC5组成的复位电路,通电时,输入引脚RESET-处于低电平,复位所有的逻辑、数据滤波器和模拟调试器,将所有的片内寄存器设置到其默认状态。使用芯片REF195产生+5V基准电压供给AD7705作为参考电压,同时作为温度传感器的激励电流源。注意基准电压输出
μ和1000p去耦电容CC4和CC8,因为微小的噪声电平都会影响转换精度。实际上,由于AD7705端应该并联10
的功耗很小(最大1.1mA),所以在设计中作者将AD7705的电源输入端VDD直接连接到REF195基准电压输出端第6脚上,从而大大减少了电源干扰造成的转换误差。第一通道的输入端加入去耦电路,3个1000p的去耦电容CC5、CC6、CC7和两个10k电阻,因为引入了大电容去耦电路,因此需要AD7705工作于缓冲模式。通道2作为供电电压的监测。
从图3可以看出,AD7705输入基准电压等于+5V,被y输入端input2输入电压负端接地,正端最大输入幅度+0.3V,故增益可以选择8或者16。input1是从+12V电源分压得到2.0V左右,可以选择增益2。注意输入信号
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
284成 都 信 息 工 程 学 院 学 报 第18卷
幅度与增益关系,通道增益太大放大结果会超过基准电压+5V,造成转换结果错误。
AD7705内部只有一套模数转换电路,通道1和通道2的选择通过软件设置进行切换,实际应用中往往需要对不同通道采取不同的增益,动态地对AD7705进行增益、通道设置,很灵活方便地达到这一目的。
图3 气象探测仪电路图
2.3 软件设计
使用AD7705之前,首先要对所有寄存器进行设置,才能保证器件正常工作。在实际使用中,首先选择模拟输入模式(单极性还是双极性)、是否需要缓冲、时钟分频和输出更新速率;根据外部输入信号的幅度来决定设置器件的增益值,本实例里通道1和通道2输入信号都是单极性,但幅度不同,所以循环选择通道,选择相应参数,应用中选择输入通道单极性、初始增益等于8、数据更新速率为250Hz。根据实际确定所有参数以后,对AD7705芯片进行设置,参数设置方法比较独特,在设置参数之前,首先对通信寄存器进行一次写操作,来决定下一个是什么样的寄存器和什么样的操作内容,再进行下一步的参数写入,读者可参考下面的AD7705初始化程序InitADC()。
模拟输入电路前端加入了一个简单的R、C滤波器,会在输入电压中引起增益误差,必须对器件进行校准,因为每次系统校准可以对系统的增益、偏移误差、以及器件本身的内部误差进行补偿,所以参数设置完毕以后,应该对器件进行一次系统校准,写入设置寄存器位MD1和MD0分别为0和1完成系统自校准,自校准后自动返回正常模数转换工作模式。实际中各路输入信号幅度往往不完全相同,因此每转换一路就需要一次参数设置和系统校准。还需注意的是,在非缓冲模式下使用时,系统校准还可以消除模拟输入端由电源阻抗引起的任何误差。
下面是用C51语言编写的初始化程序:
voidInitADC(void){unsignedchari;
ADC-CLK=1;ADC-DIN=1;
for(i=0;i<40;i++){ADC-CLK=0;ADC-CLK=1;} //防止接口迷失,通信寄存器返回到等待写状态WriteToReg-ADC-Init(0x20); //通道1,下一个写时钟寄存器WriteToReg-ADC-Init(0x06); //写时钟寄存器设置更新速率为250HzWriteToReg-ADC-Init(0x10); //通道1,下一个写设置寄存器
WriteToReg-ADC-Init(0x5c); //写设置寄存器,设置成单极性、无缓冲、增益为8、滤波器工作、自校准Delay-1ms(50); //延时}
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
第3期 敖振浪等:十六位模数转换器AD7705及其应用
unsignedintWriteToReg-ADC(unsignedintbyteword){unsignedintAD16bit,Token;
285
unsignedchari;
ADC-CLK=1;ADC-CS=0;/*开始*/ Token=0x80;AD16bit=byteword; for(i=0;i<8;i++)
{if(AD16bit&Token)ADC-DIN=1;/*输入数据位*/ elseADC-DIN=0;
ADC-CLK=1;ADC-CLK=0;ADC-CLK=1; Token=Token>>1; }
ADC-CLK=1;ADC-DIN=1;/*结束*/ return(TRUE);
}
初始化以后,CPU就可以从模数转换器中读数据,读取数据之前必须确定数据寄存器的状态,有两种不同的方式查询,第一种是查询DRDY-引脚,如果DRDY-引脚处于低电平,这表示数据已经转换完成,可以读取。第二种是查询通信寄存器中的DRDY-位,如果是“0”表示数据可以读取。本例使用前者。读数据流程图如图4所示,读数据的频率为大约每分钟60次,远小于数据寄存器更新速率,确保了避免在数据寄存器更新的过程中读出不可靠的数据。
图4 读数据流程图
为了便于读者理解,给出读数据寄存器的函数原代码如下:
unsignedintReadADC-16BitValue(unsignedcharchannel)
{unsignedintAD16bit,Token;
unsignedchari;
WriteToReg-ADC(0x38|channel); //设置读当前通道数据 while(ADC-DRDY==1){;} //等待数据准备好 ADC-CLK=1;ADC-CS=0; AD16bit=0x00; for(i=0;i<16;i++) {AD16bit=AD16bit<<1;
ADC-CLK=0; if(ADC-DOUT==1)AD16bit=AD16bit|0x01;//读取数据位 ADC-CLK=1;
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
286成 都 信 息 工 程 学 院 学 报 第18卷
}
ADC-CLK=1;ADC-DIN=1; return(AD16bit);}
3 系统设计时值得注意的问题
AD7705功能独特,具有分辨率高、接口简单等特点,实际应用有时会遇到一些问题,只要注意是完全可以避免的,作者提供几点实际应用经验供参考:
(1)在实际应用中,由于强电磁场、系统中的闪烁信号干扰或者软件错误,不可避免会造成接口迷失,一旦接口迷失,就无法对AD7705进行正常操作,数据也无法从中正常读出。因此,在系统软件设计中应当定时复位系统接口,使通信寄存器回到等待写状态,这一过程可以通过向DIN输入端写入至少32个串行时钟周期的逻辑“1”以复位串行接口。同时也应当注意,由于接口出现迷失,写入任何寄存器的信息都是不可预料的,所以接口复位后建议将所有的寄存器重新设置一次。
(2)输出数据可以从串行口上随机地或周期性地读出,读出速率应不超过预设的输出寄存器更新速率。读数据的例程里面不应该加入太多的其它操作,确保在下一次输出数据更新之前读操作已经完成,这样才能避免连续两次从数据寄存器读到同样的数据(没有被更新数据)。
(3)在设计AD7705印刷板电路必须讲究布线技巧,布线的好坏直接影响数据转换精度,甚至会引起芯片工作失常。经验表明,AD7705应该布设在一个相对独立和集中的区域,器件面用覆铜作接地平面,起到屏蔽作用。数字区和模拟区尽可能在底面分开布线,模拟接地与数字接地应只在一个点连接在一起,以避免出现接地环路,并用屏蔽网格技术加以屏蔽,最后要以星型结构接入系统公共接地点。所有电源都要加电容去耦电路,电容器尽可能靠近芯片的电源输入端。
参考文献:
[1] 邬宽明.80C51系列微控制器系统原理、功能集成与应用[M].北京:北京航空航天大学出版社,1995.[2] 徐爱钧,彭秀华.单片机高级语言C51应用程序设计[M].北京:电子工业出版社,1998.
16bitsconverterAD7705anditsapplication
AOZhen2lang, LIYuan2hong, TANJian2rong
(CenterofMeteorologicalandTechnologicalEquipmentofGuangdongProvince,Guangzhou510080,China)
Abstract:TheAD7705isa16bitsA/DwhichisintroducedbytheANALOGDEVICESCompany.Itsfunctionsandcharac2teristicsareintroduced.ThehardwarebasedontheAD7705,thedesignmethodofthesoftwareandsomeproceduresourcecodeshavebeenpresented.Severaltechnologicalproblemsshouldbepaidattentiontointhepracticalapplication.Keywords:AD7705A/D;application;design
© 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
因篇幅问题不能全部显示,请点此查看更多更全内容