2012年6月13日 星期三

DIY - PIC:PIC18F4550 數字溫度計 – 18B20 內存記憶 (一百三十二)

DIY - 電子:PIC18F4550 數字溫度計 – DS18B20 內存記憶 (一百三十二):

DS18B20 的內存記憶組織如 Figure 7 所示。內存記憶由 SRAM 暫存器和 非易失性 EEPROM 的 TH 和 TL 及配置寄存器組成,注意,如果不使用 DS18B20 的警報功能,TH 和 TL 寄存器可以作為通用存儲器。


Byte 0 Byte 1 唯讀暫存器包含溫度寄存器的 LSBMSBByte 2 3 TH TL 寄存器,Byte  4 包配置寄存器,Byte 567是保留供內部使用,並不能覆蓋,Byte 8 唯讀暫存器是包含 Byte 0 Byte 7 CRC 碼。

[4EH] 指令可將數據寫入 Byte 234 暫存器,傳送數據到 DS18B20 必須用 LSB 2 開始,為了驗證數據的完整性,可以讀取暫存器(使用讀暫存器[BEH] 指令)後的數據寫入。讀取暫存器時,數據傳輸在1-Wire總線由 LSB 0 開始。Master 發出複製暫存器 [48H] 指令,可從 THTL 和配置寄存器轉移數據到 EEPROM

EEPROM 寄存器中的數據將保留,直至設備斷電,設備供電後,EEPROM 數據重新加載到相應的暫存器位置。使用召回 E2 [B8h] 指令,數據也可以在任何時間重新從 EEPROM 暫存器加載到相應的暫存器位置。E2 [B8h] 指令發出後,Master 可以發出讀取時段,DS18B20 回應 0 指示完成召回的狀態或 1 代表召回在進步中。

配置寄存器 (Configuration Register)
Byte 4 是配置寄存器,用戶可以設置 R0R1 bit 在這個寄存器,寄存器默認設置是 R0= 1R1= 112-bit分辨率),分辨率和轉換時間之間有一個直接的關係,配置寄存器 Bit 7 Bit 04 是保留供內部使用的設備,並不能覆蓋。

    
64 Lasered ROM
每個 DS18B20 包含一個獨特的 64 位代碼(見 Figure 6)存儲在 ROM 中,最小的 (LSB) 8 bits ROM 代碼是代表 DS18B201-Wire 家族碼:28H,接下來的 48 bits 是一個獨特的序號。最大的 (MSB) 8 bits 是從第 56 bits ROM 代碼計算的一個循環冗餘校驗(CRC cyclic redundancy check)結果。

   
CRC產生
DS18B20 的在暫存器第 9 byte CRC Bytes64-bit ROM 代碼的一部分,CRC 是由 ROM56 bits 及最大的 (MSB) 8 bits 計算出來。暫存器的 CR 計算是從暫存器中存儲的數據得出,因此數據改變時暫存器的 CRC 亦會更改。從 DS18B20 的讀取數據時,CRC 提供的 Master 數據驗證方法,以確認數據已被正確讀取,Master 必須重新計算接收到的數據 CRC,然後比較 ROMCRCROM讀取)或到暫存器 CRC(暫存器讀取)數值。如果計算出的 CRC 匹配讀取 CRC 值,數據無錯誤。 Master 完全決定 CRC 值的比較和操作是否運行,如果 DS18B20 CRCROM或暫存器)並不匹配由 Master 產生的 CRC 值時,DS18B20 的內部電路沒有辨法防止。

CRCROM或暫存器)的計算公式:CRC = X8 + X5 + X4 + 1

Master 可以重新計算 CRC 和使用 DS18B20 的多項式發生器 (Figure 9) 所示的 CRC 值進行比較。該電路由一個移位寄存器和 XOR 門電路,移位寄存器初始化為 0。開始時 ROM LSB 或暫存器 LSB 移入移位寄存器。移入 56 bits 數值或暫存器的 Byte 7 MSB 後,多項式發生器將包含重新計算 CRC,下一步,必須轉移到電路的 8-bit ROM 代碼或從 DS18B20 的暫存器的 CRC。這時,如果重新計算 CRC 是正確的,移位寄存器將包含全0

     
2012 6 13 天氣報告
氣溫:25.1 @ 22:00
相對濕度:百分之96%
天氣:微雨

沒有留言:

張貼留言