引 言 ADT75 是ADI公司生產(chǎn)的集溫度傳感器、12位A/D轉(zhuǎn)換器、可編程的溫度過限報警器和SMBus/I2C總線接口于一體的新型數(shù)字溫度傳感器。其額定工作溫度范圍為-55~+125℃,能準(zhǔn)確、靈敏地檢測數(shù)字化溫度,溫度誤差最大為±1℃,測溫分辨率可達(dá)0.062 5℃;工作電壓范圍為3~5.5 V,3.3 V時典型的功耗為79μW,在關(guān)斷模式下其典型工作電流值僅為3μA。 1 ADT75的引腳及結(jié)構(gòu)原理 ADT75的引腳排列如圖1所示,引腳說明如表1所列。 ADT75采用8引腳的MOSP和SOIC封裝,其內(nèi)部結(jié)構(gòu)如圖2所示。 ADT75的工作過程為:片上的溫度傳感器采集溫度后,產(chǎn)生一個與絕對溫度成比例的精確電壓,并與內(nèi)部參考電壓進(jìn)行比較;然后輸入到精確的數(shù)字式調(diào)節(jié)器中,轉(zhuǎn)換為有效精度為12位的數(shù)據(jù)。將該數(shù)據(jù)與限定值比較,如果測量值超限,則OS/ALERT引腳輸出超限信息。 在正常模式下,溫度轉(zhuǎn)換需要60 ms,然后模擬轉(zhuǎn)換電路自動關(guān)閉,40 ms后模擬電路上電,開始下一個溫度值的轉(zhuǎn)換。所以一次溫度轉(zhuǎn)換周期為100 ms。 2 ADT75的寄存器結(jié)構(gòu) ADT75包含6個寄存器:1個地址指針寄存器,4個數(shù)據(jù)寄存器和1個單步模式寄存器。數(shù)據(jù)寄存器中,配置寄存器是唯一的8位寄存器,其他3個都是16 位;溫度值寄存器是唯一的只讀寄存器,其他3個都是可讀寫的。單步模式寄存器也是可讀寫的。上電后,地址指針寄存器的初始值為0x00,指針指向溫度值寄存器。ADT75的寄存器描述如表2所列。 (1)地址指針寄存器 該8位只讀寄存器存放指向某個數(shù)據(jù)寄存器的地址,可以選擇單步模式。P0位和P1位選擇要讀/寫數(shù)據(jù)的數(shù)據(jù)寄存器,向P0、P1和P2位中寫入0x04來選擇單步模式。地址指針寄存器的其余位都為0。寄存器的地址選擇如表3所列。 (2)溫度值寄存器 該16位只讀寄存器存儲由芯片內(nèi)部溫度傳感器測得的溫度值。溫度以二進(jìn)制補(bǔ)碼形式存儲,最高位為符號位。讀該寄存器時,先讀高8位,后讀低8位。 (3)配置寄存器 該8位可讀寫寄存器為ADT75提供了多種配置模式:關(guān)斷、過溫中斷、單步、SMBus報警使能、OS/ALERT引腳極性和過溫錯誤隊列。 (4)THYST定值寄存器 該16位可讀寫寄存器為2個中斷模式存放溫度滯后限定值。這個限定值以二進(jìn)制補(bǔ)碼形式存儲,最高位是溫度值符號位。讀該寄存器時,先讀高8位,后讀低8位。限定值THYST的默認(rèn)值為+75℃。 (5)TOS定值寄存器 該16位可讀寫寄存器為2個中斷模式存放過溫限定值。這個溫度限定值以二進(jìn)制補(bǔ)碼形式存儲,最高位是溫度值符號位。讀該寄存器時,先讀高8位,后讀低8位。限定值TOS的默認(rèn)值為+80℃。 3 ADT75的應(yīng)用實例 3.1 硬件設(shè)計 在外界溫度場作用下,光纖延遲線系統(tǒng)中光纖長度、橫截面結(jié)構(gòu)、光纖纖芯和包層的折射率分布特性會發(fā)生變化,因此在光纖中傳播的光載波信號的相位和模式雙折射特性就會隨溫度的改變而變化,從而影響最終解調(diào)出的微波信號的延時。為減小溫度變化對微波信號延時的影響,需要設(shè)計一個溫度控制系統(tǒng),用來控制系統(tǒng)的溫度。 硬件設(shè)計電路主要包括2部分:數(shù)字信號處理器TMS320F2812和數(shù)字溫度傳感器ADT75。 采用TI公司推出的TMS320F2812作為核心控制芯片。其外部晶振頻率為30 MHz,通過片內(nèi)的PLL進(jìn)行倍頻,最高主頻可達(dá)150 MHz;運(yùn)行速度快,可以對采集的溫度信號進(jìn)行實時處理。 TMS320F2812沒有設(shè)計I2C總線,但是有56個GPIO口,所以采用GPIO口模擬I2C總線時序來控制ADT75。這種硬件電路結(jié)構(gòu)簡單,功耗較低,實用性強(qiáng)。ADT75與TMS320F2812的接口電路如圖3所示。 TMS320F2812的GPIOB0引腳用作I2C總線的時鐘信號線,GPIOB1引腳用作I2C總線的串行數(shù)據(jù)線。供電電壓為5 V,10 kΩ電阻為開漏極的上拉電阻,0.1μF電容起去耦作用。本設(shè)計僅實時采集光纖延遲線系統(tǒng)的溫度,不需要過溫報警,所以O(shè)S/ALERT引腳保留。 ADT75的地址為7位,高4位為1001,低3位由地址引腳A0~A2決定。由于只有一片ADT75,故可將其3個地址引腳全部接地,則芯片地址可確定為1001000。溫控系統(tǒng)根據(jù)測得的溫度在TMS320F2812內(nèi)部進(jìn)行PID運(yùn)算,然后通過外部的溫度控制裝置對光纖延遲線內(nèi)部溫度進(jìn)行調(diào)節(jié),使其穩(wěn)定在某個設(shè)定的范圍內(nèi)。 3.2 軟件設(shè)計 利用死循環(huán)等待函數(shù)while(1)中的ReadDevice()函數(shù)從ADT75中讀取溫度值。每隔250 ms讀取一次溫度值,從而實現(xiàn)對系統(tǒng)溫度的實時監(jiān)控。 ReadDevice()函數(shù)包括以下函數(shù):Start(),Stop(),SendAddress(),ReadAck(),ReceiveData(),Mack(),MNack()。讀取溫度的流程如圖4所示,讀取溫度的時序如圖5所示。 (1)啟動數(shù)據(jù)傳輸 在頭文件中對TMS320F2812的GPIOB口進(jìn)行配置。定義GPIOB0為SCL,輸出;GPIOB1為SDA,輸出。Start()函數(shù)模擬I2C總線的起始條件: 至此,完成了I2C總線的啟動。 (2)傳送ADT75地址 在讀取溫度值之前必須向從器件發(fā)送地址。ADT75的7位地址為0x48。由于是讀數(shù)據(jù)(讀/寫位為1),所以傳送的8位地址命令為0x91。在傳送數(shù)據(jù)時,當(dāng)SCL為0時,才允許SDA上的數(shù)據(jù)變化;為1時,SDA上的數(shù)據(jù)保持不變。8位地址傳送結(jié)束后,主機(jī)釋放SDA(令SDA=1),等待從機(jī)的應(yīng)答信號。 (3)檢測ADT75的應(yīng)答位 I2C總線傳輸完8位數(shù)據(jù)后由從機(jī)給主機(jī)一個低電平的應(yīng)答信號,表示從機(jī)正常工作并可以接收下一個字節(jié)的數(shù)據(jù)。檢測ADT75的應(yīng)答位時,應(yīng)注意把GPIOB1口設(shè)置為輸入。 EALLOW: GpioMuxRegs.GPBDIR.bit.GPIOB1=0; EDIS; 如果SDA=0,則TMSS20F2812開始從ADT75中讀取數(shù)據(jù)的高字節(jié);SDA=1,表示ADT75忙或者損壞,結(jié)束數(shù)據(jù)讀取。 (4)讀取數(shù)據(jù) 當(dāng)檢測到ADT75的應(yīng)答信號為0時,開始讀取溫度值。I2C總線的數(shù)據(jù)傳輸是以字節(jié)為單位的,首先讀取溫度值的高字節(jié)(溫度值的整數(shù)部分,最高位為符號位),讀取的數(shù)據(jù)存放在retc中。每接收1位數(shù)據(jù),retc左移1位。若SDA=1,retc加1;SDA=0,retc不變。 高8位數(shù)據(jù)傳輸完后,TMS320F2812傳給ADT75一個低電平的應(yīng)答信號,由Mack()函數(shù)完成。此時,需要將GPIOB1端口的數(shù)據(jù)傳輸方向改為輸出: EALLOW: GpioMuxRegs.GPBDIR.bit.GPIOB1=1; EDIS: 然后開始接收溫度值的低字節(jié)(溫度值的小數(shù)部分),讀取成功后由TMS320F2812發(fā)送一個非應(yīng)答位,表示本次溫度值的讀取結(jié)束,進(jìn)入停止?fàn)顟B(tài)。 (5)結(jié)束數(shù)據(jù)傳輸 結(jié)束數(shù)據(jù)傳輸由Stop()函數(shù)完成,結(jié)束條件如下: Delay(50); 至此,讀取一個溫度值的全過程結(jié)束。在程序調(diào)試過程中發(fā)現(xiàn),當(dāng)設(shè)置斷點(diǎn)單步運(yùn)行時,無法檢測到ADT75發(fā)出的低電平應(yīng)答信號,應(yīng)答信號始終為1;若不設(shè)斷點(diǎn)連續(xù)執(zhí)行時,則可以檢測到低電平應(yīng)答信號。這點(diǎn)是ADT75和其他I2C總線器件(如E2PROM芯片AT24C256)的不同之處,在調(diào)試程序的過程中要注意該細(xì)節(jié)。 ADT75的溫度轉(zhuǎn)換周期為100 ms。在本設(shè)計中,每隔大約250 ms讀取一次溫度值,可以實現(xiàn)監(jiān)測光纖延遲線系統(tǒng)溫度的變化。 結(jié) 語 在光纖延遲線系統(tǒng)的硬件設(shè)計中,ADT75完全能夠滿足實時溫度采集的要求,而且測溫準(zhǔn)確,靈敏度高。由于使用了I2C總線接口,所以溫度檢測電路結(jié)構(gòu)簡單,占用空間小,串行接口占用TMS320F2812的資源少,可靠性高,功耗低,不易受環(huán)境干擾。實驗證明,設(shè)計和運(yùn)行都達(dá)到了令人滿意的效果。 參考文獻(xiàn) 1. 劉和平,鄧力,江渝,等.數(shù)字信號處理器原理、結(jié)構(gòu)及應(yīng)用基礎(chǔ)--TMS320F28x[M].北京:機(jī)械工業(yè)出版社,2007. 2. ADI.±1℃ Accurate,12-Bit Digital Temperature Sensor ADT75 Data Manual,2005. 3. 廣州周立功單片機(jī)發(fā)展有限公司.I2C總線規(guī)范,2004-06. 來源:《單片機(jī)與嵌入式系統(tǒng)》 作者:北京航空航天大學(xué) 魏利民 胡姝玲 張曉青 孟照魁 胡漢偉 |