一、tlc549中文資料匯總-tlc549介紹
TLC549是8位串行A/D轉(zhuǎn)換器芯片,可與通用微處理器、控制器通過CLK、CS、DATAOUT三條口線進(jìn)行串行接口。具有4MHz片內(nèi)系統(tǒng)時(shí)鐘和軟、硬件控制電路,轉(zhuǎn)換時(shí)間最長17μs,TLC549為40000次/s。總失調(diào)誤差最大為±0.5LSB,典型功耗值為6mW。采用差分參考電壓高阻輸入,抗干擾,可按比例量程校準(zhǔn)轉(zhuǎn)換范圍,VREF-接地,VREF+-VREF-≥1V,可用于較小信號的采樣。
TLC549主要特征
①8位分辨率A/D轉(zhuǎn)換器,總不可調(diào)整誤差≤±0.5LSB。
②采用三線串行方式與微處理器接口。
③片內(nèi)提供4MHz內(nèi)部系統(tǒng)時(shí)鐘,并于操作控制用的外部I/OCLOCK相互獨(dú)立。
④有片內(nèi)采樣保持電路,轉(zhuǎn)換時(shí)間≤17us,包括存取與轉(zhuǎn)換時(shí)間、轉(zhuǎn)換速率達(dá)40000次/秒。
⑤差分高阻抗基準(zhǔn)電壓輸入,其范圍是:1V≤差分基準(zhǔn)電壓≤Vcc+0.2V。
⑥寬電源范圍:3V~6.5V,低功耗,當(dāng)片選信號/CS為低,芯片選中處于工作狀態(tài)。
二、tlc549中文資料匯總-tlc549引腳圖及其功能
1、TLC549的管腳圖
2、TLC549管腳功能
REF+:正基準(zhǔn)電壓輸入2.5V≤REF+≤Vcc+0.1。
REF-:負(fù)基準(zhǔn)電壓輸入端,-0.1V≤REF-≤2.5V。且要求:(REF+)-(REF-)≥1V。
VCC:系統(tǒng)電源3V≤Vcc≤6V。
GND:接地端。
/CS:芯片選擇輸入端,要求輸入高電平VIN≥2V,輸入低電平VIN≤0.8V。
DATAOUT:轉(zhuǎn)換結(jié)果數(shù)據(jù)串行輸出端,與TTL電平兼容,輸出時(shí)高位在前,低位在后。
ANALOGIN:模擬信號輸入端,0≤ANALOGIN≤Vcc,當(dāng)ANALOGIN≥REF+電壓時(shí),轉(zhuǎn)換結(jié)果為全“1”(0FFH),ANALOGIN≤REF-電壓時(shí),轉(zhuǎn)換結(jié)果為全“0”(00H)。
I/OCLOCK:外接輸入/輸出時(shí)鐘輸入端,同于同步芯片的輸入輸出操作,無需與芯片內(nèi)部系統(tǒng)時(shí)鐘同步。
三、tlc549中文資料匯總-tlc549工作原理
TLC549均有片內(nèi)系統(tǒng)時(shí)鐘,該時(shí)鐘與I/OCLOCK是獨(dú)立工作的,無須特殊的速度或相位匹配。其工作時(shí)序如圖所示。
當(dāng)CS為高時(shí),數(shù)據(jù)輸出(DATAOUT)端處于高阻狀態(tài),此時(shí)I/OCLOCK不起作用。這種CS控制作用允許在同時(shí)使用多片TLC549時(shí),共用I/OCLOCK,以減少多路(片)A/D并用時(shí)的I/O控制端口。
一組通常的控制時(shí)序?yàn)椋?/strong>
(1)將CS置低。內(nèi)部電路在測得CS下降沿后,再等待兩個(gè)內(nèi)部時(shí)鐘上升沿和一個(gè)下降沿后,然后確認(rèn)這一變化,最后自動將前一次轉(zhuǎn)換結(jié)果的最高位(D7)位輸出到DATAOUT端上。
(2)前四個(gè)I/OCLOCK周期的下降沿依次移出第2、3、4和第5個(gè)位(D6、D5、D4、D3),片上采樣保持電路在第4個(gè)I/OCLOCK下降沿開始采樣模擬輸入。
(3)接下來的3個(gè)I/OCLOCK周期的下降沿移出第6、7、8(D2、D1、D0)個(gè)轉(zhuǎn)換位,
(4)片上采樣保持電路在第8個(gè)I/OCLOCK周期的下降沿將移出第6、7、8(D2、D1、D0)個(gè)轉(zhuǎn)換位。保持功能將持續(xù)4個(gè)內(nèi)部時(shí)鐘周期,然后開始進(jìn)行32個(gè)內(nèi)部時(shí)鐘周期的A/D轉(zhuǎn)換。第8個(gè)I/OCLOCK后,CS必須為高,或I/OCLOCK保持低電平,這種狀態(tài)需要維持36個(gè)內(nèi)部系統(tǒng)時(shí)鐘周期以等待保持和轉(zhuǎn)換工作的完成。如果CS為低時(shí)I/OCLOCK上出現(xiàn)一個(gè)有效干擾脈沖,則微處理器/控制器將與器件的I/O時(shí)序失去同步;若CS為高時(shí)出現(xiàn)一次有效低電平,
若要在特定的時(shí)刻采樣模擬信號,應(yīng)使第8個(gè)I/OCLOCK時(shí)鐘的下降沿與該時(shí)刻對應(yīng),因?yàn)樾酒m在第4個(gè)I/OCLOCK時(shí)鐘下降沿開始采樣,卻在第8個(gè)I/OCLOCK的下降沿開始保存。
四、tlc549中文資料匯總-tlc549特性參數(shù)
TLC549的極限參數(shù)如下:
●電源電壓:6.5V;
●輸入,出電壓范圍:0.3V~VCC+0.3V;
●峰值輸入電流(任一輸入端):±10mA;
●總峰值輸入電流(所有輸入端):±30mA;
●工作溫度:TLC549C:0℃~70℃
TLC549I:-40℃~85℃
TLC549M:-55℃~125℃
五、tlc549中文資料匯總-tlc549應(yīng)用接口及采樣程序
TLC549可方便地與具有串行外圍接口(SPI)的單片機(jī)或微處理器配合使用,也可與51系列通用單片機(jī)連接使用。與51系列單片機(jī)的接口如圖3所示。其采樣程序框圖如圖4所示
圖3?與51系列單片機(jī)的接口圖
圖4 ?采樣程序框圖
#include
#define N 8
unsigned char count;//濾波函數(shù)的計(jì)數(shù)值
/*unsigned char bdata dat; //dat是可位尋址的變量
sbit dat7=dat^7;
sbit dat6=dat^6;
sbit dat5=dat^5;
sbit dat4=dat^4;
sbit dat3=dat^3;
sbit dat2=dat^2;
sbit dat1=dat^1;
sbit dat0=dat^0; //取出dat的各個(gè)位*/
//------------------------------------------------------------------------
unsigned char TLC549_ReadByte(void)
{ //讀一個(gè)字節(jié)函數(shù)
unsigned char value=0,i=0;
TLC549_DOUT=1;//51單片機(jī)讀數(shù)據(jù)時(shí)得先把管腳置1
for(i=0;i<8;i++)
{
if(TLC549_DOUT==1)
value|=(0x80>>i);//獲取數(shù)據(jù)線的位放到相應(yīng)位上
????//(有1時(shí)寫1,無1時(shí)保持0)
TLC549_CLK=1;
TLC549_CLK=0;
delayus(50);//根據(jù)datasheet,下降沿產(chǎn)生后,
?//400ns后新的位被寫到數(shù)據(jù)線上,所以這里進(jìn)行延時(shí)
}
?????return value;
}
unsigned char TLC549_GetValue(void)
{
unsigned char ConvertValue;
TLC549_CS=0; ?//打開片選
ConvertValue=TLC549_ReadByte(); //讀取轉(zhuǎn)換后的8位AD值
TLC549_CS=1; ?//關(guān)閉片選
delayus(50); ??//等待轉(zhuǎn)換結(jié)束 最長17us
????return ConvertValue; //返回轉(zhuǎn)換結(jié)果
}
unsigned char TLC549_Filter() //濾波函數(shù)
{
char count,i,j;
unsigned char value_buf[N],temp;
int sum=0;
for (count=0;count
value_buf[count] = TLC549_GetValue();
delayus(300);
}
for (j=0;j
for (i=0;i
??? if ( value_buf[j]>value_buf[i+j] )
??? {
temp = value_buf[j];
value_buf[j] = value_buf[i+j];
value_buf[i+j] = temp;
??? }
}
}
for(count=1;count
return (unsigned char)(sum/(N-2));?
???????}
unsigned char AD_Convert(void)
{
unsigned char AD_Value;
AD_Value=TLC549_Filter();
return AD_Value;
}/*
unsigned char TLC549_Filter(void)
{
unsigned int sum=0;
for(count=0;count
sum+=TLC549_GetValue();
delayus(300);
}
return (unsigned char)(sum>>3);//求平均值,左移三位相當(dāng)于除以8
} ? ?*/
評論