标题:
Σ-Δ模数转换电路AD1555/AD1556的应用
[打印本页]
作者:
yuyang911220
时间:
2017-5-16 10:10
标题:
Σ-Δ模数转换电路AD1555/AD1556的应用
1引言迎访问无由电子开发网(技术文章 在线阅读 在线商城
AD1555/AD1556电路是高动态、高精度Σ?Δ模数转换器件,其内部的可编程增益放大器可实现五种放大倍数,从而实现5种不同的输入范围 1.6V、636mV、187mV、47mV、12.4mV。调制器的采样频率为256kHz,它的输出正比于输入电压。
2AD1555和AD1556的内部构成及引脚排列
AD1555是AD公司24位Σ?Δ模数转换器件,内部集成了可编程的增益放大器,它是为低频、高动态应用场合而设计的,输出的串行数据和输入的模拟信号成正比。它和数字滤波器AD1556配合使用,可实现工业上最高性能1kHz的模数转换。其连续模拟信号调制器输入结构可以使在设计电路中不使用外部抗混叠滤波器,它的可编程增益放大器可减化电路的设计,扩展动态范围,减小电路板的面积。它的低功率和等待模式使它也适合远程电池供电的数据测量系统。
AD1555和AD1556的工作原理如图1所示,AD1555主要由多路选择器、可编程增益放大器、模数转换电路、振荡电路、控制逻辑电路组成。 AD1556主要由输入多路选择器、数字滤波器、数据寄存器、输出多路选择电路、可编程增益放大器控制电路、配置寄存器电路、数据输入移位寄存器电路、分频电路等组成。图1为其引脚排列。
图1 AD1555和AD1556芯片的连接示意图
3 AD1555的引脚功能
AGND:模拟信号地。
PGAOUT:可编程增益放大器输出,它是内部可编程增益放大器电路的输出,它和AD1555的MODIN直接相连。
+VA,-VA:±5V模拟电压。
AIN(+),AIN(-):模拟信号输入,它是多路选择器电路1个输入信号。
TIN(+),TIN(-):测试信号输入,它是多路选择器电路1个输入信号。
NC:厂家保留,通常用户不连。
CB0-CB4:调制器控制,用它来控制多路选择器,可编程增益设置和输入选择,如表1和表2所示。AD1555和AD1556共同使用时,它和AD1556的CB0-CB4直接相连。
表1 增益选择
CB2
CB1
CB0
增益
0
0
0
1
0
0
1
2.5
0
1
0
8.5
0
1
1
34
1
0
0
128
表2 输入选择
CB4
CB3
输入
0
0
内部接地输入
0
1
TIN输入
1
0
AIN输入
MFLG:调制器错误标志。它和AD1556的MFLG直接相连。如果输入信号超出AD1556的量程,它会发出1个高电平脉冲。
VL,DGND:数字电源,通常为5V。
MDATA:调制器输出,与和A1556的MDATA相连。
MCLK:调制器时钟输入,时钟输入信号通常是256kHz,提供给Σ?Δ调制器所需的时钟,它和AD1556相连,由AD1556提供时钟。
REFCAP1:模数转换器滤波器,在它和AGND3之间可以连接1个22μF的钽电容器以滤除参考源噪声。
REFCAP2:参考电压滤波器。
REFIN:参考电压输入,输入3V的电压提供给内部的Σ?Δ模数转换电路。
AGND2:模拟地。
MODIN:调制器输入端,通常直接和PGAOUT相连。
4 AD1556的引脚功能
PGA0-PGA4:可编程增益放大器和多路选择器控制输入端。它在复位期间或硬件选择条件下设置AD1556相应的配置寄存器。
BW0-BW2:输出速率控制输入端.它在复位期间或硬件选择条件下设置AD1556相应的配置寄存器,其相应的意义如表3所示。
表3 速率选择
BW2
BW1
BW0
输出速率/ms
0
0
0
4
0
0
1
2
0
1
0
1
0
1
1
1/2
1
0
0
1/4
1
0
1
1/8
1
1
0
1/16
1
1
1
保留
H/S:硬件/软件方式选择,当它为高电平时,配置寄存器由PGA0?PGA4和BW0?BW2来设置相应的位;当它接地时,由软件写入配置寄存器。
VL,DGND:数字电源,3.3V或5V。
SCLK:串行数据时钟,数据写入与读出的时钟信号。
DOUT:串行数据输出,当RSEL为有效时,它输出的是状态寄存器的内容,否则,它输出的是模数转换的结果。
DRDY:数据准备好,当输出为高电平时,它指示输出寄存器数据准备好,可以访问。
CS:片选信号,在数据访问期间必须保持低电平。
R/W:读写信号,读时保持高电平,写时保持低电平,并使DOUT保持高阻状态。
RSEL:寄存器选择信号,当它为高电平时访问的是数据寄存器,当它为低电平时,访问的是状态寄存器。
DIN:串行数据输入,在写操作的同时输入数据,高位在前,低位在后,SCLK下降沿数据有效。
ERROR:出错标志,当模数转换或数字滤波出错,它会输出低电平,并且状态寄存器相应的ERROR为1(见表5)。
RESET:滤波器复位信号,当它为高电平时,清除状态寄存器的错误位,并且把寄存器配置成相应的硬件引脚设置成的状态。
PWRDN:硬件掉电控制。
CSEL:滤波器输入选择,当它为高电平时,滤波器选择TDATA输入,当它为低电平时,滤波器选择MDATA输入。
TDATA:测试数据,输入至滤波器以便用户测试数据。
SYNC:同步输入信号,当它为高电平时,在CLKIN的第一个上升沿,它会清除AD1556滤波器。
CLKIN:时钟输入,给AD1556提供所需的时钟,并经过4分频后从MCLK口输入到AD1555。
MCLK:调制器时钟,给AD1555提供时钟信号。
MDATA:调制器数据,它接收AD1555提供的位流数据。
MFLG:调制器错误标志,当输入模拟信号超出AD1555的量程时,AD1555的MFLG变为高电平,AD1556在第一个CLKIN上升沿检测到这个信号,并且使ERROR信号变低,把状态寄存器的BIT24设高。
CB0-CB4调制器控制,用来设置AD1555的状态。
5 AD1556的配置寄存器和状态寄存器
5.1配置寄存器
配置寄存器是通过外部控制器写入的,当H/S为低电平时,CB0?CB4用来设置AD1555可编程增益放大器的输入和放大倍数,如表4所示。
CB4、CB3决定可编程增益放大器的输入(当都为1时例外),如表1所示。
此时,CB2?CB0决定可编程放大器的倍数。
表4 配置寄存器
0
1
2
3
4
5
6
7
CB0
CB1
CB2
CB3
CB4
DRDYBUF
BW0
BW1
8
9
10
11
12
13
14
15
BW2
X
CSEL
PWRDN
X
X
X
X
DRDYBUF位决定DRDY输出引脚的方式,当给RDYBUF位写入0时,DRDY为CMOS通常的推拉方式,当给DRDYBUF位写1时,DRDY为开漏式的PMOS方式,这种方式在多个AD1556情况下使用。
BW2-BW0是滤波器的带宽选择,见表3。
CSEL为TDATA选择输入,当给TDATA位写入1时,选择TDATA输入。
PWRDN掉电选择,当给PWRDN位写入1时,进入掉电状态。
5.2状态寄存器
状态寄存器是1个24位寄存器,当有错误发生时,相应的位就会被置位,它还保存着电路的配置状态,它的各个位的相应含义如表5所示。
表5 状态寄存器
位号
0
1
2
3
4
5
6
7
功能
CB0
CB1
CB2
CB3
CB4
X
BW0
BW1
位号
8
9
10
11
12
13
14
15
功能
BW2
X
CSEL
PWRDN
X
X
X
X
位号
16
17
18
19
20
21
22
23
功能
DRNG
FLSTL
DRDY
ACC
X
MFLG
OVWR
ERROR
CB0-CB4的含义见表1和表2。
BW0-BW2的含义见表3。
6 AD1555和AD1556硬件接口电路
传感器的输出接到AD1555的AIN(+)、AIN(-)输入端。增益放大器的输出PGAOUT直接连到Σ?Δ模数转换电路输入引脚MODIN,+3V 通过REFIN输入引脚提供给AD1555的参考电压。AD1555的可编程增益放大器的放大倍数和输入选择控制引脚CB0?CB4和AD1556的 CB0?CB4直接相连,由AD1556来配置。AD1556的CLKIN外接1个1.024MHz的时钟信号,H/S接地,CSEL接地,CS、 R/W、RSEL、SCLK,DIN,DOUT,DRDY,ERROR、SYNC分别与单片机AT89C51的P1口相连(AD1556和单片机的接口电路略)。
7 接口软件
下面只介绍AD1556与AT89C51单片机接口的读写程序。
7.1AD1555和AD1556的初始化写入软件
假设AD1555的可编程增益放大器的放大倍数为1,采样频率为250Hz,则AD1556的配置寄存器为80H。
#include
#defineHIGH1
#defineLOW0
#defineFALSE0
#defineTRUE~FALSE
sbitCS=0x80
sbitRW=0x81
sbitRSEL=0x82
sbitSCLK=0x83
sbitDOUT=0x84
sbitDIN=0x85
sbitDRDY=0x86
sbitERROR=0x87
/*延时子程序*/
voiddelay(void)
{inti
for(i=0;i<100;i++)
{
}
}
/*模拟向AD1556写入一个数据位*/
voidW_bit(bitwbit){
DIN=wbit
SCLK=HIGH
delay()
SCLK=LOW;wbit写入芯片
delay()}
voidW_word(unsignedintwdata){
chari
bittemp
CS=LOW;选通芯片
RW=LOW;写操作
/*16位数据由高到低写入芯片*/
for(i=1;i<=16;i++){
temp=(bit)(wdata&0x80)
W_bit(temp)
wdata=wdata<<1}}
在主程序中直接调用上面子程序可实现对配置寄存器的写:
W_word(0x8)
7.2AD1556的读出程序
/*模拟从AD1556一个数据位*/
bitR_bit(void){
bitrbit
SCLK=HIGH
delay()
SCLK=LOW
rbit=DOUT
delay()
return(rbit)
}
unsignedlongR_word(bitis)
{unsignedlongrdata=0
charj
bitrtemp
if(is);判断是否读配置寄存器
RSEL=HIGH;是,RSEL设为高电平
else
RESL=LOW;否,读数据,设为低电平
RW=HIGH;发出读信号
CS=LOW;选通AD1555
SCLK=HIGH
while(DRDY)
{
for(j=1;j<=24;j++)
{
rdata=rdata*2
rtemp=R_bit()
rdata=rdata+
(int)rtemp
}
delay()
}
CS=HIGH
returnrdata
}
读状态寄存器和数据都是用上面子程序R_word(is)来实现的。要读状态寄存器则传递给is的值为1,要读数据,则传递给is的值为0
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0