1 引言
串行数/模转换减少了器件间的硬件连接,特别适用于电路空间较小且数据采集速率要求不是特别高的场合。当然,硬件的简化也相应提高了使用的复杂程度。本文介绍AD7890型串行数/模转换器在自动导向钻井系统控制电路数据采集中的应用。由于井下工具电子仓部分空间狭窄、工作条件恶劣、可靠性要求高,所以特别适合采用串行A/D转换器。
AD7890是美国Analog Devices公司于20世纪90年代末推出的一款8通道12位串行A/D转换器。其主要性能特征包括:A/D转换时间较快(9.5μs);功耗较低(最大50 mW,体眠状态下75μW);信噪比较高(大于70 dB);总谐波失真小(不大于-78 dB);内置跟踪/保持放大器,片上参考电压;具有高速、灵活的串行接口等。
2 AD7890的内部结构
图1示出AD7890的内部功能框图,由图1可知AD7890内部含有相应的信号调理(对于AD7890-5和AD7890-10)、多路开关、跟踪保持放大器、通用串行接口及参考电源等,给用户的使用带来极大的方便。特别是电路中的多路开关输出(MUX OUU)和跟踪/保持输入(SHA IN)采用分离的独特设计,使用户在二者间采用1个外部滤波电路就可完成全部8个通道的抗混叠处理。
电路的SMODE端是工作模式的控制输入端,用户可以用其指定器件内部时钟(主)和外部时钟(从)的工作模式。采用外部时钟工作模式时.用户需提供读写数据的帧同步和串行时钟信号SCLK,其串行脉冲频率最大可以达到10 MHz。采用内部时钟模式时,AD7890本身向系统提供帧同步行时钟,此时的工作频率取决于CLK IN引脚输入的主时钟频率。电路的8路模拟输入端为VINl-VIN8,由多路开关根据3位通道地址选择,多路切换时按先开后合方式操作。REF OUT/REF IN是参考电压输出/输入端。使用外部参考电压时外部+2.5 V参考电压由该端接入,而使用内部参考电压时需要在该端和模拟地AGND之间接入一只0.1μF的电容器。
AD7890通过片内的高速双向串行数据接口成输出数据和接收控制字。其控制寄存器由5位组成,如图2所示,各位的默认状态均为0。其中A2、A1、A0分别为多路开关通道地址选择的最高位、次高位和最低位。通道选择算法为:被选通道号=A2x4+Alx2+AO+1。控制字送入控制寄存器,器件即开始启动内部延时脉冲,该脉冲宽度取决于CEXT引脚的电容值,用户可以根据外部滤波和信号处理的实际延时,适当调节该电容值,确保在A/D转换开始前有足够的时间进行多路转换建立和跟踪保持的采集。该内部延时脉冲时间到后,跟踪/保持器立即进入保持状态并且开始启动12位A/D转换器的本次操作。
3 AD7890的工作时序
控制寄存器中的CONV为转换开始状态位,为l时表示进入转换状态,与CONVST引脚输入效果完全相同。在向CONV写操作(写1)的第6个串行时钟周期结束后内部延时脉冲开始启动,转换过程开始。另外,在CONV为1时,CONVST的输入命令无效。STBY为休眠状态位,该位为1时,电路处于低功耗体眠状态。电路在写操作SCLK的第7个脉冲下降沿进入休眠。因此,系统向AD7890写操作至少需要6个时钟脉冲,使其休眠的写操作至少需要7个时钟脉冲。如果在6个时钟脉冲前TFS回到高电平,则不会有任何数据写入控制寄存器。但是需要注意的是,当CONV位置为1时,转换过程都会在写操作发生时开始,无论TFS的低电平能够保持多少个时钟脉冲。
CONVST为转换开始时的硬件输入端,上升沿触发。AD7890可以由CONVST输入或CONV位写1两种方式启动。如前所述,从转换过程开始到正式启动A/D转换器的时间间隔是由每次串行写操作启动的内部延时脉冲来控制。这也意味着该脉冲总会给软件启动的转换过程带来一定的延时。若内部延时时间已到,由CONVST上升沿开始的A/D转换时间为9.5μs,跟踪/保持器的采集时间为2μs。另外,为了保证正常的A/D转换,任何串行读写操作均不可在A/D转换期间及下次转换开始前500 ns内进行。
4 AD7890的读写操作
AD7890串行数据输入引脚是DATA IN,写操作时通过该引脚向AD7890控制寄存器写入数据,写入时用传输帧同步TFS变为低电平后SCLK的前5个下降沿写入DATA IN上串行数据的前5位。而同一次TFS中的5个SCLK脉冲下降沿以后的串行数据均无效。
串行数据输出引脚是DATA OUT,输出数据由1位起始位(O)、3位通道地址和由最低有效位开始的12位转换数据共16位组成。输出数据码制,在双极性输入型(AD7890-10)中为补码,在单极性输入型(AD7890-4和AD7890-2)中为无符号的二进制数。
AD7890-4的读写操作在不同工作模式下略有区别,其时序如图3所示。
内部时钟模式读操作时序如图3(a)所示,转换结束后RFS自动变为低电平,同时开始输出SCLK脉冲和串行数据,每位数据在SCLK下降沿时有效。RFS在第16个SCLK上升沿时刻变为高电平。DA-TA OUT数据结束。内部时钟写操作时序如图3(b)所示,TFS输入为低电平表示写操作的开始,同时也启动SLCK的输出,DATA IN上的串行数据在SCLK的下降沿写入,故写入操作至少需要6个SCLK脉冲。
外部时钟模式读操作时序如图3(c)所示,从RFS低电平开始读取16位串行数据,为保证正常操作,无论RFS和SCLK的时间关系如何,起始位O都将维持至少一个SCLK脉冲周期,并在第一个脉冲周期之后的第一个下降沿时结束。此外,在读操作进行中若有新的A/D转换结束,则输出数据寄存器的刷新会被延迟到读操作完成和RFS返回到高电平后进行。外部时钟模式写操作时序如图3(c)所示,串行数据写操作在TFS变为低电平时开始,5位控制寄存器写操作至少需要6个SCLK脉冲,与内部时钟写操作工作模式相同。
5 应用实例
AD7890在51系列单片机系统中的应用实例硬件接口原理如图4所示。系统采用外部时钟工作模式,用89C52的P1.3口作为时钟输出;P1.0口连接串行数据输入和输出。也可以应用5l系列单片机的串口RXD和TXD连接AD7890实现数据读写操作,此时需要特别注意的是AD7890的串行数据总是最高有效位在前,而51系列单片机串行通信收发操作总是最低有效位在前。P1.1、P1.2分别连接RFS可和TFS。MUX OUT和SHA IN直接连接,这种连接方式的缺点是系统不能同时访问控制寄存器和输出数据寄存器。内部延时脉冲宽度只需考虑2 μs的跟踪/保持器采集时间,因此电容C的最小容值可以为120 pF。
软件启动AD7890转换的C51函数程序框图如图5所示。执行中由实际参数传递欲转换的通道地址(0x00--Ox07对应VINl-VIN8),将通道地址A2、Al、A0分别送控制字第7位、第6位和第5位。控制字第4位置1作为CONV标志。如果写入的是置电路为休眠状态的命令,则应将控制字第3位也置为1。通过P1.2置TFS为低电+平并在SCLK脉冲作用下串行输出控制字。经过软件延时等待,延时时间大于内部延时脉冲加5.9μs的A/D转换时间。当主频为11.0592 MHz时,89C52系统的1个机器周期约为l.085μs。所以执行空操作至少8次后再发送RFS命令,进行读操作。读操作过程中主机在SCLK脉冲同步下读入16个串行数据。转换结果在函数返回数字中的低12位中。若采用硬件启动方式,则需要先将控制寄存器CONV标志写0,然后用P3.2口输出A/D转换启动命令。由于没有加入内部延时脉冲,因此如果不改变转换通道,硬件启动方式可以得到最快的转换速率。
下面是应用实例的C51程序清单。实例中所用软硬件条件为:89C52单片机、11.0592 MHz时钟、AD7890-10和V2.40版本KEIL Cx51开发工具。