| P7* | P6* | P5* | P4* | P3* | P2* | P1* |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
地址指針寄存器最低兩位所選的數(shù)據(jù)寄存器如表3所列。
表3 寄存器地址
| P1 | P0 | 寄存器 |
| 0 | 0 | 溫度值(只讀,上電缺。 |
| 0 | 1 | 配置(讀/寫) |
| 1 | 0 | THYST(讀/寫) |
| 1 | 1 | TOTI(讀/寫) |
溫度值寄存器是一個16位只讀寄存器,它的高10位以2的補碼格式儲存由A/D轉(zhuǎn)換器送來10位溫度讀數(shù),低6位未用。溫度數(shù)據(jù)格式如表4所列。
表4 溫度數(shù)據(jù)格式
| 溫度/℃ | 數(shù)字輸出 | 溫度/℃ | 數(shù)字輸出 |
| -75 | 10 1101 0100 | +0.25 | 00 0000 0001 |
| -50 | 11 0011 1000 | +10 | 0 0001 01000 |
| -25 | 11 1001 1100 | +25 | 0 0011 00100 |
| -0.25 | 11 1111 1111 | +50 | 0 0110 01000 |
| 0 | 00 0000 0000 | +75 | 0 1001 01100 |
配置寄存器是一個8位讀/寫寄存器,用來設(shè)置AD7416的工作方式。
TRYST設(shè)點寄存器是一個16位讀/寫寄存器,它的9個最高位儲存以2的補碼格式表示的低溫度門限設(shè)點。
TOT1設(shè)點寄存器是一個16位讀/寫寄存器,它的9個最高位存儲以2的補碼格式表示的高溫度門限設(shè)點。
AD7416上電時地址指針指向溫度值寄存器,TOT1設(shè)點寄存器的值為80℃,THYST設(shè)點寄存器的值為75℃,這些缺省使得AD7416可以用于標(biāo)準(zhǔn)的恒溫器而不需要與任何行總線連接。
2.3 工作方式選擇
AD7416有兩種工作方式,方式的選擇由系統(tǒng)工作情況來決定。
在工作方式1情況下,配置寄存器高3位D7~D5必須保持位0,最低位D0=0為正常工作方式。每400μs進(jìn)行一次轉(zhuǎn)換,旦轉(zhuǎn)換結(jié)束,器件將部分地降低功耗(典型情況為350μA),直至下一次轉(zhuǎn)換開始。
工作方式2由配置寄存器的最低位D0=1來啟動,適合于比較慢的速率測溫系統(tǒng)中。通過寫AD7416使之進(jìn)入一個在兩次讀操作之間處于全掉電狀態(tài),這樣,器件的功耗可以更低。在全掉電時,電流消耗典型值為0.2μA。
2.4 軟件設(shè)計
軟件設(shè)計采用虛擬I2C總線軟件包VIIC[1],
該軟件包具有最佳包容性設(shè)計、歸一化設(shè)計以及應(yīng)用界面設(shè)計等特色。在此軟件包為平臺來進(jìn)行軟件設(shè)計可以不必了解I2C總線原理、協(xié)議和時序,只要了解該軟件包的應(yīng)用操作即可,使程序更具模塊化、調(diào)試簡單等優(yōu)點。
軟件包規(guī)定了讀/寫N字節(jié)數(shù)據(jù)子程序為惟一出口界面,因此,由調(diào)用該讀/寫子程序及滿足調(diào)用操作的初始化操作的三條命令即構(gòu)成軟件包的應(yīng)用界面,即
MOV SLA,#SLAW/SLAR ;尋址字節(jié)存放單元存放總線
;上節(jié)點尋址并確定數(shù)據(jù)傳送方向
MOV NUMBYT,#N ;傳送字節(jié)數(shù)存儲單元存放
;需要傳送的N字節(jié)
LCALL WRNBYT/RDNBYT:調(diào)用讀/寫N字節(jié)數(shù)據(jù)子程序
三條初始化命令決定了CPU對總線上節(jié)點的尋址和數(shù)據(jù)傳送方向以及需要傳送的字節(jié)數(shù)N。在具體應(yīng)用該軟件包時,只需要對軟件包的應(yīng)用界面進(jìn)行操作即可,從而避免了設(shè)計者必須從I2C總線原理上對擴展的I2C總線外圍器件進(jìn)行繁瑣的應(yīng)用程序設(shè)計。
系統(tǒng)程序流程如圖4所示。
讀兩字節(jié)的溫度值寄存器時序如圖5所示。
3 遠(yuǎn)程離溫度數(shù)據(jù)采集的實現(xiàn)方法
本實例中要求測量近20m的溫度節(jié)點,為了簡化系統(tǒng)硬件設(shè)計,沒有使用緩沖器進(jìn)行驅(qū)動;而通過加適當(dāng)?shù)纳侠娮瑁垣@得一定的上拉電流使信號采集可靠。在實際應(yīng)用系統(tǒng)中,上拉電阻值由I2C總線系統(tǒng)中信號所需的上升時間決定。近似地認(rèn)為整修系統(tǒng)的時間常數(shù)為1μs。對于每個分別的總線,其上拉電阻計算式為
Rp=1μs/(Cd+Cw)
式中:Cd為連到每個總線上的器件電容的和;Cw為每個線上的全部導(dǎo)線電容和雜散電容。
系統(tǒng)中電容估算:I2C器件電容約為80 pF;雜散電容約為80 pF;導(dǎo)線電容約為1500 pF。因此,總線系統(tǒng)的上拉電阻為
Rp=1μs/(80pF+80pF+1500pF)=602Ω
為使數(shù)據(jù)采集可靠,選用了Rp=510Ω的電阻。由于上拉電阻受到最大拉電流限制,所以應(yīng)檢查上拉電流不超過30mA。本例上拉電流(5-0.4)V/Rp=9.02mA<30mA,檢查通過。
調(diào)試中發(fā)現(xiàn),降低上拉電阻阻值后大大改善了通信情況,但有時仍然會有誤碼現(xiàn)象出現(xiàn),于是在軟件上降低了通信的頻率。將頻率由400 kb/s降低到200 kb/s,通過放慢通信速度來提高通信可靠性。實際證明,處理之后的溫度值讀取穩(wěn)定可靠。
結(jié)束語
筆者用AD7416所設(shè)計的多路溫濕度循環(huán)檢測控制儀,溫度檢測準(zhǔn)確可靠,不易受環(huán)境干擾,為整個系統(tǒng)的正常運行提供了可靠性保障。





