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 int

sbit TLC5615_DIN=P2^7;
sbit TLC5615_CLK=P2^6;
sbit TLC5615_CS=P2^5;
//sbit TLC5615_DOUT=P2^4;

void tlc5615_init();        //init tlc5615
void 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;
        else
            TLC5615_DIN=0;
        TLC5615_CLK=1;
        temp=temp<<1;
        TLC5615_CLK=0;
    }
    TLC5615_CS=1;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM