新型數(shù)字溫度傳感器ADT75的原理及應(yīng)用
(2)傳送ADT75地址
在讀取溫度值之前必須向從器件發(fā)送地址。ADT75的7位地址為0x48。由于是讀數(shù)據(jù)(讀/寫位為1),所以傳送的8位地址命令為0x91。在傳送數(shù)據(jù)時,當SCL為0時,才允許SDA上的數(shù)據(jù)變化;為1時,SDA上的數(shù)據(jù)保持不變。8位地址傳送結(jié)束后,主機釋放SDA(令SDA=1),等待從機的應(yīng)答信號。
(3)檢測ADT75的應(yīng)答位
I2C總線傳輸完8位數(shù)據(jù)后由從機給主機一個低電平的應(yīng)答信號,表示從機正常工作并可以接收下一個字節(jié)的數(shù)據(jù)。檢測ADT75的應(yīng)答位時,應(yīng)注意把GPIOB1口設(shè)置為輸入。本文引用地址:http://www.ex-cimer.com/article/195703.htm
EALLOW:
GpioMuxRegs.GPBDIR.bit.GPIOB1=0;
EDIS;
如果SDA=0,則TMSS20F2812開始從ADT75中讀取數(shù)據(jù)的高字節(jié);SDA=1,表示ADT75忙或者損壞,結(jié)束數(shù)據(jù)讀取。
(4)讀取數(shù)據(jù)
當檢測到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é)束,進入停止狀態(tài)。
(5)結(jié)束數(shù)據(jù)傳輸
結(jié)束數(shù)據(jù)傳輸由Stop()函數(shù)完成,結(jié)束條件如下:
Delay(50);
至此,讀取一個溫度值的全過程結(jié)束。在程序調(diào)試過程中發(fā)現(xiàn),當設(shè)置斷點單步運行時,無法檢測到ADT75發(fā)出的低電平應(yīng)答信號,應(yīng)答信號始終為1;若不設(shè)斷點連續(xù)執(zhí)行時,則可以檢測到低電平應(yīng)答信號。這點是ADT75和其他I2C總線器件(如E2PROM芯片AT24C256)的不同之處,在調(diào)試程序的過程中要注意該細節(jié)。
ADT75的溫度轉(zhuǎn)換周期為100 ms。在本設(shè)計中,每隔大約250 ms讀取一次溫度值,可以實現(xiàn)監(jiān)測光纖延遲線系統(tǒng)溫度的變化。
結(jié) 語
在光纖延遲線系統(tǒng)的硬件設(shè)計中,ADT75完全能夠滿足實時溫度采集的要求,而且測溫準確,靈敏度高。由于使用了I2C總線接口,所以溫度檢測電路結(jié)構(gòu)簡單,占用空間小,串行接口占用TMS320F2812的資源少,可靠性高,功耗低,不易受環(huán)境干擾。實驗證明,設(shè)計和運行都達到了令人滿意的效果。
評論