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