牛国锋,常晋义,王启元
(常熟理工学院 计算机科学与工程学院,江苏 常熟215500)
随着数字电子技术的迅速发展,各种数字设备,特别是各类MCU电子产品的应用日益广泛,已经渗透到人们生活的各个领域之中。各种微控制器在应用于生活和生产的过程中,往往需要进行A/D和D/A转换,处理模拟信号和数字信号,而且所要处理的变量往往是连续变化的物理量,如温度、电压、速度等,这些非电子信号的模拟量要经过传感器变成电压或者电流信号,再转换成数字量,然后经计算机进行处理后直观地显示给人们。因此,模/数转换的过程是人们获取有效信息的一个重要环节。
模拟信号转换成数字信号的过程被称为模/数转换[1],简称A/D(Analog to Digital)转换;完成模/数转换的电路被称为A/D转换器,简称ADC(Analog to Digital Converter)。模拟信号由传感器转换为电信号,经放大器放大送入A/D转换器转换为数字量,由数字电路进行处理。对模数转换过程的研究有助于更好地掌握这一技术,并将其应用到更为广泛的生活和生产领域中去。
AD1674[2]是美国ADI公司推出的一种完整的12位并行模/数转换单片集成电路芯片。该芯片带有内部采样保持的完全12位逐次逼近寄存器(SAR),采样频率为100 kHz;最大转换时间为10μs,具有+1/2 LSB的积分非线性(INL)以及12位无漏码的差分非线性(DNL),功耗较低,仅为385 mW;内部自带采样保持放大器(SHA)、10 V基准电压源、时钟源以及可与微处理器总线直接接口的暂存/三态输出缓冲器,输出可与8 bit或12 bit微处理器接口连接。
与原有的系列相比,AD1674的内部结构更加紧凑,集成度更高,应用电路变得简单,工作性能更可靠,尤其是高低温的稳定性表现最佳,而且可以使设计板面积大大减小,因而可降低成本并提高系统的可靠性,非常适用于通信、图像处理和医疗等高新技术设备的电路设计。本文在对某新型国产机载武器系统的研究中采用了AD1674,它可实时地采集温敏传感器的模拟参数,以进行快速精确的数据转换并传给MCU进行处理,从而有效地对实时温度进行检测。
逐次逼近型A/D转换器[3]主要由A/D电压比较器、逐次逼近寄存器SAR和转换结果寄存器ADCR构成。
首先,A/D电压比较器将从数组的电压档位产生的比较电压与模拟输入引脚电压进行比较,得到数字逻辑部分能够识别的数字信号1或者0(1为高电压,0为低电压),通过逐次比较逻辑构成,从最高有效位(MSB)开始,顺序地将每一位的输入电压与内置D/A转换器的输出进行比较,经n次比较而输出相应的数字值序列。其优点是速度较快,功耗低,在低分辩率(<10位)时价格相对便宜。
逐次逼近寄存器SAR为12 bit寄存器,用于设置档位电压数据,将数组的档位电压值与模拟输入引脚的电压值作比较,从最高有效位(MSB)开始,每次移1位。如果数据在SAR中始终设置成最低有效位(LSB)(A/D转换结束),那么SAR寄存器的内容(也就是转换结果)将会被保存到A/D转换结果寄存器ADCR中。当所有指定的A/D转换操作都结束时,将产生A/D转换结束中断请求信号。转换结果寄存器是一个在选择模式存储A/D转换结果的16 bit寄存器,低6位固定为0。每次A/D转换结束,将从逐次逼近寄存器中加载转换结果,由16 bit存储器处理指令读取ADCR,产生的复位信号将该寄存器清除为0,完成A/D转换。最后SAR中的数字量就是所求的转换结果。
A/D1674转换器的工作模式可分为选择模式和扫描模式两种,在这两种模式下,它的工作时序不同。选择模式主要用于具有专门输入端的系统,因而不需要有全总线的接口能力,而采用扫描工作模式则有利于与MCU进行总线连接。
当A/D转换器模式寄存器(ADM)的ADMD位为0时,模拟输入通道指定寄存器(ADS)指定一个模拟输入通道进行A/D转换。A/D转换完成时,转换结果存储在A/D转换结果寄存器(ADCR)中,并产生ADCR转换结束中断请求信号(INTAD),接着进行下一个模拟输入,连续重复A/D转换,除非将ADCS位置为0。如果在转换期间将数据写入ADM或ADS,则终止A/D转换。这种情况下,再次从头开始进行A/D转换,操作时序图如图1所示。
图1 选择模式操作时序图
当A/D转换器模式寄存器(ADM)的ADMD位为1时,由模拟输入通道指定寄存器(ADS)指定的扫描0~3的4个模拟输入通道按次序连续执行A/D转换,从扫描0指定的模拟输入通道开始。一个模拟输入的A/D转换完成时,转换结果存储在A/D转换结果寄存器(ADCR)中,并产生ADCR转换结束中断请求信号(INTAD)。所有模拟输入通道的A/D转换结果都存储在ADCR中。因此,在每路模拟输入通道转换完成后,立即把ADCR中的内容保存到RAM中。一次A/D转换完成后,连续重复地进行A/D转换,除非将ADCS位置为0。如果在转换期间将数据写入ADM或ADS,则终止A/D转换。这种情况下,从扫描0的模拟输入通道重新开始A/D转换,操作时序图如图2所示。
图2 扫描模式操作时序图
在C语言编程实现A/D转换的过程中,转换结果可通过公式进行计算,式(1)、(2)、(3)给出了输入至模拟输入引脚ANI0~ANI11和PGAI的模拟输入电压与理论上的A/D转换结果之间的计算公式,其中INT()表示结果返回原括号内值的整数部分,VAIN表示模拟输入电压,AVREF表示引脚电压,ADCR表示A/D转换寄存器的值,SAR表示逐次逼近寄存器。模拟输入电压值与A/D转换结果之间的关系图如图3所示。
A/D模数转换器被广泛地应用于各类电子产品中,特别是高速实时数据采集系统,瑞萨78K0R系列微控制器[4]上就采用AD1674转换器进行实时温度的采集和转换。图4是应用于瑞萨MCU中进行温度采集和模/数转换的框图。
图3 模拟输入电压与A/D转换结果之间的关系图
图4 A/D模数转换器的结构框图
ANI0~ANI11引脚为12通道A/D转换器模拟输入引脚[5],模拟信号通过选择器选择一个或多个通道输入,经采样保持电路采集每个从输入电路连续发出的模拟输入电压,并发送采样数据到A/D电压比较器,A/D电压比较器将从数组的电压档位产生的比较电压与模拟输入引脚电压进行比较。如果发现模拟输入电压大于参考电压 (1/2 AVREF),则将会设置逐次逼近寄存器(SAR)的最高有效位(MSB);如果模拟输入电压小于参考电压(1/2 AVREF),那么逐次逼近寄存器(SAR)的最高有效位(MSB)复位。接着自动设置SAR寄存器的位10,并启动下一次比较。由位11的值来选择数组的电压档位,其结果已经设定如下:
位11=0:(1/4AVREF)
位11=1:(3/4AVREF)
将数组的档位电压与模拟输入电压进行比较,而SAR寄存器的位10则根据比较结果来执行操作:
模拟输入电压≥数组档位电压:位10=1
模拟输入电压≤数组档位电压:位10=0
这样的比较会持续至SAR寄存器的位0。
每次A/D转换完成,A/D转换结果将从逐次逼近寄存器加载到A/D转换结果寄存器,ADCR寄存器将A/D转换结果在高位逐次保存,最后SAR中的数字量就是所求的转换结果。
本文主要针对目前市场上单片机及其ADC在电子产品中的广泛应用,给出了一种实用的逐次逼近型模/数转换器AD1674,着重介绍了该芯片的性能特点、工作模式时序以及在瑞萨微处理器系统中的应用。瑞萨嵌入式MCU具有性能可靠、灵活方便、简洁实用、节能等优势,再将高性能的A/D转换器与其结合使用,可降低成本并提高系统的可靠性,因此具有很大的实用价值。
[1]徐江涛,姚素英,李树荣,等.高分辨率流水线A/D转换器采样电容优化研究[J].微电子学,2004(4):435-438.
[2]郁春兰.A/D1674的特点及其与PC机接口的应用研究[J].广东交通职业技术学院学报,2002(1):74-77.
[3]孙彤,李冬梅.逐次逼近A/D转换器综述[J].微电子学,2007(4):523-531.
[4]瑞萨科技公司.瑞萨16位R8C/TINY系列MCU[J].世界电子元器件,2005(4):91-94.
[5]李言武.多通道A/D转换控制模块的设计与实现[J].电子科技,2011(8):75-77.