TLC1543 AD转换

TLC1543 AD转换

1.  TLC1543介绍

TLC1543美国TI司生产的多通道、低价格的模数转换器。采用串行通信接口,具有输入通道多、性价比高、易于和单片机接口的特点,可广泛应用于各种数据采集系统。 TLC154320DIP装的CMOS 10位开关电容逐次A/D逼近模数转换器,引脚排列如图1 所示。其中A0A1019 1112脚)为11 个模拟输入端,REF+14脚,通常为VCC)和REF-13脚,通常为地)为基准电压正负端,CS15脚)为片选端,在CS端的一个下降沿变化将复位内部计数器并控制和使能ADDRESSI/O CLOCK 18脚)和DATA OUT16脚)。ADDRESS17脚)为串行数据输入端,是一个1的串行地址用来选择下一个即将被转换的模拟输入或测试电压。DATA OUT A/D转换结束3态串行输出端,它与微处理器或外围的串行口通信,可对数据长度和格式灵活编程。I/O CLOCK数据输入/输出提供同步时钟,系统时钟由片内产生。芯片内部有一个14通道多路选择器,可选择11个模拟输入通道或3个内部自测电压中的任意一个进行测试。片内设有采样-保持电路,在转换结束时,EOC19脚)输出端变高表明转换完成。内部转换器具有高速(10µS转换时间),高精度(10分辨率,最大±1LSB不可调整误差)和低噪声的特点。

 

 

1 引脚排列

 

2.  TLC1543工作时序

TLC1543工作时序如图2示,其工作过程分为两个周期:访问周期和采样周期。工作状态由CS使能或禁止,工作时CS必须置低电平。CS为高电平时,I/O CLOCKADDRESS被禁止,同时DATA OUT为高阻状态。当CPU使CS变低时,TLC1543开始数据转换,I/O CLOCKADDRESS使能,DATA OUT脱离高阻状态。随后,CPUADDRESS提供4位通道地址,控制14个模拟通道选择器从11个外部模拟输入和3个内部自测电压中选通1 路送到采样保持电路。同时,I/O CLOCK输入时钟时序,CPUDATA OUT 端接收前一次A/D转换结果。I/O CLOCKCPU 接收10时钟长度的时钟序列。前4个时钟用4位地址从ADDRESS端装载地址寄存器,选择所需的模拟通道,后6个时钟对模拟输入的采样提供控制时序。模拟输入的采样起始于第4I/O CLOCK下降沿,而采样一直持续6I/O CLOCK周期,并一直保持到第10I/O CLOCK下降沿。转换过程中,CS的下降沿使DATA OUT引脚脱离高阻状态并起动一次I/O CLOCK工作过程。CS上升沿终止这个过程并在规定的延迟时间内使DATA OUT引脚返回到高阻状态,经过两个系统时钟周期后禁止I/O CLOCKADDRESS端。

TLC1543 AD转换_第1张图片

 

2 工作时序

3.  TLC1543采样程序

//TLC1543,AD采样程序

#include "TLC1543.h"

#include <intrins.h>

 

#define uchar       unsigned char

#define uint         unsigned int

 

//ADTLC1543 端口定义

sbit AD_CLK               = P0^7;               //AD时钟

sbit AD_ADD              = P0^6;               //AD地址口

sbit AD_DATA           = P0^5;               //AD数据口

sbit AD_CS                  = P0^4;               //AD片选

 

//TLC1543AD模块,采样端口定义

#define AD_A0   0x00           //采样端口A0

#define AD_A1   0x01           //采样端口A1

#define AD_A2   0x02           //采样端口A2

#define AD_A3   0x03           //采样端口A3

#define AD_A4   0x04           //采样端口A4

#define AD_A5   0x05           //采样端口A5

#define AD_A6   0x06           //采样端口A6

#define AD_A7   0x07           //采样端口A7

#define AD_A8   0x08           //采样端口A8

#define AD_A9   0x09           //采样端口A9

#define AD_A10 0x0a           //采样端口A10

 

#define AD_A11 0x0b           //测试端口2.45V,(Vref+  -  Vref-)/2 = 200H

#define AD_A12 0x0c           //测试端口0.00V, Vref- = 000H

#define AD_A13 0x0d           //测试端口4.91V, Vref+ = 3FFH

 

 

//==================================================

//函数:uint ReadPort(uchar port)

//描述:采样端口并转换

//参数:uchar port       //采样端口A0-A10

//返回:uint                 //转换结果(十位)

//作者:geoff               日期:2010/11/02

//修改:                       日期:

//版本:V1.1

//==================================================

uint ReadPort(uchar port)     //采样端口并转换

{

         uchar i;

         uint   outData = 0;        //转换结果

         AD_CLK   = 0;

         AD_CS      = 0;

         port  <<= 4;                 //左移四位,取高四位地址

         for(i=0; i<4; i++)                   //发送四位地址

         {

                   AD_ADD  = (bit)(port&0x80);

                   AD_CLK   = 1;

                   AD_CLK   = 0;

                   port  <<= 1;                

         }

         for(i=0; i<6; i++)                   //补全十个时钟

         {

                   AD_CLK   = 1;

                   AD_CLK   = 0;  

         }

         AD_CS      = 1;            //

         _nop_();

         _nop_();                       //等待AD转换

        

         AD_CS      = 0;            //准备接受转换数据

         for(i=0; i<10; i++)

         {

                   AD_CLK   = 1;

                   outData      <<= 1;

                   if(AD_DATA)

                            outData |= 0x01;

                   AD_CLK   = 0;           

         }

         AD_CS      = 1;

         return         outData;

}

 

4个时钟的访问周期,紧接着是6个时钟的采样周期,等待2个时钟后,10个时钟输出转换结果。

你可能感兴趣的:(编程,c,工作,测试,2010)