TLC1549串口传输与单片机的A/D设计
扫描二维码
随时随地手机看文章
TLC1549系列是美国德州仪器公司生产的具有串行控制、连续逐次逼近型的模数转换器,它采用两个差分基准电压高阻输入和一个三态输出构成三线接口,其中三态输出分别为片选(CS低电平有效),输入/输出时钟(I/O CLOCK),数据输出(DATAOUT)。TLC1549引脚排列如图1所示。TLC1549能以串行方式送给单片机,其功能结构如图2所示。由于TLC1549采用CMOS工艺。内部具有自动采样保持、可按比例量程校准转换范围、抗噪声干扰功能,而且开关电容设计使在满刻度时总误差最大仅为±1 LSB(4.8 mV),因此可广泛应用于模拟量和数字量的转换电路。
TLC1549在工作温度范围内的极限参数:
电源电压范围:-0.5 V~6.5 V;
125℃输入电压范围:-0.3 V~VCC+0.3 V;
输出电压范围:-0.3~VCC+0.3 V;
正基准电压:VCC+0.1 V;
负基准电压:-0.1 V;
峰值输入电流:+20 mA;
峰值总输入电流:±30 mA;
工作温度范围:TLC1549M为-55℃~125℃,TLC1549C为0℃~70℃,TLC1549I为-40℃~85℃。
2 工作原理
TLC1549具有6种串行接口时序模式,这些模式是由I/O CLOCK周期和CS定义。根据TLC1549的功能结构和工作时序,其工作过程可分为3个阶段:模拟量采样、模拟量转换和数字量传输。图3所示为TLC1549的时序图。
2.1 输入的模拟量采样
在第3个I/O CLOCK下降沿,输入模拟量开始采样,采样持续7个I/O CLOCK周期,采样值在第10个I/O CLOCK下降沿锁存。
2.2 输入的模拟量转换
对于连续逐次逼近型的模数转换器TLC1549,CMOS门限检测器通过检测一系列电容的充电电压决定A/D转换后的数字量的每一位,如图4所示。在转换过程的第一阶段,模拟输入量同时关闭SC和ST进行充电采样,这一过程使所有电容的充电电压之和达到模数转换器的输入电压。转换过程的第二阶段打开所有SC和ST,CMOS门限检测器通过识别每一只电容的电压确定每一位,使其接近参考电压。在这个过程中,10只电容逐一检测,直到确定转换的十位数字量。其详细步骤为:门限检测器检测第一只电容(weight=512)的电压,该电容的节点512连接到REF+。梯型网络中,其他电容的等效节点接到REF-。如果总节点的电压大于门限检测器的电压(大约VCC的一半),“0”被送至输出寄存器,此时512-weight的电容连接到REF-。经反相后为“1”,即为最高位MSB为1;如果总节点的电压小于门限检测器的电压(大约VCC的一半),“1”被送至输出寄存器,此时512-weight的电容连接到REF+,经反相后为“0”,存为最高位MSB为0。对于256-weight的电容和128-weight的电容也要通过连续逐次逼近型的重复操作,直到确定从高位(MSB)到低位(LSB)所有数字量,即为初始的模拟电压数字量。整个转换过程调整VREF+和VREF1以便从数字0至1跳变的电压(VZT)为0.002 4 V,满度跳变电压(VFT)为4.908 V,即1 LSB=4.8 mV。
2.3 数字量的传输
当片选CS由低电平变为高时,I/O CLOCK禁止且A/D转换结果的三态串行输出DATA OUT处于高阻状态;当串行接口将CS拉至有效时,即CS由高变为低时,CS复位内部时钟,控制并使能DA-TA OUT和I/O CLOCK,允许I/O CLOCK工作并使DATA OUT脱离高阻状态。串行接口把输入/输出时钟序列供给I/O CLOCK并接收上一次转换结果。首先移出上一次转换结果数字量对应的最高位,下一个I/O CLOCK的下降沿驱动DATA OUT输出上一次转换结果数字量对应的次高位,第9个I/OCLOCK的下降沿将按次序驱动DATA OUT输出上一次转换结果数字量的最低位,第10个I/OCLOCK的下降沿,DATA OUT输出一个低电平,以便串行接口传输超过10个时钟;I/O CLOCK从主机串行接口接收长度在10~16个时钟的输入序列。
CS的下降沿,上一次转换的MSB出现在DATA OUT端。10位数字量通过DATA OUT发送到主机串行接口。为了开始传输,最少需要10个时钟脉冲,如果I/OCLOCK传送大于10个时钟,那么在第10个时钟的下降沿,内部逻辑把DATA OUT拉至低电平以确保其余位清零。在正常转换周期内,即规定的时间内CS端由高电平至低电平的跳变可以终止该周期,器件返回初始状态(输出数据寄存器的内容保持为上一次转换结果)。由于可能破坏输出数据,所以在接近转换完成时要小心防止CS拉至低电平。
3 实例应用及编程
实践中,某功能模块需将模拟电压转换为数字量,经过单片机处理后,储存在EEPROM中。利用P1.7作为片选端ADCS,P1.6作为数据输出端AD-DATA,P1.5作为时钟端ADCLK。图5所示为A/D串行接口应用原理图。
对于较大程序,应采用结构化程序设计,将整个程序按功能分成若干个模块,不同的模块完成不同的功能,这样可使整个应用系统程序结构清晰,易于调试和维护。以下给出了程序代码:
4 结束语
利用A/D串行输出设计不但提高了模数转换的精度,具有抗干扰性,而且节省了大量元件和印刷电路板的空间。该系统设计已经成功应用于工业现场控制系统的数据测量。