关键词:串行模数转换器;数据采集系统;低功耗;ADS7844
在野外以及一些没有市电或者不适宜使用市电的应用场合,自动化仪表通常要采用电池供电,这就要求仪表中的电子元器件的功耗要低,A/D转换器作为自动化仪表的重要组成部份更不例外。笔者采用ADS7844和PIC16C64构成的数据采集系统便具有功耗极低、结构简单等优点,完全可以适应电池供电系统的要求。
1 ADS7844的结构及工作原理
ADS7844是Burr-Brown公司推出的一种高性能、宽电压、低功耗的12-bit串行模数转换器。它有8个模拟输入端,可用软件编程为8通道单端输入A/D转换器或4通道差分输入A/D转换器,其转换率高达200kHz,而线性误差和差分误差最大仅为±1LSB。ADS7844在电源电压为2.7V~5V之间均能正常工作,最大工作电流为1mA,进入低功耗状态后的耗电仅3μA。ADS7844通过6线串行接口与CPU进行通信,而且接口简单方便。
1.1 ADS7844的引脚功能
ADS7844的引脚排列如图1所示。它有20个引脚,各引脚的功能如下:
CH0~CH7:模拟输入端,当器件被设置为单端输入时,这些引脚可分别与信号地COM构成8通道单端输入A/D转换器;当器件被设置为差分输入时,利用CH0~CH1、CH2~CH3、CH4~CH5和CH6~CH7可构成4通道差分输入A/D转换器?
COM:信号地?
VREF:参考电压输入端,最大值为电源电压?
CS:片选端,低电平有效,该脚为高电平时,其它数字接口线呈三态?
DCLK:外部时钟输入端,在时钟作用下,CPU将控制字写入ADS7844,并将转换结果从中读出?
DIN:串行数据输入端,在片选有效时,控制字在DCLK上升沿被逐位锁入ADS7844?
DOUT:串行数据输出端,在片选有效时,转换结果在DCLK的下降沿开始被逐位从ADS7844移出?
BUSY:“忙”信号输出端,在接收到控制字的第一位数据后变低,只有在转换结束且片选有效时,该脚才输出一个高脉冲?
SHDN:电源关闭端,低电平有效。当SHDN为低电平时,ADS7844进入低功耗状态?
VCC,GND:分别为电源端和数字地。
1.2 ADS7844的控制字及转换时序
ADS7844的控制字如表1所列。
表1 ADS7844的控制字含义
Bit7(MSB) | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0(LSB) |
S | A2 | A1 | A0 | - | SGL/DIF | PD1 | PD0 |
ADS7844的控制字共有8位,其中S是起始位?控制字的起始位总为“1”。A2~A0是通道选择位,在单端输入时分别对应8个通道,而对于差分输入,000~011分别对应CH0~CH1、CH2~CH3、CH4~CH5、CH6~CH7,而100~111则分别对应CH0~CH1、CH1~CH0、CH3~CH2、CH5~CH4、CH7~CH6。Bit3没有定义。SGL/DIF是模式控制位,该位为“1”时是单端输入模式,为“0”时是差分输入模式。PD1和PD0是电源关闭模式控制位,若为“00”,则表示ADS7844在不进行数据转换时自动进入电源关闭模式,若为“11”,芯片则始终处于电源开启模式。
ADS7844有多种转换时序,其基本转换时序如图2所示。从图中可见,一个转换周期需要24个时钟周期,其中8个用于输入控制字,16个用于读取转换结果。控制字的所有位在时钟上升沿被锁入芯片,转换结果在时钟的下降沿被逐位移出。所有移入和移出的数据都是高位在前、低位在后。需要说明的是,ADS7844是12位A/D转换器,其转换结果只有12位,故在移出12位结果后,还需送入4个时钟来完成整个转换过程,这4个多余的时钟移出的数据为“0”,使用时不应作为转换结果处理。
2 低功耗数据采集系统的硬件电路
要设计一个低功耗数据采集系统,只有A/D转换器是低功耗器件还不够。PIC16C64是美国MI-CROCHIP公司生产的高性能单片机,它有许多优点:宽电压?2.7V~5V?,其工作电流只有1mA?3.3V@32kHz时?,进入休眠状态后只有几微安且可以用中断将其从休眠状态唤醒等。低功耗数据采集系统的硬件电路如图3所示,其中CS、DCLK、DIN和DOUT必须与CPU连接,而BUSY则可以不用,在转换时稍加延时等待即可。控制AD7844进入低功耗状态有两种方式:一是直接控制SHDN端;二是将SHDN接在电源上,它们均可在控制字中设置。为了节省口线,可采用第二种方式。采样控制可以使用外部中断,如外部中断INT0、串行口中断和PB口电平变化引起的中断等,也可以使用内部定时中断。
3 软件程序
下面给出该系统的主程序部分流程图和汇编程序。该设计假设用外部中断INT0唤醒CPU来进行数据采集,且A/D转换程序就是中断服务子程序。
ORG 000H
GOTO MAIN
ORG 004H
GOTO INT PRO
ORG 010H
MAIN MOVLW 10H ?关闭总中断控制位,
但开放INT0
MOVWF INTCON
BSF STATUS?RP0 ?初始化A口
MOVLW 0F8H
MOVWF TRISA ? A口D0-D2为输
出,D3为输入
BCF STATUS,RP0
BSF PORTA,1 ?使片选无效
...
BSF INTCON,GIE ?开放总中断控制位
LOOP SLEEP ?等待中断
NOP
... ?数据采集完成后进行其他处理
GOTO LOOP
INT_PRO BCF PORTA,0 ?时钟置低电平
BCF PORTA,2 ?数据输入置低
MOVLW 08H ?置送控制字所需时钟数
MOVWF NUM
MOVLW 8CH ?控制字,假设转换CH0,
单端输入,?自动进入低功耗状态
BCF PORTA,1 ?片选有效
... ?送控制字
LCALL DELAY ?调用延时子程序
MOVLW 10H ?置读转换结果所需
时钟数
MOVWF NUM
... ?读转换结果
BSF PORTA,1 ?结束转换并返回
RETFIE
4 结束语
由于PIC16C64和ADS7844都是低功耗器件,且都有低功耗状态,因而用其设计的数据采集系统功耗是很低的。经实测,当电源电压为3.3V、时钟为32.76kHz时,该电路的正常工作电流为2mA,而进入低功耗状态后的系统消耗电流最大为4μA,因而完全适合于电池供电。另外,PIC16C64和ADS7844都是宽电压器件,并且PIC16C64还有许多功能可以开发利用。如果在本系统基础上做必要的功能扩展,便可用于其它工业控制系统的现场控制等领域。