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