摘 要:本文以Intel公司的80C196单片机与11通道12位模/数转换芯片TLC2543为例,介绍该类ADC与单片机的接口与编程,并给出具体的C语言程序,这种方法对于其它具有SPI接口的器件一样适用。
关键字:80C196;A/D转换器;C语言;TLC2543
1 概述
80C196是Intel公司继8096BH之后推出的高性能CHMOS16位单片微型计算机。它的CPU中的算术逻辑单元采用寄存器-寄存器结构,CPU的操作直接面向256字节的寄存器,消除了一般CPU接口中存在的累加器的瓶颈效应,提高了操作速度和数据吞吐能力。而且它还有一套效率高,执行速度快的指令系统。
TLC2543是TI(TEXAS INSTRUMENT)公司的产品,使用开关电容逐次逼近技术完成12位A/D转换过程。TLC2543与外围电路的连线简单,有三个控制输入端为CS(片选)、输入/输出时钟(I/O CLOCK)以及串行数据输入端(DATA INPUT)。片内的14通道多路器可以选择11个输入中的任何一个或3个内部自测试电压中的一个,片内设有采样保持电路,用"转换结束"信号EOC指示转换完成。系统时钟由片内产生并由I/O CLOCK同步。正、负基准电压(REF+,REF-)由外部提供,通常为VCC和地,两者差值决定输入范围。片内转换器使器件有高速、高精度和低噪声等特点。TLC2543的外部引脚排列如图1所示,采用20脚DIP封装。
图1 TLC2543引脚图
2 硬件设计
由于MCS-96系列单片机不具有SPI或相同能力的接口,为了便于与TLC2543接口,采用软件合成SPI操作。80C196片内有一个CAM(Content Addressable Memory),它是HSO的核心控制部分,由8个23位寄存器组成。每个寄存器的16位用于存放触发某一事件的时间,7位用于存储命令。每一个状态周期,来自定时器的时间与CAM中一个预定的时间进行比较,比较结果相符,说明触发某一事件的时间已到,就读出CAM中这一项的内容,产生该事件的触发信号。
HSO的命令格式如图2所示。其中低4位产生的16种代码规定16个通道被触发事件的性质。位4决定是否产生中断。位5决定输出的事件触发信号的性质,但它对通道08-0FH是不起作用的。位6决定采用哪个定时器作为时间基准。
把命令和预定触发时间写入CAM阵列的步骤如下:先把命令写入HSO命令寄存器,然后把时间写入HSO时间寄存器,在执行后一操作后时,会自动地把命令和时间同时装入到HSO保持寄存器。
图2 HSO命令格式
TLC2543的工作过程可以分为I/O周期和实际转换周期。I/O周期由外部提供的I/O CLOCK定义,延续8、12或16个时钟周期,决定于选定的输出数据长度,接口时序如图3所示。
在I/O CLOCK的前8个脉冲的上升沿,以MSB前导方式从DATA INPUT端输入8个数据流到输入寄存器,其中前4位是模拟通道地址,控制14通道模拟多路开关从11个模拟输入和3个内部自测电压中选通一路送到采用保持电路,该电路从第4个I/O CLOCK脉冲的下降沿开始对所选信号进行采样,直到最后一个I/O CLOCK脉冲的下降沿。IO周期的时钟脉冲个数和输出数据长度同时由输入数据的D3,D2位选择8、12或16。当工作于12位和1位时,在前8个时钟之后,DATA INPUT无效。
图3 TLC2543时序图(MSB FIRST)
在I/O CLOCK端输入脉冲的同时,DATA OUT端串行输出8、12或16位数据。TLC2543在每次I/O周期读取的数据都是上次转换的结果,当前的转换结果在下一个I/O周期中被串行移出。
在I/O周期的最后一个I/O CLOCK下降沿之后,EOC变低,采样值保持不变,转换周期开始,片内转换器对采样值进行逐次逼近式A/D转换,其工作过程由与I/O CLOCK同步的内部时钟控制。转换完成后EOC变高,转换结果锁存在输出数据寄存器中,待下一个I/O周期输出。I/O周期和转换周期交替进行,从而减少外部的数字噪声对转换精度的影响。
这里用80C196的HSO口模拟SPI和TLC2543接口,接口电路如图4所示。