logo资料库

十六位模数转换器AD7705及其应用.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
2 2 2 2 第 18 卷第 3 期 2003 年 9 月 成  都  信  息  工  程  学  院  学  报 JOURNAL OF CHENGDU UNIVERSITY OF INFORMATION TECHNOLOGY Vol. 18 No. 3 Sep . 2003 文章编号 : 1671 1742 (2003) 03 0281 06 十六位模数转换器 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 ; 等待电流的 最大值为 8μA ; 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 为满刻度系统校 准 。    收稿日期 : 2002 11 29 ; 修订日期 :2003 02 18
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”禁止时钟在 MCLK OUT 引脚输出 。 CLKDIV :时钟分频位 。 CLK:时钟位 。时钟频率为 2. 4576MHz 时 ,该位设置为“1”, 时钟频率为 1MHz 时 ,该位设置为“0”。 FS1 ,FS0 :滤波器选择位 ,与 CLK一起决定器件的输出更新率 。如表 1 。 表 1  FS1 、FS0 与 CLK决定的器件输出更新率 CLK * 0 0 0 0 1 1 1 1 FS1 0 0 1 1 0 0 1 1 FS0 0 1 0 1 0 1 0 1 输出更新率 20Hz 25Hz 100Hz 200Hz 50Hz 60Hz 250Hz 500Hz 注 : 假定 MCLK IN 脚的时钟频率正确 ,CLKDIV 位的设置也是适当的。   数据寄存器 :这是一个十六位只读寄存器 ,它包含了最新的转换结果 。 测试寄存器 :用于测试期间器件 ,用户一般不用 。 零标度校准寄存器和满标度校准寄存器 :都是 24 位 ,用户一般不用 。 2  应用设计   AD7705 主要在单片机小系统中应用 。本应用实例是一个低频数据采集电路 ,采用了 89C51 单片机 ,下面详 细介绍电路设计和软件设计方法 。 2. 1  与单片机的接口 首先介绍 AD7705 与单片机的连接方法 ,因为它采用串行接口 ,使得与大多数单片机很容易连接 。AD7705 与 8xC51 单片机的接口电路如图 1 所示 。   在一般的简单系统中 ,常常只有 1 片 AD7705 或其它共用口线的器件 ,故 CS- 通常接低电平 ,节省了单片机的 输出输入控制线 ,这样就可以配置成三线连接方式 。三线连接方式下决定数据寄存器是否被更新也即是确定数 图 1  AD7705 与 8XC51 单片机的接口电路
第 3 期           敖振浪等 :十六位模数转换器 AD7705 及其应用 382 据寄存器是否可以被读 ,只有通过监控通信寄存器 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. 2  实际应用电路设计 图 2  AD7705 读、写时序 我们设计的是一个气象探测仪器的实际应用电路 ,专门用于温度和湿度的模数转换 。因为实时性要求不太 高 ,因此数据读取采用了查询方法 ,这种方法对一般的应用是可以满足要求的 。在图 3 电路中 ,CLCK、DIN、DOUT 和 DRDY- 引脚直接连接 80C52 的 P1. 0 - P1. 3 引脚 。由 CC3 和 RC5 组成的复位电路 ,通电时 ,输入引脚 RESET- 处于低电平 ,复位所有的逻辑 、数据滤波器和模拟调试器 ,将所有的片内寄存器设置到其默认状态 。使用芯片 REF195 产生 + 5V 基准电压供给 AD7705 作为参考电压 ,同时作为温度传感器的激励电流源 。注意基准电压输出 端应该并联 10μ和 1000p 去耦电容 CC4 和 CC8 ,因为微小的噪声电平都会影响转换精度 。实际上 ,由于 AD7705 的功耗很小 (最大 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 。注意输入信号
482 成  都  信  息  工  程  学  院  学  报             第 18 卷 幅度与增益关系 ,通道增益太大放大结果会超过基准电压 + 5V ,造成转换结果错误 。 AD7705 内部只有一套模数转换电路 ,通道 1 和通道 2 的选择通过软件设置进行切换 ,实际应用中往往需要 对不同通道采取不同的增益 ,动态地对 AD7705 进行增益 、通道设置 ,很灵活方便地达到这一目的 。 2. 3  软件设计 图 3  气象探测仪电路图     使用 AD7705 之前 ,首先要对所有寄存器进行设置 ,才能保证器件正常工作 。在实际使用中 ,首先选择模拟 输入模式 (单极性还是双极性) 、是否需要缓冲 、时钟分频和输出更新速率 ;根据外部输入信号的幅度来决定设置 器件的增益值 ,本实例里通道 1 和通道 2 输入信号都是单极性 ,但幅度不同 ,所以循环选择通道 ,选择相应参数 , 应用中选择输入通道单极性 、初始增益等于 8 、数据更新速率为 250Hz。根据实际确定所有参数以后 ,对 AD7705 芯片进行设置 ,参数设置方法比较独特 ,在设置参数之前 ,首先对通信寄存器进行一次写操作 ,来决定下一个是什 么样的寄存器和什么样的操作内容 ,再进行下一步的参数写入 ,读者可参考下面的 AD7705 初始化程序 InitADC ( ) 。 模拟输入电路前端加入了一个简单的 R、C 滤波器 ,会在输入电压中引起增益误差 ,必须对器件进行校准 ,因 为每次系统校准可以对系统的增益 、偏移误差 、以及器件本身的内部误差进行补偿 ,所以参数设置完毕以后 ,应该 对器件进行一次系统校准 ,写入设置寄存器位 MD1 和 MD0 分别为 0 和 1 完成系统自校准 ,自校准后自动返回正 常模数转换工作模式 。实际中各路输入信号幅度往往不完全相同 ,因此每转换一路就需要一次参数设置和系统 校准 。还需注意的是 ,在非缓冲模式下使用时 ,系统校准还可以消除模拟输入端由电源阻抗引起的任何误差 。 下面是用 C51 语言编写的初始化程序 : void InitADC(void) { unsigned char i ; 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) ;       / / 写时钟寄存器设置更新速率为 250Hz WriteToReg - ADC - Init (0x10) ;       / / 通道 1 ,下一个写设置寄存器 WriteToReg - ADC - Init (0x5c) ;   / / 写设置寄存器 ,设置成单极性 、无缓冲 、增益为 8、滤波器工作 、自校准 Delay - 1ms(50) ;   / / 延时 }
第 3 期           敖振浪等 :十六位模数转换器 AD7705 及其应用 582 unsigned int WriteToReg - ADC(unsigned int byteword) { unsigned int AD16bit ,Token ;  unsigned char i ;   ADC - CLK= 1 ; ADC - CS = 0 ; / * 开始 * /   Token = 0x80 ; AD16bit = byteword ;   for (i = 0 ;i < 8 ;i + + )   { if (AD16bit & Token) ADC - DIN = 1 ; / * 输入数据位 * /     else ADC - 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  读数据流程图 unsigned int ReadADC - 16BitValue (unsigned char channel) { unsigned int AD16bit ,Token ;  unsigned char i ;  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 ;
682 成  都  信  息  工  程  学  院  学  报             第 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. 16 bits converter AD7705 and its application AO Zhen lang ,  LI Yuan hong ,  TAN Jian rong (Center of Meteorological and Technological Equipment of Guangdong Province , Guangzhou 510080 , China) Abstract : The AD7705 is a 16 bits A/ D which is introduced by the ANALOG DEVICES Company. Its functions and charac teristics are introduced. The hardware based on the AD7705 , the design method of the software and some procedure source codes have been presented. Several technological problems should be paid attention to in the practical application. Key words : AD7705 A/ D ; application ; design
分享到:
收藏