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仿真抓圖:
評論
查看更多