由于三防平板串行D/A轉(zhuǎn)換器占用微控制器的引腳數(shù)少和功耗低,所以在便攜式智能系統(tǒng)中的應(yīng)用極為廣泛。例如,TLC5615是美國德州儀器公司生產(chǎn)的具有串行外設(shè)接口總線(Serial Peripheral Interface,SPI,詳見6.2.6節(jié))的10位D/A轉(zhuǎn)換器芯片,其性價比高,通過三根串行總線即可完成10位數(shù)據(jù)的串行輸入。三防平板TLC5615的主要特性如下:
● 10位CMOS電壓輸出,5 V單電源供電;
● 與微控制器采用三線串行接口連接;
● 最大輸出電壓可達(dá)基準(zhǔn)電壓的2倍,輸出電壓和基準(zhǔn)電壓極性相同;
● D/A轉(zhuǎn)換器的建立時間為12.5 μs,內(nèi)部上電復(fù)位;
● 低功耗,最大僅為1.75 mW。
(1)芯片引腳及內(nèi)部結(jié)構(gòu)。TLC5615采用雙列直插式(DIP)封裝形式,其引腳分布如圖1所示,各引腳的功能如下。
圖1 TLC5615引腳分布
● DIN:串行二進(jìn)制數(shù)輸入端。
● SCLK:串行時鐘輸入端。
● :芯片選擇端,低電平有效。
● DOUT:用于級聯(lián)時的串行數(shù)據(jù)輸出端。
● AGND:模擬地。
● REFIN:基準(zhǔn)電壓輸入端,通常取2.048 V。
● OUT:模擬電壓輸出端。
● VDD:正電源端,4.5~5.5 V,通常取5 V。
TLC5615的內(nèi)部功能結(jié)構(gòu)框圖如圖2所示,三防平板主要由電壓跟隨器、16位移位寄存器、并行輸入/輸出的10位DAC寄存器、10位DAC轉(zhuǎn)換電路、放大器,以及上電復(fù)位電路和邏輯控制電路等組成。其中電壓跟隨器為參考電壓端VREFIN提供高的輸入阻抗(約為10 M?);16位移位寄存器分為高4位虛擬位、10位數(shù)據(jù)位及低2位填充位,用于接收串行移入的二進(jìn)制數(shù),并將其送入并行輸入/輸出的10位DAC寄存器。
寄存器輸出的內(nèi)容送入10位DAC轉(zhuǎn)換電路后,由DAC轉(zhuǎn)換電路將10位數(shù)字量轉(zhuǎn)換為模擬量并進(jìn)入放大器,三防平板放大器將模擬量放大為最大值為2VREFIN的輸出電壓,并從模擬電壓輸出端VOUT輸出。
圖2 TLC5615的內(nèi)部功能結(jié)構(gòu)框圖
(2)TLC5615的工作方式。TLC5615具有級聯(lián)和非級聯(lián)兩種工作方式。工作在非級聯(lián)方式(單片工作)時,只需從DIN端向16位移位寄存器輸入12位數(shù),其中,前10位為待轉(zhuǎn)換有效數(shù)據(jù)位,且輸入時高位在前,低位在后;后2位為填充位,填充位的數(shù)據(jù)可以為任意值(一般填入0)。在級聯(lián)(多片同時)工作方式下,可將本片的 DOUT 端連接到下一片的DIN端,此時,需要向16位移位寄存器先輸入高4位虛擬位,再輸入10位有效數(shù)據(jù)位,最后輸入低2位填充位。由于增加了高4位虛擬位,所以需要16個時鐘脈沖。無論工作于哪一種方式,輸出電壓均為
VOUT=VREFIN(D/1024)
式中,D為待轉(zhuǎn)換的數(shù)字量。
(3)工作時序。TLC5615的工作時序如圖5-15所示。從工作時序圖可看出,串行數(shù)據(jù)的輸入和輸出必須滿足片選信號為低電平和時鐘信號SCLK有效跳變兩個條件。當(dāng)片選為低電平時,輸入數(shù)據(jù)DIN由時鐘SCLK同步輸入或輸出,最高有效位在前,最低有效位在后。在SCLK的上升沿會將串行輸入數(shù)據(jù)DIN移入內(nèi)部16位移位寄存器中,在SCLK的下降沿會在DOUT輸出串行數(shù)據(jù),在片選的上升沿時將數(shù)據(jù)傳送至DAC寄存器。
圖3 TLC5615的工作時序
當(dāng)片選為高電平時,串行輸入數(shù)據(jù) DIN 不能由時鐘同步送入移位寄存器;輸出數(shù)據(jù)DOUT 保持最近的數(shù)值不變而不進(jìn)入高阻狀態(tài)。也就是說,SCLK的上升沿和下降沿都必須發(fā)生在為低電平期間。當(dāng)片選為高電平時,輸入時鐘SCLK為低電平。
(4)微控制器與TLC5615的連接。AT89C51微控制器與TLC5615的連接電路如圖5-16所示,TLC5615工作于非級聯(lián)方式,AT89C51微控制器的P3.0、P3.1、P3.2分別控制TLC5615的片選端、串行時鐘輸入端SCLK和串行數(shù)據(jù)輸出端DIN,采用C語言編寫的轉(zhuǎn)換程序如下。
#define SPI_CLK P3_1
#define SPI_DATA P3_2
#define CS_DA P3_0
void da5616(uint da)
{
uchar i;
da<<=6;
CS_DA=0;
SPI_CLK
for(i=0; i<12; i++)
{
SPI_DATA=(bit)(da&0x8000);
SPI_CLK=1;
da<<1;
SPI_CLK=0;
}
CS_DA=1;
SPI_CLK=0;
}
圖4 AT89C51微控制器與TLC5615的連接電路