基于Linux的溫度傳感器DS18B20驅(qū)動(dòng)程序設(shè)計(jì)
2.3DS18B20的工作原理本文引用地址:http://butianyuan.cn/article/163230.htm
根據(jù)DS18B20的通信協(xié)議,MCU對其操作主要有如下3個(gè)步驟:讀寫之前,對DS18B20發(fā)送約500 μs的低電平進(jìn)行復(fù)位;復(fù)位成功,發(fā)送ROM指令;發(fā)送RAM指令。MCU對DS18B20的具體操作流程如圖4所示。
3Linux的DS18B20驅(qū)動(dòng)程序?qū)崿F(xiàn)
選取mini2440開發(fā)板為硬件平臺(tái)(主芯片為Samsung公司的S3C2440),選取Linux的最新內(nèi)核Linux2.6.29為軟件平臺(tái)。通過mini2440的擴(kuò)展接口引出GPIO口(GPBl)為數(shù)據(jù)線DQ。
DS18B20為單總線器件,因此對其操作的時(shí)序比較嚴(yán)格。DS18B20驅(qū)動(dòng)最終能否得以正常運(yùn)行,獲得實(shí)時(shí)溫度值,關(guān)鍵在于能否正確地編寫復(fù)位程序、位寫程序和位讀程序。
3.1復(fù)位程序
對DS18B20進(jìn)行讀寫之前要對其復(fù)位初始化,以檢測DS18B20的存在。復(fù)位要求MCU將數(shù)據(jù)線下拉480~960 μs,再釋放數(shù)據(jù)線,等待約60 μs。若MCU接收到DS18B20發(fā)出的存在低電平,則表示復(fù)位成功。
下面是復(fù)位程序代碼:
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論