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





