1 ADS1211的结构及特点
ADS1211是美国Burr-Brown公司生产的高精度模数转换(A/D)芯片,它采用24脚双列直插式封装形式,图1是ADS1211的引脚排列,各引脚的功能如表1所列。
表1 ADS1211的引脚功能
ADS1211是具有高精度宽动态范围的A/D转换芯片,它带有自校正∑-ΔA/D转换器。其内部由可编程增益放大器、二阶∑-Δ调制器、调制控制单元、可编程数字滤波器和微处理器组成,其中微处理器含有指令寄存器、命令寄存器、数据寄存器、校正寄存器、串行接口、时钟产生电路、+2.5V基准源、+3.3V参考电压源以4通道差动输入模拟开关等。图2是ADS1211的内部结构框图。当ADS1211再次上电复位时,首先由微处理器将内部所有的寄存器复位成缺省状态,并将调制器复位成稳定状态,再以850Hz的频率进行自校准,然后时入转换状态(即正常操作模式)。ADS1211的主要特点如下:
●采用∑-ΔA/D转换方式;
●具有24位无误码率,其线性误差小于0.0015%;
●在10Hz时,可获得23位有效分辨率,在1000Hz时,可达到20位的有效分辨能力;
●采用4通道差动输入;
●内含可编程增益放大器,放大倍数可在1,2,4,8,16中选取;
●带有内部/外部基准源;
●芯片内有半自动校准功能;
●与SPI兼容,并可提供双线控制模式。
2 ADS1211的重要寄存器设置
2.1 指令寄存器(2N5R)
ADS1211中的指令寄存器格式及其设置说明如图3所示。
2.2 命令寄存器(CMR)
图4是ADS1211中的命令寄存器格式。其各位的含义和设置如下:
BIAS:偏置电压输出开/关位。BIAS为“0”时为关状态;为“1”时为开状态;
REF0:基准电压输出开/关位。为“0”时为关状态;为“1”时为开状态;
DF:数据输出格式位。“0”为二进制补码;“1”为偏移二进制码;
V/B:数据极性位。“0”为双极性;“1”为单极性;
BD:字节顺序位为“0”时表示先读最高字节;为“1”表示先读最低字节;
MSB:位顺序控制位。“0”表示先读最高位;“1”表示先读最低位;
SDL:数据输出引脚选择位。为“0”时,选择SDL为输出;为“1”时,选择Sdout为输出;
DRDY:数据准备就绪位。“0”为准备好;“1”为未准备好;
G2~G0:增益选择控制位。
MD2~MD0:操作模式位,其操作方式的选择如表2所列。
表2 ADS1211的操作模式选择 [table][/table]
CH1~CH0:通道选择位,该两位组合为00、01、10、11可分别用来选择1通道到通道4。
SF2~SF0:加速因子选择位,从000~100的五种组合分别表示选择1、2、4、8和16。
DR12~DR0:抽取率选择位,其有效范围为20~8000。ADS1211的转换速率和加速因子的关系如下:
转换速率fDATA=fxin·TMR512抽取率
式中:fxin指的是从Xm引脚引入的时钟信号的频率;TMR则是指加速因子的值;
应当注意的是:增益和加速因子的乘积应不大于16。
2.3 输出数据寄存器(DOR)
输出数据寄存器DOR是一个24位寄存器,可用来存放最新的转换结果,DOR内容刚好在DRDY信号由高变低前被更新,如果在(1/fDATA-12×1/fxin)所定义的时间间隔内设有读取DOR的内容,则原有的内容将被覆盖。
另外,OCR和FCR寄存器还可用于存放零点校正和满量程校正参数值。
3 ADS1211与89C52的接口电路
图5是在测量三相电压和电流时的ADS1211与89C52单片机的实际硬件接口电路,笔者采取从动方式,并采用四线制方式来实现ADS1211与单片机的接口,即将DRDY、SCLK、SDIO、SDOUT四条接口信号线分别接至89C52单片机的P1.1、P1.2、P1.3、P1.4引脚。
4 串行接口读/写时序
图6是ADS1211在从动方式下将片选端固定接地时与单片机进行接口的软件读/写时序。
5 软件流程图
根据图5所示的ADS1211与单片机的接口电路给出的程序流程图如图7所示。
如果将电路设置为从动方式,那么增益GAIN应选为1,加速因子TMR为1,fXIN选择10MHz,抽取率(DR)为1952(即0011110100000),fDATA为10MHz并选择单极性输入和半自动校准方式,同时选择通道输入1,那么,具体的测量程序和读写延时子程序如下:
测量主程序:
SDIO EQV P1.3
SCLK EQV P1.2
DRDY EQV P1.1
SDOUT EQV P1.4
ORG 0000H
CLR EA
CLR SCLK
LCALL TIME ;延时子程序
JB DRDY,$
NOP
NOP
MOV A,#64H
LCALL WRBYTE;WRITE-INSR
NOP
NOP
MOV A,#52H
LCALL WRBYTE;
MOV A,#20H
LCALL WRBYTE;
MOV A,#70H
LCALL WRGYTE;
MOV A,#0AON
LCALL WRBYTE;WRITE-CMR
SETB DRDY
JB DYDY,$
NOP
NOP
MOV A,#0AON
LCALL WRTYTE;WRITE-INSR
NOP
NOP
LCALL RDBYTE
MOV 22H,A;
LCALL RDBYTE
MOV 21H,A;
LCALL RDBYTE
MOV 20H,A;READ-DOR
SETB DRDY
。
。
。
读数据子程序;
RDBYTE:MOV R7,#8
RDBYTE1:SETB SCLK
MOV C,SDOUT
CLR SCLK
RLC A
DJNZ R7,RDBYTE1
RET
写数据子程序:
WRBYTE:MOV R7,#8
WRBYTE1:RLC A
SETB SCLK
MOV SDIO,C
CLK SCLK
DJZN R7,WRBYTE1
RET
延时子程序:
TIME:MOV R6,#10
TIME1:MOV R7,#OFFH
DJNZ R7,$
DJNZ R6,TIME1
RET
6 注意事项
利用该方法设计接口电路时,应注意以下两点:
(1)地线要尽量短而粗,数字地和模拟地要分开布线,并要在一点汇合,模拟地可布置在ADS1211芯片的下面,但数字信号应避免布在AD78715芯片的下面, 时钟信号要用数字地屏蔽,输入的模拟信号要用模拟地屏蔽。
(2)模拟电源AVDD和数字电源DVDD最好分开用,最好使用精密基准电源,因为精密其准电源可以提高测量数据的稳定度。
责任编辑:gt