串行数模转换器TLC5615引脚,特点,功能及应用电路
- 格式:doc
- 大小:34.00 KB
- 文档页数:4
TLC5615学习笔记(资料补充)TLC5615----10位D/A转换器,串口输入,8P封装:2种封装:DIP和SOP-8;主要内容见:武汉力源电子公司资料和美信MAX515(MAX504)资料。
总体介绍注解:1:TLC5615引脚或者说功能同MAX515。
2:TLC5615为美国德州仪器公司1999年推出的产品。
3:TLC5615 与MAX515的区别:MAX515在先研制成功,TLC5615在后。
MAX515现在的市场售价(正品):¥8元到¥40元,陶宝上水货最低价也大于6元。
正品价(中间价)20元。
TLC5615现在的市场售价(正品):¥4元到¥10元,陶宝上水货最低价2元。
正品价(中间价)5元。
所以,现在的学习板(或者说要求不高的地方),大量开始用TLC5615替代MAX515和AD5300。
学习难点总体上不难,具体难处,是因为资料问题:这是因为1:MAX515无中文资料;2:武汉力源电子公司资料《LC5615中文资料》,部分细小节处说明不足;性能指标补充:1:数据输入时钟FSCLK:14MHz(MAX);2:更新速率:1.21MHz;注:实际使用中,考虑到片选信号(实质上是内部由《串行移位寄存器》向《D/A转换寄存器》读入数据)以及片选信号自身时间以及其它因素,实际使用中,更新速率被限制在80KHz以内;3:模拟电压输入,最大输出电流20Ma;4:使用简单,操作方便,外围元件少,(只需要一个基准电压输入);技术资料注解:1:文件夹中的TLC5615中文资料《中国武汉力源》的PDF资料,要用Acrobat Reader 5.0打开,如果用AcrobatReader 9.0打开,则出现乱码;2:发送数据脉冲格式用SPI传送:2个字节(8位),具体:先传高位,后传送低位。
如下图中从左边开始,向右边传送,■■■■| ■■■■| ■■■■| ■■■■■|4位无效| 高4位| 中4位|前2位是最低有效位,最后2个无用:补0,即:资料上的图11个时序图。
任务书1、查阅资料,熟悉硬件和软件;(所使用硬件芯片型号,所使用软件编辑环境)2、掌握TLC549芯片和TLC5615芯片的特性,引脚功能。
3、确定详细软件设计方案,画程序流程图4、根据TLC549的时序图,使用汇编语言/C语言编写单片机STC89C52与TLC549的软件通信程序代码。
实现模/数转换功能。
5、根据TLC5615的时序图,使用汇编语言/C语言编写单片机STC89C52与TLC5615的软件通信程序代码。
实现数/模转换功能。
6、整合模数、数模转换代码,实现信号发生器在MAX1247输入端输入正弦波(频率不限),示波器在TLC5615输出端测量到同样的正弦波,记录输出波形。
7 .撰写课程设计报告。
目录1、绪论 (XX)2、方案论证(规划、选定) (XX)3、方案说明(设计)XX (XX)4、硬件方案设计 (XX)5、软件方案设计 (XX)6、调试 (XX)6、技术小结(结束语) (XX)8、参考文献 (XX)9、附录(源程序代码、电路图等) (XX)1.绪论本实验主要是基于单片机微型控制器的控制,实现将模拟信号转换成数字信号的一个简单实验。
通过这个实验,可以为广大研究人员提供一个比较系统的模数数模转换基础资料,以便于将模拟信号转换为数字信号或将数字信号转换成模拟信号。
2.方案论证2.1.试验原理本实验主要是通过单片机stc89c52芯片控制模数转换芯片tlc549将所给模拟信号转换成数字信号,然后将数字信号读进数模转换芯片tlc5615,从输出端口将转换后的信号输出来。
可用图1简洁明了地表现出来:2.2模/数转换器(1)模/数转换器的作用TLC549是一种高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现A/D转换,本实验通过用该芯片采集模拟量,然后将采集到的模拟量转换为数字量后送至单片机。
(2)芯片特性;TLC549芯片, 可与通用微处理器、控制器通过I/ O CLOCK、CS、DATA OU T 三条口线进行串行接口。
实验五、数模转换一、实验目的1、掌握模数转换芯片TLC5615的接口技术。
2、掌握模数转换芯片TLC5615的编程方法。
二、实验内容TLC5615是一个串行10位的DAC芯片,只需通过3根串行总线就可以完成10位数据的串行输入。
要求:1、编写程序实现下列要求:通过DIP开关输入0~3FF位数值,由TLC5615变为模拟电压输出,记录数值与对应的对应关系。
2、利用TLC5615输出一个幅值从0V开始逐渐升至5V再降至0V、周期为1秒的三角波。
用示波器观察该波形。
三、实验线路电路原理图如下,所需元件为:AT89C51、7SEG-BCD、TLC5615、DIPSW。
1、TLC5615引脚排列:2、TLC5615的时序图:从图中可以看出,TLC5615的16位移位寄存器分为高4位虚拟位,低2位填充位以及10位有效位。
如果选择12位数据序列工作方式,则向16位移位寄存器按先后输入10位有效位和地2位填充位,2位填充位数据任意。
3、软件编程4、TLC5615接线将TLC5615的信号线接到相应的端口:DIN 接P2.5;CS 接P2.6SCLK 接P2.7;REFIN 接 +5VDIN SW1 接P1口对数值进行给定DIN SW2 接P3.7,P3.6 对数值进行给定OUT 接万用表(或示波器)四、实验预习1、学习模数转换的原理与编程2、提前编写程序,写出预习报告。
五、实验步骤1、用Proteus软件仿真,改变输入数据,使D/A输出电压从0V到5V变化,记录数码管的显示数值。
记录到表中。
2、将编译好的三角波程序下载到实验板上,用示波器观察波形。
五、实验报告1、总结出实验的详细步骤。
2、写出调试正确的程序及框图。
数模转换DAC-TLC5615的Proteus电路仿真发表于2007/1/23 6:05:56调试笔记:1、TLC5615转换精度10bit,转换后输出为电压,最大输出电压为VDD-0.4V,逻辑电压输入5V(+-5%),若采用5V的逻辑电平,其最大输入电压为4.6V,故参考电压Vref输入必须在0~2.3V范围之内,本仿真实验中取Vref=2.048V;2、输出电压计算式:3、TLC5615面向CPU的接口采用SPI串行传输,其最大传输速度为1.21Mhz,DA转换时间为12.5us,故一次写入数据(CS引脚从低电平至高电平跳跃)后,必须延时15us左右才可第二次刷入数据再次启动DA转换,参见TLC5615-DATASHEET:....which is a 1.21 MHz update rate. However, the DAC settling time to 10 bits of 12.5 uslimits the update rate to 80 kHz for full-scale input step transitions.4、DOUT引脚作为MISO引脚或者多个TLC5615级联的串行数据输出;5、写入转换数据可为12bits格式或者16bits格式(当级联输出时),数据传输高位先发:6、写时序与SPI兼容;7、模块子例程:/******************************************************************************/ /**/** 模块名:-------------------TLC5615.C---------------------------------/** -----------------数模转换子模块-----------------------------*//** 功能描述:/**/** 创建人:huangtiexiong 日期:2006-11-28 *//** 修改人:日期:2006-11-28 *//** 其他说明:/******************************************************************************/ #include "Includes.h" //文件包含/*************************************************模块级变量申明*************************************************/int8u bdata gBitMsb;sbit m7 = gBitMsb^7;int8u bdata gBitLsb;sbit l7 = gBitLsb^7;static void TLC5615_Write_12Bits();/*************************************************子函数定义*************************************************//********************************************************************************** 函数名: static void TLC5615_Write_12Bits()*** 功能描述: 一次向TLC中写入12bit数据;*** 全局变量: gBitMsb:待转换10bit高两位;gBitLsb:10bits的低8位;*** 输入: NO !*** 输出: NO !*** 创建人:huangtiexiong 日期:2006-11-28*** 修改人:日期:2006-11-28*** 函数说明: 内部函数;/******************************************************************************/ static void TLC5615_Write_12Bits(){int8u i;SCL = 0; //置零SCL,为写bit做准备;CS = 0;for(i=0;i<2;i++)//循2次,发送高两位;{if(m7) //高位先发;{SDA = 1; //将数据送出;SCL = 1; //提升时钟,写操作在时钟上升沿触发;SCL = 0; //结束该位传送,为下次写作准备;}else{SDA = 0;SCL = 1;SCL = 0;}gBitMsb <<= 1;}for(i=0;i<8;i++)//循环八次,发送低八位;{if(l7){SDA = 1; //将数据送出;SCL = 1; //提升时钟,写操作在时钟上升沿触发;SCL = 0; //结束该位传送,为下次写作准备;}else{SDA = 0;SCL = 1;SCL = 0;}gBitLsb <<= 1;}for(i=0;i<2;i++)//循环2次,发送两个虚拟位;{SDA = 0;SCL = 1;SCL = 0;}CS = 1;SCL = 0;}/********************************************************************************** 函数名: extern void TLC5615_Start(int16u dacDat)*** 功能描述: 启动DAC转换;*** 全局变量: gBitMsb:待转换10bit高两位;gBitLsb:10bits的低8位;*** 输入: dacDat:int16u;*** 输出: NO !*** 创建人:huangtiexiong 日期:2006-11-28*** 修改人:日期:2006-11-28*** 函数说明: 外部函数;/******************************************************************************/ extern void TLC5615_Start(int16u dacDat){dacDat %= 1024;gBitMsb = dacDat/256;gBitLsb = dacDat%256;gBitMsb <<= 6;TLC5615_Write_12Bits();}/******************************************************************************* **** End Of File*******************************************************************************/ 8、Proteus仿真抓图:。
TLC5615是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。
带有上电复位功能,即把DAC寄存器复位至全零。
1TLC5615的特点
(1)10位CMOS电压输出;
(2)5V单电源供电;
(3)与CPU三线串行接口;
(4)最大输出电压可达基准电压的二倍;
(5)输出电压具有和基准电压相同极性;
(6)建立时间12 5μs;
(7)内部上电复位;
(8)低功耗,最大仅1 75mW。
一、TLC5615引脚图
——脚1DIN:串行数据输入端;
——脚2SCLK:串行时钟输入端;
——脚3CS:芯片选用通端,低电平有效;
——脚4DOUT:用于级联时的串行数据输出端;
——脚5AGND:模拟地;
——脚6REFIN:基准电压输入端;
——脚7OUT:DAC模拟电压输出端;
——脚8VDD:正电源端。
二、TLC5615内部功能模块
三、TLC5615时序图。
tlc5615基准电压
TLC5615是一款12位精密数字模拟转换器(DAC),它具有内部基准电压源。
基准电压是DAC使用的参考电压,它对于DAC的精度和稳定性非常重要。
对于TLC5615,它的基准电压是由内部基准电压源提供的,通常为2.5V。
这个基准电压源可以确保DAC的输出具有良好的精度和稳定性。
当使用TLC5615时,可以直接使用内部基准电压源作为参考电压,不需要外部连接其他基准电压源。
然而,如果用户有特殊的要求,也可以选择使用外部基准电压源。
在这种情况下,用户需要将外部基准电压源连接到TLC5615的REFIN引脚上,并通过控制寄存器来选择使用外部基准电压源。
这样可以根据实际需求来调整参考电压,以满足特定的应用需求。
总的来说,TLC5615的基准电压是内部提供的,通常为2.5V,但也可以选择使用外部基准电压源,以满足特定的应用需求。
这样的设计灵活性可以使TLC5615适用于各种不同的应用场景。
#include <reg52.h>#include <math.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define INBUF_LEN 6 //数据长度unsigned char inbuf1[INBUF_LEN]={'0','0','0','0','0','0'};//发送缓冲区unsigned char code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳数码管显示0~Funsigned char code dis_8[12]={'0','1','2','3','4','5','6','7','8','9',' ','-'};sbit CS=P2^5; //定义片选信号IO口sbit SCLK=P2^4; //定义时钟信号IO口sbit DIN=P2^3; //定义数据输入IO口uint temp;void init_serialcomm( void ){SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvrT2CON=0x30;TH2=0x00;TL2=0x00;RCAP2H=0xFF;RCAP2L=0xDC;TR2=1;}//向串口发送一个字符void send_char_com( unsigned char ch){SBUF=ch;while (TI== 0 );TI= 0 ;}//向串口发送一个字符串,strlen 为该字符串长度void send_string_com( unsigned char *str, unsigned int strlen){unsigned int k= 0 ;do{send_char_com(*(str + k));k++;} while (k < strlen);}void delay(uint k) //延时函数{uint i,j;for(i=0;i<k;i++){for(j=0;j<121;j++){;}}}//实现DA转换void DAConvert(uint Data){uchar i;Data<<=6;CS=0;SCLK=0;for (i=0;i<12;i++){DIN=(bit)(Data&0x8000);SCLK=1;Data<<=1;SCLK=0;}CS=1;SCLK=0;for (i=0;i<12;i++);}//定时器0中断处理中键扫描和显示void KeyAndDis_Time0(void) interrupt 1 using 2 {TH0=0xdc;TL0=0x00;//设定时值为10msP0= table[ temp/1000];P2=0x03;delay(2);P0= table[ (temp%1000)/100];P2=0x02;delay(2);P0= table[ (temp%100)/10];P2=0x01;delay(2);P0= table[ temp%10];P2=0x00;delay(2);}//主程序main(){uint i;init_serialcomm(); //初始化串口EA = 1; //允许CPU中断ET0 = 1; //定时器0中断打开TMOD = 0x01; //设定时器0为模式1,16位模式TH0=0xdc;TL0=0x00; //设定时值为10msTR0 = 1;while(1){for(i=0;i<1023;i+=2){DAConvert(i);//启动转换temp=i;inbuf1[0]=dis_8[temp/1000];inbuf1[1]=dis_8[(temp%1000)/100];inbuf1[2]=dis_8[(temp%100)/10];inbuf1[3]=dis_8[temp%10];inbuf1[4]=0x0d;inbuf1[5]=0x0a;send_string_com(inbuf1,INBUF_LEN);//串口输出到上位机delay(10);}for(i=1023;i>2;i-=2){ DAConvert(i);//启动转换temp=i;inbuf1[0]=dis_8[temp/1000];inbuf1[1]=dis_8[(temp%1000)/100];inbuf1[2]=dis_8[(temp%100)/10];inbuf1[3]=dis_8[temp%10];inbuf1[4]=0x0d;inbuf1[5]=0x0a;send_string_com(inbuf1,INBUF_LEN);delay(10);}}}。
DAC之TLC5615 TLC5615是⼀款10位的DAC,采⽤三线SPI驱动⽅式,本⽂将介绍TLC5615的电路设计以及驱动程序编写。
如下图所⽰,TLC5615与MCU的接⼝为DIN、SCLK和CS,其中CS为芯⽚⽚选端,也可直接接低电平;DOUT端⽤于级联输出,不做介绍。
TLC5615的输出电压为0V—2*Vref,以上图为例,基准电压源REF3020的电压为2.048V,则TLC5615的输出电压范围为0V—4.096V,⼿册中的说明如下: 那么在此电路中1LSB对应0.004V,也就是4mV,电压输出端可以直接接负载,也可以先采⽤运放进⾏跟随,这⾥需要注意的是,如果需要在整个输出电压范围内使⽤TLC5615,运放最好选⽤轨到轨输出的运放,否则将达不到输出效果,电路中的SGM358就是⼀个轨到轨的运放,如果使⽤的是通⽤运放⽐如LM358,在5V单电源供电下,输出⼀般只有0.5V—3.5V。
同时TLC5615的电压稳定时间通常为12.5us,所以⽆法⽤于⾼速应⽤。
驱动程序的编写第⼀步:时序的理解。
CS选通很容易理解,DOUT在不级联使⽤的情况下也不⽤关注,那么通过这个图可以很清晰的看出,DIN在时钟信号SCLK的低电平允许切换状态,在SCLK的上升沿将数据锁存。
驱动程序编写第⼆步:数据传输协议。
这⾥采⽤12位数据传输⽅式,51单⽚机驱动程序如下。
#ifndef _tlc5615_h#define _tlc5615_h#include "stc8.h"#include "delay.h"#define uchar unsigned char#define uint unsigned intsbit TLC5615_DIN=P2^7;sbit TLC5615_CLK=P2^6;sbit TLC5615_CS=P2^5;//sbit TLC5615_DOUT=P2^4;void tlc5615_init(); //init tlc5615void tlc5615_set(uint vol); //set voltage to tlc5615#endif#include "tlc5615.h"void tlc5615_init() //init tlc5615{TLC5615_DIN=0;TLC5615_CLK=0;TLC5615_CS=1;//TLC5615_DOUT=1;}void tlc5615_set(uint vol) //set voltage to tlc5615{uchar i;uint temp;temp=vol<<6;TLC5615_CS=0;TLC5615_CLK=0;for(i=0;i<12;i++){if(temp&0x8000)TLC5615_DIN=1;elseTLC5615_DIN=0;TLC5615_CLK=1; temp=temp<<1; TLC5615_CLK=0; }TLC5615_CS=1;}。
串行数模转换器TLC5615引脚,特点,功能及应用电路
1 TLC5615串行数模转换器简介
TLC5615为美国德州仪器公司1999年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。
带有上电复位功能,即把DAC寄存器复位至全零。
TLC5615性能价格比高,目前在国内市场很方便购买。
1.1 TLC5615的特点
(1)10位CMOS电压输出;
(2)5V单电源供电;
(3)与CPU三线串行接口;
(4)最大输出电压可达基准电压的二倍;
(5)输出电压具有和基准电压相同极性;
(6)建立时间12 5μs;
(7)内部上电复位;
(8)低功耗,最大仅1 75mW。
1.2 TLC5615引脚说明
TLC5615有小型和塑料DIP封装,DIP封装的TLC5615芯片引脚排列如图1所示。
图1TLC5615引脚排列图
引脚功能说明如下:
——脚1DIN:串行数据输入端;
——脚2SCLK:串行时钟输入端;
——脚3CS:芯片选用通端,低电平有效;
——脚4DOUT:用于级联时的串行数据输出端;
——脚5AGND:模拟地;
——脚6REFIN:基准电压输入端;
1.3 TLC5615的时序分析
TLC5615的时序如图2所示。
图2TLC5615的时序图
由时序图可以看出,当片选CS为低电平时,输入数据DIN由时钟SCLK同步输入或输出,而且最高有效位在前,低有效位在后。
输入时SCLK的上升沿把串行输入数据DIN移入内部的16位移位寄存器,SCLK的下降沿输出串行数据DOUT,片选CS的上升沿把数据传送至DAC寄存器。
当片选CS为高电平时,串行输入数据DIN不能由时钟同步送入移位寄存器;输出数据DOUT 保持最近的数值不变而不进入高阻状态。
由此要想串行输入数据和输出数据必须满足两个条件:第一时钟SCLK的有效跳变;第二片选CS为低电平。
这里,为了使时钟的内部馈通最小,当片选CS为高电平时,输入时钟SCLK应当为低电平。
串行数模转换器TLC5615的使用有两种方式,即级联方式和非级联方式。
如不使用级联方式,DIN只需输入12位数据。
DIN输入的12位数据中,前10位为TLC5615输入的D/A 转换数据,且输入时高位在前,低位在后,后两位必须写入数值为零的低于LSB的位,因为TLC5615的DAC输入锁存器为12位宽。
如果使用TL5615的级联功能,来自DOUT的数据需要输入16位时钟下降沿,因此完成一次数据输入需要16个时钟周期,输入的数据也应为16位。
输入的数据中,前4位为高虚拟位,中间10位为D/A转换数据,最后2位为低于LSB的位即零。
2 TLC5615应用电路实例
图3给出了在开关电源中,TLC5615和AT89C51单片机的接口电路。
在电路中,AT89C51单片机的P3.0-P3.2分别控制TLC5615的片选CS,串行时钟输入SCLK和串行数据输入DIN。
电路的连接采用非级联方式。
根据开关电源的设计要求,可变基准电压范围为0V~4V。
因此,TLC5615的基准电压选为2.048V,其最大模拟输出电压为4.096V。
可满足开关电源的要求。
图3TLC5615与AT89C51单片机接口电路
——脚7OUT:DAC模拟电压输出端;
——脚8VDD:正电源端。
TLC5615采用非级联方式,将要输入的12位数据存在R0、R1寄存器中,其D/A转换程序如下:
CLRP3 0;片选有效
MOVR2,#4;将要送入的前四位数据位数
MOV A,R0;前四位数据送累加器低四位
SWAPA;A中高四位与低四位互换
LCALLWR data;DIN输入前四位数据
MOVR2,#8;将要送入的后八位数据位数
MOV A,R1;八位数据送入累加器A
LCALLWR data;DIN输入后八位数据
CLRP3 1;时钟低电平
SETBP3 0;片选高电平,输入的12位数据有效
END:结束
送数子程序如下:
WR data:NOP;空操作
LOOP:CLRP3 1;时钟低电平
RLCA;数据送入位标志位CY
MOVP3 2,C;数据输入有效
SETBP3 1;时钟高电平
DJNZR2,LOOP;循环送数
RET返回
3结语
由于采用接口简单的模拟数字转换器TLC5615,使得开关电源的硬件电路大为简化,线路板面积缩小,成本降低。
本文来自: 原文网址:/info/commonIC/0077769.html。