具有I2C總線接口的A/D芯片PCF8591及其應(yīng)用
1 引言
I2C總線是Philips公司推出的串行總線,整個(gè)系統(tǒng)僅靠數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)實(shí)現(xiàn)完善的全雙工數(shù)據(jù)傳輸,即CPU與各個(gè)外圍器件僅靠這兩條線實(shí)現(xiàn)信息交換。I2C總線系統(tǒng)與傳統(tǒng)的并行總線系統(tǒng)相比具有結(jié)構(gòu)簡(jiǎn)單、可維護(hù)性好、易實(shí)現(xiàn)系統(tǒng)擴(kuò)展、易實(shí)現(xiàn)模塊化標(biāo)準(zhǔn)化設(shè)計(jì)、可靠性高等優(yōu)點(diǎn)。
在一個(gè)完整的單片機(jī)系統(tǒng)中,A/D轉(zhuǎn)換芯片往往是必不可少的。PCF8591是一種具有I2C總線接口的A/D轉(zhuǎn)換芯片。在與CPU的信息傳輸過(guò)程中僅靠時(shí)鐘線SCL和數(shù)據(jù)線SDA就可以實(shí)現(xiàn)。
2 芯片介紹
PCF8591是具有I2C總線接口的8位A/D及D/A轉(zhuǎn)換器。有4路A/D轉(zhuǎn)換輸入,1路D/A模擬輸出。這就是說(shuō),它既可以作A/D轉(zhuǎn)換也可以作D/A轉(zhuǎn)換。A/D轉(zhuǎn)換為逐次比較型。引腳圖如圖1所示。結(jié)構(gòu)圖如圖2所示。電源電壓典型值為5V。
AIN0~AIN3:模擬信號(hào)輸入端。
A0~A3:引腳地址端。
VDD、VSS:電源端。
(2.5~6V)
SDA、SCL:I2C總線的數(shù)據(jù)線、時(shí)鐘線。
OSC:外部時(shí)鐘輸入端,內(nèi)部時(shí)鐘輸出端。
EXT:內(nèi)部、外部時(shí)鐘選擇線,使用內(nèi)部時(shí)鐘時(shí)EXT接地。
AGND:模擬信號(hào)地。
AOUT:D/A轉(zhuǎn)換輸出端。
VREF:基準(zhǔn)電源端。
3 應(yīng)用
3.1 器件總地址
PCF8591采用典型的I2C總線接口器件尋址方法,即總線地址由器件地址、引腳地址和方向位組成。飛利蒲公司規(guī)定A/D器件地址為1001。引腳地址為A2A1A0,其值由用戶選擇,因此I2C系統(tǒng)中最多可接23=8個(gè)具有I2C總線接口的A/D器件。地址的最后一位為方向位R/ ,當(dāng)主控器對(duì)A/D器件進(jìn)行讀操作時(shí)為1,進(jìn)行寫操作時(shí)為0。總線操作時(shí),由器件地址、引腳地址和方向位組成的從地址為主控器發(fā)送的第一字節(jié)。
3.2 控制字節(jié)
控制字節(jié)用于實(shí)現(xiàn)器件的各種功能,如模擬信號(hào)由哪幾個(gè)通道輸入等??刂谱止?jié)存放在控制寄存器中??偩€操作時(shí)為主控器發(fā)送的第二字節(jié)。其格式如下所示:
其中:D1、D0兩位是A/D通道編號(hào):00通道0,01通道1,10通道2,11通道3
D2 自動(dòng)增益選擇(有效位為1)
D5、D4模擬量輸入選擇:00為四路單數(shù)入、01為三路差分輸入、10為單端與差分配合輸入、11為模擬輸出允許有效
當(dāng)系統(tǒng)為A/D轉(zhuǎn)換時(shí),模擬輸出允許為0。模擬量輸入選擇位取值由輸入方式?jīng)Q定:四路單端輸入時(shí)取00,三路差分輸入時(shí)取01,單端與差分輸入時(shí)取10,二路差分輸入時(shí)取11。最低兩位時(shí)通道編號(hào)位,當(dāng)對(duì)0通 /道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取00,當(dāng)對(duì)1通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取01,當(dāng)對(duì)2通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取10,當(dāng)對(duì)3通道的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換時(shí)取11。
在進(jìn)行數(shù)據(jù)操作時(shí),首先是主控器發(fā)出起始信號(hào),然后發(fā)出讀尋址字節(jié),被控器做出應(yīng)答后,主控器從被控器讀出第一個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出應(yīng)答,主控器從被控器讀出第二個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出應(yīng)答…一直到主控器從被控器中讀出第n個(gè)數(shù)據(jù)字節(jié),主控器發(fā)出非應(yīng)答信號(hào),最后主控器發(fā)出停止信號(hào)。
3.3 應(yīng)用電路
如圖3所示電路是暖水鍋爐水溫檢測(cè)和A/D轉(zhuǎn)換電路。AD581作為電流型溫度傳感器AD590的基準(zhǔn)電源。兩只AD590分別用來(lái)采集上水和回水的溫度。
溫度變化時(shí)通過(guò)AD590的電流發(fā)生變化,溫度每升高1℃,電流增加1mA。兩只遠(yuǎn)放電路的作用是將電流信號(hào)轉(zhuǎn)變?yōu)殡妷盒盘?hào)。圖中R6、R7、R8、R9 是溫度校準(zhǔn)電位器,均采用精細(xì)電位器。圖中R6和R7分別用來(lái)校準(zhǔn)0℃時(shí)兩運(yùn)放的輸出電壓,即將傳感器置于冰水混合液中時(shí),調(diào)節(jié)R6或R7使運(yùn)放的輸出電壓,即將傳感器置于冰水混合液中時(shí),調(diào)節(jié)R6或R7使運(yùn)放的輸出電壓為0V。圖中R8和R9分別用來(lái)校準(zhǔn)100℃時(shí)兩運(yùn)放的輸出電壓,即將傳感器置于沸水時(shí),調(diào)節(jié)R8或R9使兩運(yùn)放的輸出電壓為某一確定值。此值由使用者決定,當(dāng)然,其值大小要考慮A/D轉(zhuǎn)換器選用的基準(zhǔn)電源值。
A/D轉(zhuǎn)換器PCF8591靠數(shù)據(jù)線SDL和時(shí)鐘線SCL與CPU聯(lián)系。由軟件決定水溫?cái)?shù)據(jù)的采集時(shí)間和數(shù)據(jù)的存儲(chǔ)以及送去顯示。
4 結(jié)論
Philips公司推出的I2C總線系統(tǒng)較通用單片機(jī)系統(tǒng)電路簡(jiǎn)單。由普通CPU芯片同I2C專用器件組成的系統(tǒng)為模擬I2C系統(tǒng),它性能穩(wěn)定,價(jià)格較低,具有較大的應(yīng)用前景.
參考文獻(xiàn):
1. 何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,1997.
2. 何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,1999.