12位TLC2543模数转换总结
12位A/D-TLV2543与87C51的接口应用
12位A/D-TLV2543与87C51的接口应用
张智辉;丘春玲;田地
【期刊名称】《微计算机信息》
【年(卷),期】2001(000)006
【摘要】本文介绍一种多通道的12位串行A/D转换器TLV2543的功能特点和工作过程,讨论了软件编程输入数据对器件工作方式的选择,简要叙述了器件时的工作时序,并给出TLV2543与8751应用硬件接口电路和软件程序清单。
【总页数】3页(P29-31)
【作者】张智辉;丘春玲;田地
【作者单位】长春市吉林大学朝阳校区仪器系研究生993#130026;吉林大学朝阳校区仪器系教研室130026
【正文语种】中文
【中图分类】TN792
【相关文献】
1.TMS320C31 DSP和12位串行D/A MAX536之间的接口设计及其应用 [J], 刘军虎;吕级三;吴学森
2.12位4路数模转换器MAX526与单片机的接口应用 [J], 王君立;壮凌;姜耀丽;檀慧明
3.14位A/D-MAX125与80186及DMA控制器的接口应用 [J], 程传玲;苏志波;林军
4.12位A/D-TLV2543与87C51的接口应用 [J], 张智辉;丘春玲;田地
5.12位A/D—TLV2543与87C51的接口应用 [J], 张智辉;丘春玲;田地
因版权原因,仅展示原文概要,查看原文内容请购买。
关于tlc2543输入通道的解释和程序
书上和网上的相关程序很多,但是有一个问题大家可能会遇到,就是读出的数不是想要的通道的数值,我就谈谈这个的问题。
见网上有人问到TLC2543多路转换时出现通道之间串位的问题,我也遇到了,例如:输入的是通道0,读的数却是通道1,等等。
我分析了一下,出现问题的原因如下:书上印的、网上传的关于TLC2543转换输出12位的子函数的形参大多是uchar型的,如调取子函数:read(uchar port)。
调取子函数时以十六进制表示输入的通道数,如通道0为0x00,通道1为ox10等等,可是子函数里有一条是port<<=4;这让只有八位的uchar port向左移四位之后,原来的包含通道信息的高四位被舍弃,变为原来的低四位,通道数肯定不是你想要的那个通道了。
以uchar为形参,用十六进制表示通道数时去掉port<<=4;才是正确的。
如果你非要加上port<<=4;也可以,此时形参设定为uchar,那你就输入十进制的通道数,如通道0为0,通道1为1,如通道1,写为二进制是0001,那么port就是0000 0001,左移4位正好变为0001 0000,也是对的。
而偏偏有人输入的是十进制的通道数,再加上1条左移,那读出的数肯定就不对了。
如果设定通道变量为uint port,这时port为16位整型,port的高8位都是0,左移4位之后剩下的高4位仍然是0,此时余下的12位加上左移补上的4个0,12位输出的同时正好把前12位同步输入。
这个时候,左移4位这条指令也是必不可少的。
#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charsbit ADout=P1^0;sbit ADin=P1^1;sbit CS=P1^2;sbit CLK=P1^3;sbit EOC=P1^4;sbit LE1=P1^6;sbit LE2=P1^7;uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x7c};uchar D=0,wei[]={0xfe,0xfd,0xfb,0xf7,0xdf,0xef};float k,z;uint n;//////////延时子函数void delay(uint us){uchar i;for(i=0;i<us;i++) _nop_();}////////数码管显示子函数void display(uint AD){uchar q,b,s,g; //////千位、百位、十位、个位q=AD/1000;b=AD/100%10;s=AD/10%10;g=AD%10;P0=0xff;LE1=1;P0=wei[0];LE1=0;LE2=1;P0=duan[q];LE2=0;delay(10);P0=0xff;LE1=1;P0=wei[1];LE1=0;LE2=1;P0=duan[b];LE2=0;delay(10);P0=0xff;LE1=1;P0=wei[2];LE1=0;LE2=1;P0=duan[s];LE2=0;delay(10);P0=0xff;LE1=1;P0=wei[3];LE1=0;LE2=1;P0=duan[g];LE2=0;delay(10);}///////TLC2543转换和读取子函数,只转换了三路模拟电压信号。
AD转换器TLC2453与51单片机接口设计
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2TLC2543的特点(1)12位分辩率A/D转换器;(2)在工作温度范围内10μs转换时间;(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66kbps;(6)线性误差±1LSBmax;(7)有转换结束输出EOC;(8)具有单、双极性输出;(9)可编程的MSB或LSB前导;(10)可编程输出数据长度。
3TLC2543的引脚排列及说明TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。
图1TLC2543的封装4接口时序可以用四种传输方法使TLC2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。
一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。
图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次时序。
表1TLC2543引脚说明5TLC2543在智能仪器仪表中的应用TLC2543是12位分辩率,与MAX186在功能上基本相同,但价格比MAX186低得多,因此TLC2543在便携式数据记录仪、医用仪器、电力检测仪表中具有广泛的应用。
下面主要讲述TLC2543在电力监控显示屏中的应用。
在电厂和变电站中,电网中的电压和电流由于多种原因常常处于波动状态,为了给工作人员提供有效数据,并在超值范围内采取有效措施,监测电网中电压和电流值是非常必要的。
该系统主要是采用TLC2543作A/D转换器,把电压和电流值转换成数字信号,GMS90C32作CPU,进行数字信号处理,PS7219作LED显示驱动器,把监测的电压和电流值显示出来,本文主要介绍TLC2543在电力监控显示屏中与单片机GMS90C32的接口部分,包括硬件和软件两部分。
AD转换参数 ----INL,DNL
说起来都是教科书害人。
几乎所有的教科书、参考书、文献选编都只关心模数器件的分辨率和速度,而忽略了器件的精度。
而关系到器件精度的两个非常重要的参数就是INL值和DNL值。
小弟觉得非常有必要专门写一篇贴子来普及一下模数器件精度这个重要的概念。
说精度之前,首先要说分辨率。
最近已经有贴子热门讨论了这个问题,结论是分辨率决不等同于精度。
比如一块精度0.2%(或常说的准确度0.2级)的四位半万用表,测得A点电压1.0000V,B电压1.0005V,可以分出B比A高0.0005V,但A点电压的真实值可能在0.9980~1.0020之间不确定。
那么,既然数字万用表存在着精度和分辨率两个指标,那么,对于ADC和DAC,除了分辨率以外,也存在精度的指标。
模数器件的精度指标是用积分非线性度(Interger NonLiner)即INL值来表示。
也有的器件手册用 Line arity error 来表示。
他表示了ADC器件在所有的数值点上对应的模拟值,和真实值之间误差最大的那一点的误差值。
也就是,输出数值偏离线性最大的距离。
单位是LSB(即最低位所表示的量)。
比如12位ADC:TLC2543,INL值为1LSB。
那么,如果基准4.095V,测某电压得的转换结果是1000,那么,真实电压值可能分布在0.999~1.001V之间。
对于DAC也是类似的。
比如DAC7512,INL值为8LSB,那么,如果基准4.095V,给定数字量1000,那么输出电压可能是0.992~1.008V之间。
下面再说DNL值。
理论上说,模数器件相邻量个数据之间,模拟量的差值都是一样的。
就相一把疏密均匀的尺子。
但实际并不如此。
一把分辨率1毫米的尺子,相邻两刻度之间也不可能都是1毫米整。
那么,AD C相邻两刻度之间最大的差异就叫差分非线性值(Differencial NonLiner)。
DNL值如果大于1,那么这个ADC甚至不能保证是单调的,输入电压增大,在某个点数值反而会减小。
ADC的积分非线性和微分非线性
模数器件的精度指标是用积分非线性度(Interger NonLiner)即INL值来表示。
也有的器件手册用Linearity error 来表示。
他表示了ADC器件在所有的数值点上对应的模拟值,和真实值之间误差最大的那一点的误差值。
也就是,输出数值偏离线性最大的距离。
单位是LSB(即最低位所表示的量)。
比如12位ADC:TLC2543,INL值为1LSB。
那么,如果基准4.095V,测某电压得的转换结果是1000,那么,真实电压值可能分布在0.999~1.001V之间。
对于DAC也是类似的。
比如DAC7512,INL值为8LSB,那么,如果基准4.095V,给定数字量1000,那么输出电压可能是0.992~1.008V之间。
下面再说DNL值。
理论上说,模数器件相邻量个数据之间,模拟量的差值都是一样的。
就相一把疏密均匀的尺子。
但实际并不如此。
一把分辨率1毫米的尺子,相邻两刻度之间也不可能都是1毫米整。
那么,ADC相邻两刻度之间最大的差异就叫差分非线性值(Differencial NonLiner)。
DNL值如果大于1,那么这个ADC甚至不能保证是单调的,输入电压增大,在某个点数值反而会减小。
这种现象在SAR(逐位比较)型ADC中很常见。
举个例子,某12位ADC,INL=8LSB,DNL=3LSB(性能比较差),基准4.095V,测A电压读数1000,测B电压度数1200。
那么,可判断B点电压比A点高197~203mV。
而不是准确的200mV。
对于DAC也是一样的,某DAC的DNL 值3LSB。
那么,如果数字量增加200,实际电压增加量可能在197~203mV之间。
总结:(1)INL(Interger NonLinear,Linearity error)精度。
理解为单值数据误差,对应该点模拟数据由于元器件及结构造成的不能精确测量产生的误差。
(2)DNL(Differential NonLinear)差分非线性值。
TLC2543TLC1543
TLC2543TLC1543 12位10位AD数据转换时序图:下降沿输出数据,上升沿输⼊地址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的引脚图A0~A10为11个模拟输⼊通道REF-通常接地REF+接+5v则输⼊可测电压为0~5vcs位⽚选段,低电平有效,不⽤时置1,⽤时保持为0DATAOUT为AD转换数据输出端(10位)ADDRESS为地址输⼊端,可输⼊相关的命令,前四位⽤于选择不同的输⼊通道,如:0000位选择0通道,0001位选择1通道,及数据输出的格式(⾼位先出还是低位先出)。
TLC1543⼦函数uint read1543(void){uchar i=0;uint ad_value=0;TCL2543_CLK=0; //⼀次转换开始前,CS⽚选置1,EOC置1,时钟置0TCL2543_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; //将通道选择数据准备好,上升沿锁存进TLC1543TCL2543_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;}。
TLC2543引脚、功能及时序中文资料转
TLC2543引脚、功能及时序中文资料(转)应用2010-01-26 10:03:30 阅读825 评论0 字号:大中小一、引脚:TLC2543为20脚DIP封装,引脚图如下图所示。
TLC2543具有4线制串行接口,分别为片选端(CS),串行时钟输入端(I/O CLOCK),串行数据输入端(DATA IN)和串行数据输出端(DATA OUT)。
它可以直接与SPI器件进行连接,不需要其他外部逻辑。
同时,它还在高达4MHz的串行速率下与主机进行通信。
TLC2543除了具有高速的转换速度外,片内还集成了14路多路开关。
其中n路为外部模拟量输入,3路为片内自测电压输入。
在转换结束后,EOC引脚变为高电平,转换过程中由片内时钟系统提供时钟,无需外部时钟。
在AD转换器空闲期间,可以通过编程方式进入断电模式,此时器件耗电只有25pA。
二、控制字:TLC2543的工作过程如下:首先在8、12或16时钟周期里向片内控制寄存器写入8位的控制字,控制字中的2位决定时钟长度,在最后一个时钟周期的下降沿启动AD转换过程,经过一段转换时间,在随后的8、12或16个时钟周期里,从DATA OUT脚读出数据。
控制字的定义见下表:控制字的前四位(D7-D4)代表11个模拟通道的地址;当其为1100-1110时,选择片内检测电压;当其为1111时,为软件选择的断电模式,此时,AD转换器的工作电流只有25uA.控制字的第3位和第4位(D3一D2)决定输出数据的长度,01表示输出数据长度为8位;11表示输出数据长度为16位;X1表示输出数据长度为12位,X可以为1或0。
控制字的第2位(D1)决定输出数据的格式,0表示高位在前,1表示低位在前。
控制字的第1位(D0)决定转换结果输出的格式。
当其为0时,为无极性输出(无符号二进制数),即模拟电压为Vnef+,时,转换的结果为0FFFH;模拟电压为Vnef-时,转换的结果为0000H。
当其为1时,为有极性输出(有符号二进制数),即模拟电压高于(Vnef+-Vnef-)/2时符号位为0;模拟电压低于(Vnef+-Vnef-)/2时符号位为1;模拟电压为Vnef+时,转换的结果为03FFH;模拟电压为Vnef-时,转换的结果为0800H。
TLC2543
摘要:TLC2543是德州仪器公司生产的12位开关电容型逐次逼近模数转换器,它具有三个控制输入端,采用简单的3线SPI串行接口可方便地与微机进行连接,是12位数据采集系统的最佳选择器件之一。
本文介绍了该芯片的功能、时序,并给出了8051单片机的接口电路。
关键词:模数转换器; SPI串行接口; TLC25431. 概述A/D、D/A转换器是过程及仪器仪表、设备等检测与控制装置中应用比较广泛的器件。
随着大规模集成电路技术的发展,各种高精度、低功耗、可编程、低成本的A/D转换器不断推出,使得微机控制系统的电路更加简洁,可靠性更高。
TLC2543与外围电路的连线简单,三个控制输入端为CS(片选)、输入/输出时钟(I/O CLOCK)以及串行数据输入端(DATA INPUT)。
片内的14通道多路器可以选择11个输入中的任何一个或3个内部自测试电压中的一个,采样-保持是自动的,转换结束,EOC输出变高。
TLC2543的主要特性如下:●11个模拟输入通道;●66ksps的采样速率;●最大转换时间为10μs;●SPI串行接口;●线性度误差最大为±1LSB;●低供电电流(1mA典型值);●掉电模式电流为4μA。
2. TLC2543引脚功能与接口时序2.1 TLC2543引脚排列TLC2543的引脚排列如图1所示。
引脚功能说明如下:AIN0~AIN10:模拟输入端,由内部多路器选择。
对4.1MHz的I/O CLOCK,驱动源阻抗必须小于或等于50Ω;CS:片选端,CS由高到低变化将复位内部计数器,并控制和使能DATA OUT、DATA INPUT 和I/O CLOCK。
CS由低到高的变化将在一个设置时间内禁止DATA INPUT和I/O CLOCK;DATA INPUT:串行数据输入端,串行数据以MSB为前导并在I/O CLOCK的前4个上升沿移入4位地址,用来选择下一个要转换的模拟输入信号或测试电压,之后I/O CLOCK将余下的几位依次输入;DATA OUT:A/D转换结果三态输出端,在CS为高时,该引脚处于高阻状态;当CS为低时,该引脚由前一次转换结果的MSB值置成相应的逻辑电平;EOC:转换结束端。
tl2543ad转换报告
实验名称:tl2543ad转换报告实验题目:完成tlc2543的ad转换实验,作仿真图,画出流程图;实验流程图:模拟信号stc89c51单片机数码管显示时序图:所用为12位ad转换:分析:1.上电时,EOC=“1”,CS=“1”2.使CS下降,前次转换结果的MSB即A11位数据输出到Dout供读数。
3.将输入控制字的MSB位即C7送到Din,在CS之后tsu>=1.425us后,使CLK 上升,将Din上的数据移入输入寄存器。
4.CLK下降,转换结果的A10位输出到Dout供读数。
5.在第4个CLK下降时,由前4个CLK上升沿移入寄存器的四位通道地址被译码,相应模入通道接通,其模入电压开始时对内部开关电容充电。
6.第8个CLK上升时,将Din脚的输入控制字CO位移入输入寄存器后,Din 脚即无效。
7.第11个CLK下降,上次AD结果的最低位AO输出到Dout供读数。
至此,I/O 数据已全部完成,但为实现12位同步,仍用第12个CLK脉冲,且在其第12个CLK 下降时,模入通道断开,EOC下降,本周期设置的AD转换开始,此时使CS上升。
8.经过时间tconv<=10us,转换完毕,EOC上升。
9.使CS下降,转换结果的MSB位B11输出到Dout供读数。
10.将新周期的输入控制字的MSB位D7送到Din,在CS下降之处,tSU时间处由CLK上升将Din数据移入输入寄存器。
11.CLK下降,将AD结果的B10位输出到Dout。
对应引脚:1~9、11、12——AIN0~AIN10为模拟输入端;15——CS 为片选端;17——DIN 为串行数据输入端;(控制字输入端,用于选择转换及输出数据格式)16——DOUT为A/D转换结果的三态串行输出端;(A/D转换结果的输出端。
)19——EOC为转换结束端;18——CLK为I/O时钟;(控制输入输出的时钟,由外部输入。
)14——REF+为正基准电压端;13——REF-为负基准电压端;20——VCC为电源;10——GND为地。
带串行检测和11个输入端的12位A/D转换器TLC2543C在单片机中的应用
带串行检测和11个输入端的12位A/D转换器TLC2543C
在单片机中的应用
李华贵;彭烈新
【期刊名称】《集成电路应用》
【年(卷),期】1999(000)001
【摘要】本文介绍了带串行控制和11个输入端的12位A/D转换器TLC2543C的工作原理,也介绍了TLC2543C与89C52单片机的硬件连接及其软件编程,提供了一个新疑实用的数据采集系统。
【总页数】4页(P35-37,10)
【作者】李华贵;彭烈新
【作者单位】江汉石油学院计算机系;武汉关东工业园江汉油田高技术研究所【正文语种】中文
【中图分类】TP365.1
【相关文献】
1.带光电隔离串行输出的12位A/D转换器MAX171及其应用 [J], 杨爱琴
2.12位真差分串行模数转换器MAX1274/MAX1275在温度测量系统中的应用[J], 杨世忠;邢丽娟
3.12位串行模/数转换器ADS1286在温度检测中的应用 [J], 毕金虎;朴相范
4.10位串行模/数转换器TLC1549在单片机系统中的应用 [J], 商杰;武洪涛
5.12位串行接口模数转换器TLC2543C在数据采集系统中的应用 [J], 李蒙;康德玉;黄建兵
因版权原因,仅展示原文概要,查看原文内容请购买。
TLC2543 中文资料
TLC2543 中文资料TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2 TLC254 ...TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D 转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2 TLC2543的特点(1)12位分辩率A/D转换器;(2)在工作温度范围内10μs转换时间;(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66kbps;(6)线性误差±1LSBmax;(7)有转换结束输出EOC;(8)具有单、双极性输出;(9)可编程的MSB或LSB前导;(10)可编程输出数据长度。
3TLC2543的引脚图(管脚图)及说明TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1。
表1 TLC2543引脚说明引脚号名称I/O 说明1~9,11,12 AIN0~AIN10 I 模拟量输入端。
11路输入信号由内部多路器选通。
对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率15 I 片选端。
在端由高变低时,内部计数器复位。
由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK17 DATAINPUT I 串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道16 DATA OUT O A/D转换结果的三态串行输出端。
为高时处于高阻抗状态,为低时处于激活状态19 EOC O 转换结束端。
在最后的I/OCLOCK下降沿之后,EOC从高电平变为低电平并保持到转换完成和数据准备传输为止10 GND 地。
关于TLC2543的总结
关于TLC2543的一些问题TLC2543是我调的第四个模块,严格意义上说第三个,因为A/D与D/A是相互配合使用的,在原理上有很多相同的地方。
比如逐次逼近式的A/D转换芯片,内部就存在一个D/A转换器。
总之二者在原理上有相通的地方,下面是我在调试芯片过程中遇到的一些问题:1、下面是它的管脚图以及结构框图:图1、TLC2543NC管脚图图2、2543的结构框图2、它有0~10共11个输入端口,也就是有11个通道,这11个通道是由DA TA IN的高四位决定的,而DA TA IN的低四位决定了是采用8位、12位还是16位数据输出格式,以及输出是单极性输出还是双极性输出,详见表1.需要注意的是这里的DATA IN并不是用于转换的输入数据,而是对输入通道,及一些相关格式的选择数据,相当于命令数据。
DATA OUT是一个串行的输出端,将输入的模拟量转换为数字量后,一位一位输出出来。
转换结束的信号是由EOC决定的,当它为低时表示转换结束,为高时表示正在转换,这里需要注意的是,现在转换的信号,并须在下一次有效输出信号来临时,才被输出;而当前输出的数据世上一次操作转换的结果,所以要输出当前的转换结果,至少要执行两次有效输出,才能得到正确结果。
表1、2543的输入数据功能表3、下面是2543在使用时的两种不同模式,一种是使用~CS端进行控制,一种是不使用。
很显然,第二种,2543时刻都被选通,时刻都在准备进行数据的转换,这样必然会有一定的功耗,所以如果能合理地设计~CS的选通状态,就可以减少电路的功耗。
同样的,还有以8位数据及16位数据格式输出,原理及时序图都与12位的相同,只有输出结果的位数不同,当然,相应的精度也就不同。
可根据具体需要,进行设置。
图3、采用12位输出数据并使用~CS时的序图图4、采用12位输出数据并不使用~CS时的序图。
新型模数转换器TLC2543的串行接口及运用
新型模数转换器TLC2543的串行接口及运用
卢鑫;庞伟正
【期刊名称】《半导体技术》
【年(卷),期】2001(26)6
【摘要】TLC2543是TI公司的新型模数转换器。
本文介绍了它的功能、原理以及如何用它的串行接口和微处理器构建12位的数据检测系统。
同时给出与80C5,TMS370,68HC11三个微控制器的接口电路。
【总页数】3页(P7-9)
【关键词】模数转换器;微处理器;数字检测系统;串行接口;TLC2543
【作者】卢鑫;庞伟正
【作者单位】哈尔滨工程大学电子工程系
【正文语种】中文
【中图分类】TP335.1;TP274.5
【相关文献】
1.串行模数转换器TLC2543的应用 [J], 张泳;王晓华;;;;;;;
2.带串行控制和11路输入的模数转换器TLC2543及应用 [J], 肖伸平
3.串行A/D转换器TLC2543与80C196的接口及编程 [J], 颜克华;苏开才
4.新型模数转换器TLC2543的串行接口及其应用 [J], 卢鑫;庞伟正
5.模数转换器TLC2543的串行接口及应用 [J], 卢鑫;庞伟正
因版权原因,仅展示原文概要,查看原文内容请购买。
TL2543
图3.5TLC2543芯片引脚图图3.6内部结构图3.6 TLC2543芯片引脚及内部结构TLC2543是德州仪器公司生产的12位开关电容型逐次逼近模数转换器,最大转换时间10us,11个模拟输入通道,3路内置自测试方式,采样率为66KSPS,线性误差±1LSBmax,有转换结束输出EOC,具有单极、双极性输出,可编程的MSB或LSB前导,可编程输出数据长度。
它具有三个控制输入端,采用简单三线SPI串行接口可方便的与微机进行连接,图3.5和图3.6分别是TLC2543的引脚排列图和内部结构图。
表3.2是TLC2543的引脚功能说明。
3.7 TLC2543的工作方式和输入通道的选择TLC2543是一个多通道和多工作方式的模数转换器件。
图3.5为其芯片引脚图,图3.6是它的内部结构图。
其工作方式和输入通道的选择是通过向TLC2543的控制寄存器写入一个八位的控制字来实现的。
这个八位控制字由四个部分组成:D7D6D5D4选择输入通道,D3D2选择输出数据长度,D1选择输出数据顺序,D0选择转换结果的极性。
八位控制字的各位的含义如表3.3所示。
主机以MSB为前导方式将控制字写入TLC2543的控制寄存器,每个数据位都是在CLOCK序列的上升沿被写入控制器。
表3.2引脚功能说明3.7.1 TLC2543的读写时序当片选信号/CS为高电平时,CLOCK和DATA-IN被禁止、DATA-OUT为高阻状态,以便SPI总线上的其它器件让出总线。
在片选信号/CS的下降沿,A/D转换结果的第一位数据出现在DATA-OUT引脚上,A/D转换结果的其他数据位在时钟信号CLOCK的下降沿被串行输出到DATA-OUT。
在片选信号/CS下降以后,时钟信号CLOCK的前八个上升沿将八位控制字从DATA_IN引脚串行输入到TLC2543的控制寄存器。
在片选信号/CS下降以后,经历8个(12个或16个)时钟信号完成对A/D转换器的一次读写。
12位TLC2543模数转换总结
15
I
驱动源阻抗 必须小于或 等于50Ω, 而且用60pF 电容来限制 模拟输入电 压的斜率 片选端。在 端由高变低 时,内部计 数器复位。 由低变高 时,在设定 时间内禁止 DATAINPUT 和I/O CLOCK 串行数据输 入端。由4 位的串行地 址输入来选 择模拟量输 入通道 A/D转换结 果的三态串
#include<reg52.h> #include<intrins.h> //适用nop延时要用这个函数 #define uchar unsigned char
#define uint unsigned int #define nop _nop_() #define lcd_data P0 sbit clock=P2^0; sbit input=P2^1; sbit out=P2^2; sbit cs=P2^3; sbit psb=P2^4; sbit rs=P2^5; sbit rw=P2^6; sbit en=P2^7; uchar xiao,ge,shi,bai; uchar SUM=200; uchar disdate[6]; uchar code dis0[]={"采集电压:000 v"}; //uchar code dis1[]={"采集电压:000 v"}; /*************延时**************/ void delay(uint z) { //一毫秒 uint y; for(;z>0;z--) for(y=110;y>0;y--) ; } void delay_us(uchar n) //微秒 { uchar i; for(i=0;i<n;i++) { nop; } } /**************液晶驱动程序***********/ void Lcd_wcd(bit com,uchar dat) //向12864液晶写数据或命令 { rs=com;
TLC2543中文数据手册
TLC2543使用手册一、简要说明:TLC2543是一款8位、10位、12位为一体的可选输出位数的11通道串行转换芯片。
每一路转换时间为10us。
外部输入信号为:DATA input ;_CS;AD_IO_CLK;Analog input;四种信号;输出为:EOC转换结束信号,DATA output信号。
工作原理为:_CS由高变为低时候,允许DATA input;AD_IO_CLK;Analog input信号输入,DATA out 信号输出;由低到高禁止DATA input;AD_IO_CLK;信号输入。
当忽略ADC转换启动的CS时候,数据的输出是在CS的下降沿,既是将片选的时候,而考虑到CS时候,第一个输出数据发生在EOC变为高的时候的上升沿。
注意:初始化时候,必须将CS由高拉低才能进行数据输出或者是数据输入。
也就是说,当一次转换完成后,进行下一次或者是下一个通道的转换,需要将CS由低拉高,为下一次转换做好准备,当进行下一个转换时候,进行CS 拉低,DATA input输入或者DATA out输出(忽略CS转换作用时候)。
信号解释:DATA input:4位串行地址输入,用来选择模拟输入通道功能或者测试引脚;高位在前,在每一个AD_IO_CLK的上升沿输入ADC的寄存器。
由八位组成:前四位:D7:D4用作选择模拟输入通道,D3:D2用作选择数据长度,D1是选择输出高低位顺序的,D0选择是选择输出极性(单双极性)。
DA TA INPUT的表含义DATA OUT:当_CS为高时DATA out输出为高阻抗,当CS有效时,驱动转换结果,并在AD_IO_CLK的下降沿按位顺序输出。
EOC:ADC的EOC在DATA input输入的最后一个AD_IO_CLK时,由高变为低,并保持到转换结束和数据准备输出结束时候变为高。
AD_IO_CLK:输入和输出时钟,主要完成以下功能:A、在IO_CLK的前八个时钟的上升沿将DATA input的八位数据输入数据寄存器中。
12位TLC2543模数转换总结
Lcd_wcd(1,0x2e);
Lcd_wcd(1,0x30+shi);
Lcd_wcd(1,0x30+ge);
Lcd_wcd(1,0x30+xiao);
/*for(i=0;i<SUM;i++)
{
temp1+=redad(0x01);//选择通道1,并读取AD转换的数
GND
地。GND是内部电路的地回路端。除另有说明外,所有电压测量都相对GND而言
18
I/O CLOCK
I
输入/输出时钟端。I/OCLOCK接收串行输入信号并完成以下四个功能:(1)在I/O CLOCK的前8个上升沿,8位输入数据存入输入数据寄存器。(2)在I/OCLOCK的第4个下降沿,被选通的模拟输入电压开始向电容器充电,直到I/OCLOCK的最后一个下降沿为止。(3)将前一次转换数据的其余11位输出到DATA OUT端,在I/OCLOCK的下降沿时数据开始变化。(4)I/OCLOCK的最后一个下降沿,将转换的控制信号传送到内部状态控制位
//uchar code dis1[]={"采集电压:000 v"};
/*************延时**************/
void delay(uint z)
{//一毫秒
uint y;
for(;z>0;z--)
for(y=110;y>0;y--) ;
}
void delay_us(uchar n)//微秒
shi=x/1000%10;
ge=x/100%10;
xiao=x/10%10;
}
/****************主函数****************/
TLC2543中文资料
串行A D转换器T L C2543中文资料T L C2543是T I公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。
2T L C2543的特点(1)12位分辩率A/D转换器;(2)在工作温度范围内10μs转换时间;(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66k b p s;(6)线性误差±1L S B m a x;(7)有转换结束输出E O C;(8)具有单、双极性输出;(9)可编程的M S B或L S B前导;(10)可编程输出数据长度。
3T L C2543的引脚排列及说明T L C2543有两种封装形式:D B、D W或N封装以及F N封装,这两种封装的引脚排列如图1,引脚说明见表1。
图1T L C2543的封装4接口时序可以用四种传输方法使T L C2543得到全12位分辩率,每次转换和数据传递可以使用12或16个时钟周期。
一个片选()脉冲要插到每次转换的开始处,或是在转换时序的开始处变化一次后保持为低,直到时序结束。
图2显示每次转换和数据传递使用16个时钟周期和在每次传递周期之间插入的时序,图3显示每次转换和数据传递使用16个时钟周期,仅在每次转换序列开始处插入一次时序。
引脚号名称I/O说明1~9,11,12AIN0~AIN10I模拟量输入端。
11路输入信号由内部多路器选通。
对于4.1MHz的I/OCLOCK,驱动源阻抗必须小于或等于50Ω,而且用60pF电容来限制模拟输入电压的斜率15I片选端。
在端由高变低时,内部计数器复位。
由低变高时,在设定时间内禁止DATAINPUT和I/O CLOCK17DATAINPUT I串行数据输入端。
由4位的串行地址输入来选择模拟量输入通道16DATA OUT O A/D转换结果的三态串行输出端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17
DATAINPUTI
16
DATA OUT O
行输出端。 为高时处于 高阻抗状 态, 为低时处于 激活状态 转换结束 端。在最后 的I/OCLOCK 下降沿之 后,EOC从 高电平变为 低电平并保 持到转换完 成和数据准 备传输为止 地。GND是 内部电路的 地回路端。 除另有说明 外,所有电 压测量都相 对GND而言 输入/输出 时钟端。
TLC2543模数转换总结
——电信102 龙树东
芯片特性说明 TLC2543是TI公司的12位串行模数转换器, 使用开关电容逐次逼近技术完成A/D转换过程。 由于是串行输入结构,能够节省51系列单片机 I/O资源;且价格适中,分辨率较高,因此在仪 器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以 及FN封装,这两种封装的引脚排列如图1,引脚 说明见表1。
#include<reg52.h> #include<intrins.h> //适用nop延时要用这个函数 #define uchar unsigned char
#define uint unsigned int #define nop _nop_() #define lcd_data P0 sbit clock=P2^0; sbit input=P2^1; sbit out=P2^2; sbit cs=P2^3; sbit psb=P2^4; sbit rs=P2^5; sbit rw=P2^6; sbit en=P2^7; uchar xiao,ge,shi,bai; uchar SUM=200; uchar disdate[6]; uchar code dis0[]={"采集电压:000 v"}; //uchar code dis1[]={"采集电压:000 v"}; /*************延时**************/ void delay(uint z) { //一毫秒 uint y; for(;z>0;z--) for(y=110;y>0;y--) ; } void delay_us(uchar n) //微秒 { uchar i; for(i=0;i<n;i++) { nop; } } /**************液晶驱动程序***********/ void Lcd_wcd(bit com,uchar dat) //向12864液晶写数据或命令 { rs=com;
15
I
驱动源阻抗 必须小于或 等于50Ω, 而且用60pF 电容来限制 模拟输入电 压的斜率 片选端。在 端由高变低 时,内部计 数器复位。 由低变高 时,在设定 时间内禁止 DATAINPUT 和I/O CLOCK 串行数据输 入端。由4 位的串行地 址输入来选 择模拟量输 入通道 A/D转换结 果的三态串
D2用来选择输出数据长度,本设计选择输出12位 数据长度,即D3D2=X0,D0,D1选择输入数据的 导前位。TLC2543在每次读取的数据都是上次转 换的结果,第一次读数由于内部调整,读取的转 换数据可能不准确,应不要。 参数测试 输入 /V 输出 /V 0.108 0.112 0.510 0.512 1.000 1.003 2.000 2.003 2.502 2.506 3.000 3.005 4.004 4.010 4.513 4.517 4.997 4.998 设计总结: 在设计过程中遇到了些硬件设计和软件设计的问 题,第一次画板的时候把可调电阻的管脚画错 了,导致在调试的过程中出现了短路。硬件是软 件的平台,首先得要把硬件做好。在编写程序的 时候把一个变量的类型定义错了,导致输出的都 是0,再三检查才发现这个致命的错误。 附件程序
20
Vcc
压的低端 (通常为 地)被加到 REF电源
表1 TLC2543引脚说明
图2
,MSB在前)
16时钟传送时序图(使用
图3
,MSB在前)
16时钟传送时序图(不使用
制作过程件 硬件:
TLC2543转接图
系统原理图
画电路图总结:使用TLC2543时一定要注意电路 板的布线,电路板的布线要确保数字信号和模拟 信号隔开,模拟线和数字线特别是时钟信号线不 能互相平行,也不能在TLC2543芯片下面布数字 信号线。 软件设计: 单片机程序主要是串行数据采集模块。TLC2543 的通道选择和方式数据为8位,其功能为: D7,D6,D5和D4用来选择要求转换的通道;D3和
19
EOC
O
10
GND
18
I/O CLOCKI
I/OCLOCK接 收串行输入 信号并完成 以下四个功 能:(1) 在I/O CLOCK的前8 个上升沿, 8位输入数 据存入输入 数据寄存 器。(2) 在I/OCLOCK 的第4个下 降沿,被选 通的模拟输 入电压开始 向电容器充 电,直到 I/OCLOCK的 最后一个下 降沿为止。 (3)将前 一次转换数 据的其余11 位输出到
rw=0; en=0; P0=dat; delay(5); en=1; delay(5); en=0; } void Lcd_pst(uint xx,uint yy) //设置显示坐标 { uint line; switch(yy) { case 0:line=0x00;break; case 1:line=0x10;break; case 2:line=0x08;break; case 3:line=0x18;break; default :break; } Lcd_wcd(0,0x80+line+xx); } void Lcd_str(uchar *str,uchar z) //显示字符串和汉字 { while(*str!='\0') { Lcd_wcd(z,*str); str++; } } void Lcd_init() { psb=1; rs=0; rw=0; //液晶初始化
//选择通道1,并读取AD转换的
Hale Waihona Puke temp1=temp1/SUM; temp3=temp1*40960/4096; temp1=0; display(temp3); Lcd_wcd(0,0x88+5); Lcd_wcd(1,0x30+bai); Lcd_wcd(1,0x2e); Lcd_wcd(1,0x30+shi); Lcd_wcd(1,0x30+ge); Lcd_wcd(1,0x30+xiao); */ } }
14
REF+
I
13
REF-
I
DATA OUT 端,在 I/OCLOCK的 下降沿时数 据开始变 化。(4) I/OCLOCK的 最后一个下 降沿,将转 换的控制信 号传送到内 部状态控制 位 正基准电压 端。基准电 压的正端 (通常为 Vcc)被加 到REF+,最 大的输入电 压范围由加 于本端与 REF-端的电 压差决定 负基准电压 端。基准电
图1TLC2543的封装 接口时序 可以用四种传输方法使TLC2543得到全12位分 辩率,每次转换和数据传递可以使用12或16个 时钟周期。 一个片选()脉冲要插到每次转换的开始 处,或是在转换时序的开始处变化一次后保持 为低,直到时序结束。 图2显示每次转换和数据传递使用16个时钟周 期和在每次传递周期之间插入的时序,图3显示 每次转换和数据传递使用16个时钟周期,仅在 每次转换序列开始处插入一次时序。 引脚号 名称 1~ AIN0~ 9,11,12 AIN10 I/O说明 I 模拟量输入 端。11路输 入信号由内 部多路器选 通。对于 4.1MHz的 I/OCLOCK,
void display(uint x) { bai=x/10000; shi=x/1000%10; ge=x/100%10; xiao=x/10%10; } /****************主函数****************/ main() { uint i; unsigned long int temp0,temp1; unsigned long int temp2=0,temp3=0; Lcd_init(); while(1) { for(i=0;i<SUM;i++) { temp0+=redad(0x00); //选择通道0,并读取AD转换的 数 } temp0=temp0/SUM; temp2=(temp0*40960/4096)*3+100; temp0=0; display(temp2); Lcd_wcd(0,0x80+5); Lcd_wcd(1,0x30+bai); Lcd_wcd(1,0x2e); Lcd_wcd(1,0x30+shi); Lcd_wcd(1,0x30+ge); Lcd_wcd(1,0x30+xiao); /* 数 } for(i=0;i<SUM;i++) { temp1+=redad(0x01);
en=0; Lcd_wcd(0,0x30); //基本指令格式 Lcd_wcd(0,0x06); //设置显示格式,光标位置 Lcd_wcd(0,0x0c); //开显示,关光标 Lcd_wcd(0,0x01); //液晶清屏 Lcd_pst(0,0); //定位 Lcd_str(dis0,1); //向指定点输入数据 // Lcd_str(dis1,1); } /*************TLC2543驱动程序************/ uint redad(uchar port) //读ad port为通道号 { uint i; uint ad=0; clock=0; cs=0; port<<=4; //通道号左移4位 for(i=0;i<12;i++) { if(out) { ad|=0x01; } input=(bit)(port&0x80); clock=1; delay_us(60); clock=0; delay_us(60); port<<=1; ad<<=1; } cs=1; ad>>=1; return(ad); }