DS18B20時(shí)序(下)
溫度轉(zhuǎn)換的時(shí)序雖不直接屬于通信時(shí)序,但與數(shù)據(jù)讀取緊密相關(guān),影響著主機(jī)的操作節(jié)奏。當(dāng)主機(jī)發(fā)送“啟動(dòng)溫度轉(zhuǎn)換”命令(0x44)后,DS18B20會(huì)進(jìn)入轉(zhuǎn)換階段,此時(shí)傳感器內(nèi)部的ADC開(kāi)始將模擬溫度信號(hào)轉(zhuǎn)換為數(shù)字量,轉(zhuǎn)換時(shí)間取決于預(yù)設(shè)的分辨率:9位分辨率需93.75ms,10位需187.5ms,11位需375ms,12位需750ms。在轉(zhuǎn)換期間,若主機(jī)嘗試與傳感器通信,從機(jī)不會(huì)響應(yīng),因此主機(jī)必須等待轉(zhuǎn)換完成后再發(fā)起讀數(shù)據(jù)操作。判斷轉(zhuǎn)換完成的方式有兩種:一是根據(jù)分辨率預(yù)設(shè)固定延時(shí)(如12位時(shí)等待750ms以上);二是通過(guò)讀取暫存器的第7字節(jié)(轉(zhuǎn)換就緒標(biāo)志),但這需要額外的通信操作。實(shí)際應(yīng)用中,固定延時(shí)更為常用,但需確保延時(shí)足夠長(zhǎng),否則讀取的數(shù)據(jù)可能是上一次的轉(zhuǎn)換結(jié)果,而非最新值。
多節(jié)點(diǎn)級(jí)聯(lián)時(shí)的時(shí)序控制更為嚴(yán)格,尤其是在執(zhí)行“搜索ROM”命令時(shí),主機(jī)需要通過(guò)精密的時(shí)序交互識(shí)別總線上每個(gè)傳感器的唯一64位序列號(hào)。搜索過(guò)程中,主機(jī)每發(fā)送一位數(shù)據(jù),會(huì)先拉低總線并釋放,等待從機(jī)響應(yīng):總線上的從機(jī)若該位為0,會(huì)拉低總線;若為1,則保持高電平。主機(jī)通過(guò)檢測(cè)總線電平判斷是否存在沖突(即同時(shí)有從機(jī)發(fā)送0和1),并根據(jù)沖突情況調(diào)整后續(xù)位的發(fā)送,逐步定位每個(gè)傳感器的序列號(hào)。這一過(guò)程對(duì)時(shí)序的精度要求極高,每個(gè)位的判斷、沖突檢測(cè)、延時(shí)控制都需嚴(yán)格遵循協(xié)議,否則可能漏檢或誤判傳感器,導(dǎo)致多節(jié)點(diǎn)識(shí)別失敗。
時(shí)序控制的實(shí)現(xiàn)依賴于MCU的硬件或軟件延時(shí)能力,不同的MCU需采用不同的優(yōu)化方式。對(duì)于帶定時(shí)器的MCU,可通過(guò)定時(shí)器中斷精確控制電平切換的時(shí)間,避免軟件延時(shí)受指令執(zhí)行速度影響的不穩(wěn)定性;對(duì)于資源有限的MCU,需通過(guò)匯編指令或循環(huán)計(jì)數(shù)校準(zhǔn)延時(shí),確保復(fù)位脈沖、寫(xiě)時(shí)隙、讀時(shí)隙的時(shí)間參數(shù)在允許范圍內(nèi)(通常允許±10%的誤差)。此外,總線的硬件特性也會(huì)影響時(shí)序,例如上拉電阻的阻值過(guò)大會(huì)導(dǎo)致總線電平切換緩慢,阻值過(guò)小則會(huì)增加功耗,4.7kΩ是兼顧速度與功耗的常用選擇;長(zhǎng)距離布線時(shí),總線的分布電容會(huì)延緩電平變化,可能需要縮短通信速率或增加總線驅(qū)動(dòng)芯片,以維持時(shí)序的準(zhǔn)確性。
常見(jiàn)的時(shí)序問(wèn)題往往導(dǎo)致通信失敗,例如:復(fù)位脈沖時(shí)長(zhǎng)不足480μs,從機(jī)無(wú)法識(shí)別復(fù)位信號(hào),無(wú)應(yīng)答;寫(xiě)“0”時(shí)拉低總線時(shí)間不足60μs,從機(jī)誤讀為“1”;讀時(shí)隙中主機(jī)采樣時(shí)間超過(guò)15μs,錯(cuò)過(guò)從機(jī)輸出的有效電平;溫度轉(zhuǎn)換未完成就發(fā)起讀操作,讀取到無(wú)效數(shù)據(jù)。排查這些問(wèn)題時(shí),需借助示波器觀察DQ線的電平變化,對(duì)比實(shí)際時(shí)序與協(xié)議要求的差異,例如測(cè)量復(fù)位脈沖的寬度、應(yīng)答脈沖的出現(xiàn)時(shí)間、讀寫(xiě)時(shí)隙的電平持續(xù)時(shí)間等,通過(guò)硬件波形分析定位時(shí)序偏差的根源。
DS18B20的時(shí)序是單總線通信的“語(yǔ)法規(guī)則”,從初始化的復(fù)位與應(yīng)答,到寫(xiě)命令的時(shí)隙控制,再到讀數(shù)據(jù)的采樣窗口,每一個(gè)環(huán)節(jié)的時(shí)間參數(shù)都經(jīng)過(guò)精心設(shè)計(jì),以在簡(jiǎn)化硬件的同時(shí)保證通信可靠。無(wú)論是單節(jié)點(diǎn)測(cè)溫還是多節(jié)點(diǎn)組網(wǎng),嚴(yán)格遵循時(shí)序規(guī)則都是實(shí)現(xiàn)穩(wěn)定數(shù)據(jù)傳輸?shù)那疤?,而?duì)時(shí)序細(xì)節(jié)的深入理解,不僅能幫助工程師快速驅(qū)動(dòng)傳感器,更能在復(fù)雜場(chǎng)景下高效排查通信故障,充分發(fā)揮DS18B20在溫度采集領(lǐng)域的優(yōu)勢(shì)。





