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