资源描述
ADS7844串行模/数转换芯片的原理及其在嵌入式的应用
12位高精度AD的使用
ADS7844串行模/数转换芯片的原理及其在嵌入式的应用
摘要:ADS7844是一种12-Bit的串行数模转换器芯片。它具有与CPU方便联接的同步串行接口,接口灵活, 功耗低等特点。文中详细介绍了ADS7844的工作原理、引脚定义、工作时序及同步串行模式下与51单片机的接口电路及部分读写程序以及需要注意的地方。
关键词:模数转换器 SPI接口 ADS7844 单片机
概述
A/D采集芯片在以单片机为核心构成的智能仪器仪表、测控系统、工业控制等领域中有着广泛影响。但是现在有的A/D转换芯片存在着精度差和接口电路复杂等缺点。ADS7844是Burr-Brown公司推出的一种高性能、宽电压、低功耗的可以程控为8通道单端输入或4通道差分端输入的12-Bit的串行数模转换器,内部集成有SPI口。 从而简化了接口电路设计,无需用复杂的外围元件,就可实现精度高、性能稳定的数据采集转换。在5V电源,转换速率为200kHz的情况下功耗仅仅3Mw。在节电模式下,功耗可以减小到1uW
1、 特性及引脚说明
1.1 ADS7844主要特性如下:
① 单电源,电压范围:2.7V-5V均能正常工作,最大工作电流为1mA,进入低功耗状态后的耗电仅3μA
② 其转换率高达200kHz
③ 它有8个模拟输入端,可用软件编程为8通道单端输入A/D转换器或4通道差分输入A/D转换器
④ 典型信噪比为72dB。
⑤ 积分非线性(INL)和差分非线性(DNL)最大为±0.5LSB
⑥ 保证无漏码
⑦ SPI接口
⑧ 采用20脚QSOP或SSOP封装形式。
1.2 ADS7844引脚的功能和排列说明
AD7844引脚功能说明如表1所示,引脚排列如图1所示
表1
引脚号 引脚名称 功能描述 备注
1、2、3、4、5、6、7、8 CH0-CH7
模拟输入端。器件被设置为单端输入时,这些引脚可分别与信号地COM构成8通道单端输入A/D转换器;当器件被设置为差分输入时,利用CH0~CH1、CH2~CH3、CH4~CH5和CH6~CH7可构成4通道差分输入A/D转换器 对状态寄存器的SGL/DIF位进行配置以设定输入模式。1为单端模式,0为差分模式。
9 COM 信号地。 信号输入参考地
10 电源关闭控制端。低电平有效 置低时,A/D进入低功耗状态
11 VFEF 参考电压输入端
12、20 VCC 电源输入。
13、14 GND 电源地。
15 DOUT 串行数据输出端。在片选状态下,在时钟上升沿,数据从MSB-LSB被逐位移出。
16 BUSY 忙”信号输出端。 在接收到控制字的第一位数据后变低,只有在转换结束且片选有效时,该脚才输出一个高脉冲
17 DIN 串行数据输入端。在片选有效时,控制字在DCLK上升沿被逐位锁入ADS7844
18 /CS 片选端 低电平有效,为高电平时,DIN管脚的输入数据不能被移入,DOUT为高阻态
19 DCLK 外部时钟输入端。在时钟作用下,CPU将控制字写入ADS7844,并将转换结果从中读出 DCLK时钟速率决定转换速度
2、 工作原理
1.1 内部原理框图 如图2所示
2.2 工作原理描述
AD7844的基本*作需要一个外部参考电压和外部输入时种。参考电压最高为VCC,而参考电压决定了转换器的输入范围。能过配置内部控制寄存的来设置AD7844的工作模式。ADS7844的控制字如表2所列。
表2 ADS7844的控制字含义
Bit7(MSB) Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0(LSB)
S A2 A1 A0 忽略 SGL/DIF PD1 PD0
ADS7844的控制字共有8位,其中S是起始位控制字的起始位总为“1”否忽略DIN的输入数据。A2~A0是通道选择位,在单端输入时分别对应8个通道,而对应于4个差分输入通道。Bit3没有定义。SGL/DIF是模式控制位,该位为“1”时是单端输入模式,为“0”时是差分输入模式。PD1和PD0是电源节电模式控制位,若为“00”,则表示ADS7844在不进行数据转换时自动进入电源关闭模式,若为“11”,芯片则始终处于电源开启模式。
ADS7844与微处理器之间有多种*作方式,其基本转换时序如图3所示。从图3中可见,每个完整帧通讯需要8个时钟周期,一个完整的转换需要3帧串行通讯个即要在DCLKL输入24个时钟周期,其中8个用于输入控制字,16个用于读取转换结果。控制字的所有位在时钟上升沿被锁入芯片,转换结果在时钟的下降沿被逐位移出。所有移入和移出的数据都是高位在前、低位在后。需要说明的是,ADS7844是12位A/D转换器,其转换结果只有12位,故在移出12位结果后,还需送入4个时钟来完成整个转换过程,这4个多余的时钟移出的数据为“0”,使用时不应作为转换结果处。对于16个时钟,和15个时钟周期的转换*作,可以参看有关资料,这里不再介绍。
3、 ADS7844在嵌入式系统中的应用
ADS7844可以广泛应用于智能仪器仪表系统、水、电、暖气表中。现在就我在环保监测适配器的应用中,给出硬件原理图的接口和软件程序。由于模拟串行通信稍逊于使用SPI口对ADS7844的访问,故在产品中使用了有SPI接口的单片机AT89S53。当然带有SPI接口的单片机很多。
要使用SPI接口,必须要了接SPI的一些有关容。由于篇幅所限不做详细介绍
3.1 同步串行接口(SPI)有以下的性能
① 全双工,3线同步数据传输。
② 主从可设的*作方式。
③ 高达6M位的。
④ LSB、MSB传输位在先可设。
⑤ 4位可编程的位速。
⑥ 传输结束中断标志。
⑦ 写冲突标志保护。
⑧ 可唤醒的空闲模式。
3.2 ADS7844在适配器中的硬件接口电路
以适配器中的AT89S53为例,给出ADS7844在适配器中的硬件接口电路,如图4所示。
本例应用中设AT89S53为主机,ADS7844为从机,AT89S53的P1.4是用来片选从机使能输出端。低有效。P1.7(SCK)是相位、极性4种组合的串行时钟输出。可以通过设置SPI控制寄存器的CPOL、CPHA来设置SCK的相位、极性。P1.5(MOSI)是主机数据移出,从机数据输入端。P1.6(MISO)是主机数据移入,从机数据移出端。P1.3是AD的忙信号,本设计硬件中做了联接,但是软件中没有启用。向SPI口的控制寄存器(SPCR)中写入57H,设置为禁止串行中断;开启SPI口;先输出MSB位;设单片机为主机AD为从机;有效沿为上升沿;相位为正;时钟为频率SCK=Fosc/128。设置完后将会启动SPI同步串行通信,把要采集通道的命令字写入SPI口的数据寄存器(SPDR)中,自动会由主机发送给从机A/D。然后读取SPI的状态寄存器(SPSR)Bit7,判断中断是否产生。如果中断标志置位,开始接收A/D转换的数据。
3.3 ADS7844在讯设备适配器中的程序设计如下
;变量区:21H-
;*********************************************************
SPDR DATA 86H ;SPI数据寄存器
SPCR DATA 0D5H ;SPI控制寄存器
WCON DATA 96H ;看门狗控制寄存器
SPSR DATA 0AAH ;SPI状态寄存器
SS EQU P1.4 ;从口选择端
WDOG EQU P1.0 ;程序运行灯
TXLED EQU P1.1 ;发送数据指示灯
BUSY EQU P1.3 ;
MOSI EQU P1.5 ;主机输出,从机输入
MISO EQU P1.6 ;主机输入,从机输出
SCK EQU P1.7 ; 主机输出的串行时钟
;*********************************************************
;位矢量区:20-21H
;*********************************************************
JUST10MS BIT 20H
;***********************************************
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIMER0_INT
; ORG 0023H
; AJMP
ORG 0040H
;*************************************************
;主程序
;*************************************************
MAIN:
MOV SP,#65H ;堆栈指针50H
MOV WCON,#0H ;看门狗初始化
CPL WDOG
MOV A,#00H
MOV R4,#0FFH
SETB EA
CLRRAM:
MOV @R0,A
INC R0
CPL WDOG
DJNZ R4,CLRRAM
LCALL INITIMER ;定时器初始化
LCALL SER_INT ;串口初始化
LCALL SETCHA ;准备发往上位机的数据包格式
MOV SPCR,#57H ;SPI工作模式初始化
;*****************************************************************
;SPCR: 写入57H
;禁止串行中断;开启SPI口;先输出MSB位;设单片机为主机AD为从机;
;有效沿为上升沿;相位为正;时钟为频率SCK=Fosc/128
;******************************************************************
STARTSMPL:
CLR TXLED ;喂狗
NOP
MOV R4,#87H ;检测第一通道,改变R4的值,可以改变采集通道.
LCALL CHANNEL ;读取ADS7844的转换数据子程序
……略
;********************************
;模块功能: 数据接收,读取的数据存入R6、R7
;说明:R0、R1为数据缓冲区,暂存ADS7844的转换数据
;程序名:CHANNEL
;********************************
CHANNEL:
CLR SS ;片选有效
NOP
REW: MOV SPDR,R4 ;命令字
NOP
nop
nop
nop
CLR EA ; 集结束开始关中断
REVD1:
MOV A,SPSR
JNB ACC.7,REVD1 ;判断SPIF位是否为1 ,为1则转换结束,可读以取
MOV A,SPDR
MOV A,#00H
MOV SPDR,#00H
NOP
NOP
NOP
NOP
REVDH: MOV A,SPSR
JNB ACC.7,REVDH ;判断SPIF位是否为1 , 1则读取转换数据的高字节
MOV A,SPDR
MOV R0,A ;读取高位字节
MOV R6,A ;保存高字数据
MOV SPDR,#00H
MOV A,#00H
NOP
NOP
NOP
NOP
REVDL: MOV A,SPSR
JNB ACC.7,REVDL ;判断SPIF位是否为1, 为1则读取转换数据的低字节
MOV A,SPDR
MOV R1,A ; ;读取低字数据
MOV R7,A ; 保存低字数据
NOP
SETB SS
SETB EA ;采集结束开中断
RET
END
展开阅读全文