DS18B20的工作時序:
初始化時序
主機首先發出一個480-960微秒的低電平脈沖,然后釋放總線變為高電平,並在隨后的480微秒時間內對總線進行檢測,如果有低電平出現說明總線上有器件已做出應答。若無低電平出現一直都是高電平說明總線上無器件應答。
做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒的低電平出現,如果有,在總線轉為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應存在脈沖,告訴主機本器件已做好准備。若沒有檢測到就一直在檢測等待。

寫操作
寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機先把總線拉低1微秒表示寫周期開始。隨后若主機想寫0,則繼續拉低電平最少60微秒直至寫周期結束,然后釋放總線為高電平。若主機想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結束。而做為從機的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內總線為高電平則為1,若采樣期內總線為低電平則為0。

讀操作
對於讀數據操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數據傳輸到單總線上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數據,若是要送出0就把總線拉為低電平直到讀周期結束。若要送出1則釋放總線為高電平。主機在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內的15微秒時間內完成對總線進行采樣檢測,采樣期內總線為低電平則確認為0。采樣期內總線為高電平則確認為1。完成一個讀時序過程,至少需要60us才能完成

單只DS18B20接線示意圖


較小的硬件開銷需要相對復雜的軟件進行補償,由於DS1820與微處理器間采用串行數據傳送,因此,在對DS1820進行讀寫編程時,必須嚴格的保證讀寫時序,否則將無法讀取測溫結果。在使用PL/M. C等高級語言進行系統程序設計時,對DS1820操作部分最好采用匯編語言實現。
REF
http://www.elecfans.com/yuanqijian/sensor/20171106575662.html
https://www.bilibili.com/read/cv3543776/
https://wenku.baidu.com/view/df6db6a327d3240c8447efda.html
https://blog.csdn.net/qq_37707218/article/details/80529365
https://baike.baidu.com/item/DS18B20/10295269?fr=aladdin
視頻:
https://haokan.baidu.com/v?vid=606449673486094692&pd=bjh&fr=bjhauthor&type=video
