TLC5615 为美国德州仪器公司 1999 年推出的产品,是具有串行接口的数模转换器,其输出为电压型,最大输出电压是基准电压值的两倍。带有上电复位功能,即把 DAC 寄存器复位至全零。
性能比早期电流型输出的 DAC 要好。只需要通过 3 根串行总线就可以完成 10 位数据的串行输入, 易于和工业标准的微处理器或微控制器(单片机) 接口, 适用于电池供电的测试仪表、移动电话,也适用于数字失调与增益调整以及工业控制场合。
数模转换DAC-TLC5615的Proteus电路仿真
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转换。
4、DOUT引脚作为MISO引脚或者多个TLC5615级联的串行数据输出;
5、写入转换数据可为12bits格式或者16bits格式(当级联输出时),数据传输高位先发:
写时序与SPI兼容;
7、模块子例程:
/******************************************************************************/ /**
/** 模 块 名: -------------------TLC5615.C--------------------------------- /** -----------------数模转换子模块-----------------------------*/ /** 功能描述:
/******************************************************************************/ #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数据;
钟,写操作在时钟上升沿触发; 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; *** 函数说明: 外部函数;
/******************************************************************************/ extern void TLC5615_Start(int16u dacDat)
{
dacDat %= 1024;
gBitMsb = dacDat/256; gBitLsb = dacDat%256; gBitMsb 〈〈= 6;
TLC5615_Write_12Bits();
}
/******************************************************************************* **** End Of File
*******************************************************************************/
8、Proteus仿真抓图:
评论
查看更多