TLC1543 是11通道10位串行A/D转换器,TLC2543是11通道12位串行A/D转换器. TLC1543是美国TI公司生产的多通道、低价格的模数转换器。采用串行通信接口,具有输入通道多、性价比高、易于和单片机接口的特点,可广泛应用于各种数据采集系统。 TLC1543为20脚DIP封装的CMOS 10位开关电容逐次A/D逼近模数转换器 TLC1543工作时序如图所示,其工作过程分为两个周期:访问周期和采样周期。工作状态由CS使能或禁止,工作时CS必须置低电平。CS为高电平时,I/O CLOCK、ADDRESS被禁止,同时DATA OUT为高阻状态。当CPU使CS变低时,TLC1543开始数据转换,I/O CLOCK、ADDRESS使能,DATA OUT脱离高阻状态。随后,CPU向ADDRESS端提供4位通道地址,控制14个模拟通道选择器从11个外部模拟输入和3个内部自测电压中选通1路送到采样保持电路。同时,I/O CLOCK端输入时钟时序,CPU从DATA OUT 端接收前一次A/D转换结果。I/O CLOCK从CPU 接受10个时钟长度的时钟序列。前4个时钟用4位地址从ADDRESS端装载地址寄存器,选择所需的模拟通道,后6个时钟对模拟输入的采样提供控制时序。模拟输入的采样起始于第4个 I/O CLOCK的下降沿,而采样一直持续6个I/O CLOCK周期,并一直保持到第10个 I/O CLOCK的下降沿。转换过程中,CS的下降沿使DATA OUT引脚脱离高阻状态并起动一次I/O CLOCK的工作过程。CS的上升沿终止这个过程并在规定的延迟时间内使DATA OUT引脚返回到高阻状态,经过两个系统时钟周期后禁止I/OCLOCK和ADDRESS端。 时序图:
下降沿输出数据,上升沿输入地址
CS片选拉低,一次转换开始,同时输出上次转换的数据
时序使用方法:
1、CS片选拉高,EOC拉高,CLK时钟拉低
2、CS片选拉低,开始读出第一位数据
3、在第一个时钟上升沿,输入一个地址数据
4、之后在每个时钟的下降沿输出AD转换数据,在上升沿输入地址数据
5、TLC1543是10位AD,因此有10个时钟,TLC2543是位AD,因此有12个时钟
6、一个操作过程结束后,片选CS拉高,EOC会在最后第10个时钟的下降沿触发拉低,开始AD转换,此时,输出被禁止,等到转换结束后EOC置位1,代表转换结束。等到CS片选再次拉低,开始第二次操作。
TLC1543的电路图(与单片机连接)
TLC15433的引脚图
TLC25433引脚图
A0~A10为11个模拟输入通道
REF-通常接地
REF+接+5v
则输入可测电压为0~5v
cs位片选段,低电平有效,不用时置1,用时保持为0
DATAOUT为AD转换数据输出端(10位)
ADDRESS为地址输入端,可输入相关的命令,前四位用于选择不同的输入通道,如:0000位选择0通道,0001位选择1通道,及数据输出的格式(高位先出还是低位先出)。
TLC1543的三个控制输入端CS、I/O CLOCK、ADDRESS和一个数据输出端DATA OUT遵循串行外设接口SPI协议,要求微处理器具有SPI接口。但大多数单片机均未内置SPI接口(如目前国内广泛采用的MCS51和PIC系列单片机),需通过软件模拟SPI协议以便和TLC1543接口。TLC1543芯片的三个输入端和一个输出端与51系列单片机的I/O口可直接连接,具体连接方式可参见图3。软件设计中,应注意区分TLC1543的11个模拟输入通道和3个内部测试电压地址。附表为模拟通道和内部电压测试地址。程序软件编写应注意TLC1543通道地址必须为写入字节的高四位,而CPU读入的数据是芯片上次A/D转换完成的数据。在本文后附的程序中对此有详细的说明。模拟输入通道选择 输入寄存器地址(2进制)。
A0 0000
A1 0001
A2 0010
A3 0011
A4 0100
A5 0101
A6 0110
A7 0111
A8 1000
A9 1001
A10 1010
内部测试电压选择 输入地址 输出结果(16进制)
(Vref++ Vref-)/2_ 1011 200
Vref- 1100 000
Vref+ 1101 3ff
注:Vref+为加到TLC1543 REF+端的电压,Vref-是加到REF-端的电压
TLC1543子函数
uint read1543(void)
{
uchar i=0;
uint ad_value=0;
TCL2543_CLK=0; //一次转换开始前,CS片选置1,EOC置1,时钟置0
TCL2543_CS=1;
EOC=1;
delay_1ms(); //保持一段时间,拉低CS片选
TCL2543_CS=0;
delay_1ms(); //保持一段时间,等数据稳定后再读取第一位数据A9(最高位)
for(i=0;i<10;i++)
{
if(TCL2543_DOUT) ad_value|=0x0001; //读取第一位数据
TCL2543_DIN=0; //将通道选择数据准备好,上升沿锁存进TLC1543
TCL2543_CLK=1; //上升沿
delay_1ms(); //保持一段时间
TCL2543_CLK=0; //下降沿保持一段时间,在读取数据
delay_1ms();
ad_value=ad_value<<1; //移位,将最低位空出,以装入第2位数据(A8)
}
TCL2543_CS=1; //一次转换结束后将CS片选拉高
ad_value=ad_value>>1; //由于多左移了1位,所以
return ad_value;
}
tlc1543 protues仿真图
|