DS18B20 溫度傳感器:原理、特性與應(yīng)用解析(三)
單總線通信協(xié)議:極簡布線的底層邏輯
單總線(1-Wire)是 DS18B20 的核心技術(shù),它通過一根數(shù)據(jù)線實(shí)現(xiàn)雙向通信,通信過程嚴(yán)格遵循初始化、ROM 命令、功能命令的三段式時(shí)序,確保數(shù)據(jù)傳輸?shù)目煽啃浴?/span>
初始化階段
初始化是通信的前提,由 MCU 發(fā)送復(fù)位脈沖,DS18B20 返回應(yīng)答脈沖,確認(rèn)器件在線:
MCU 發(fā)送復(fù)位脈沖:將 DQ 線拉低至少 480μs,然后釋放總線(上拉電阻使 DQ 線恢復(fù)高電平)。
等待應(yīng)答脈沖:DS18B20 檢測到復(fù)位脈沖后,延遲 15~60μs,然后將 DQ 線拉低 60~240μs 作為應(yīng)答。MCU 需在釋放總線后的 15~60μs 內(nèi)檢測 DQ 線電平,若為低則表示器件響應(yīng)。
初始化失敗通常源于總線短路、上拉電阻缺失或傳感器損壞,實(shí)際應(yīng)用中需通過多次重試機(jī)制提高可靠性。
ROM 命令階段
當(dāng)總線上連接多個(gè) DS18B20 時(shí),需通過 ROM 命令識別目標(biāo)器件,常用命令包括:
讀 ROM(0x33):讀取當(dāng)前總線上唯一器件的 64 位 ROM 地址(僅適用于單器件場景)。
匹配 ROM(0x55):后跟 64 位 ROM 地址,僅與該地址匹配的傳感器響應(yīng)后續(xù)命令(多器件通信核心命令)。
搜索 ROM(0xF0):通過位碰撞檢測算法,逐步確定總線上所有器件的 ROM 地址(用于未知地址的多器件枚舉)。
跳過 ROM(0xCC):忽略 ROM 地址,直接向總線上所有器件發(fā)送功能命令(適用于單器件或廣播場景)。
例如,在多傳感器組網(wǎng)中,MCU 先通過搜索 ROM 獲取所有器件地址,再通過匹配 ROM 命令單獨(dú)控制每個(gè)傳感器,避免數(shù)據(jù)沖突。
功能命令階段
ROM 命令后,MCU 發(fā)送功能命令控制傳感器工作,關(guān)鍵命令包括:
溫度轉(zhuǎn)換(0x44):啟動(dòng)溫度測量,轉(zhuǎn)換時(shí)間取決于分辨率(9~12 位對應(yīng) 93.75~750ms),轉(zhuǎn)換期間 DQ 線可保持高電平或由 MCU 控制。
讀暫存器(0xBE):讀取 RAM 中 9 字節(jié)數(shù)據(jù),包括溫度寄存器(第 2、3 字節(jié))、配置寄存器(第 4 字節(jié))等,讀取時(shí)需按字節(jié)順序,每個(gè)字節(jié)后傳感器會(huì)發(fā)送一個(gè)應(yīng)答位。
寫暫存器(0x4E):向 RAM 寫入 3 字節(jié)數(shù)據(jù)(高溫報(bào)警閾值、低溫報(bào)警閾值、配置寄存器),用于設(shè)置溫度報(bào)警上下限。
復(fù)制暫存器(0x48):將 RAM 中的配置信息寫入 EEPROM(非易失性存儲(chǔ)),確保斷電后配置不丟失。
召回 EEPROM(0xB8):將 EEPROM 中保存的配置信息恢復(fù)到 RAM,用于上電初始化。
功能命令的執(zhí)行需嚴(yán)格遵循時(shí)序,例如寫命令時(shí),MCU 需在每個(gè)位周期(60~120μs)內(nèi)將 DQ 線拉低(寫 0)或保持高電平(寫 1),傳感器在每個(gè)位周期的中間(約 30μs)采樣 DQ 線電平。