Linu溫傳感器DSB驅(qū)動程序設(shè)計_第1頁
Linu溫傳感器DSB驅(qū)動程序設(shè)計_第2頁
Linu溫傳感器DSB驅(qū)動程序設(shè)計_第3頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于Linux地溫度傳感器DS18B20 驅(qū)動程序設(shè)計時間:2018-03-02 11:07:14 來源:中電網(wǎng) 作者:引言傳統(tǒng)地模擬溫度測量抗干擾能力差,放大電路零點漂移大,導(dǎo)致測量值誤差大,難以達(dá)到所需精度在實際應(yīng)用中,采用抗干擾能力強地數(shù)字溫度傳感器是解決上述問題地有效辦法DS18B20是Dallas公司生產(chǎn)地數(shù)字溫度傳感器 ,具有體積小、適用電壓寬、經(jīng)濟 靈活地特點.它內(nèi)部使用了 on board專利技術(shù),全部傳感元件及轉(zhuǎn)換電路集成在一個形如三 極管地集成電路內(nèi).DS18B20有電源線、地線及數(shù)據(jù)線 3根引腳線,工作電壓范圍為35.5 V,支持單總線接口 .準(zhǔn)確地溫度測量是很多嵌入式系

2、統(tǒng)中重要地一點在Linux操作系統(tǒng)下使用數(shù)字溫度傳感器DS18B20,不僅可以得到高精度地溫度測量值,而且硬件簡單可靠1Linux地設(shè)備驅(qū)動程序在Linux中,驅(qū)動程序是內(nèi)核地一部分,它屏蔽了硬件細(xì)節(jié),是整個操作系統(tǒng)地基礎(chǔ) 驅(qū)動程序與Lin ux內(nèi)核結(jié)合有兩種方式:在編譯內(nèi)核時 ,靜態(tài)地鏈接進內(nèi)核;在系統(tǒng)運行時 以模塊加載地方式加載進內(nèi)核 驅(qū)動地對象是存儲器和外設(shè) .Linux將存儲器和外設(shè)分為 3個基礎(chǔ)類:字符設(shè)備、 塊設(shè)備、網(wǎng)絡(luò)設(shè)備.字符設(shè)備是指必須以串行順序依次進行訪問地設(shè)備,不需要經(jīng)過系統(tǒng)地快速緩沖;而塊設(shè)備要經(jīng)過系統(tǒng)地快速緩沖,可以任意順序進行訪問,以塊為單位進行操作.字符設(shè)備和塊設(shè)

3、備并沒有嚴(yán)格地界限,有些設(shè)備(如Flash既可看作字符設(shè)備,也可作為塊設(shè)備來訪問.網(wǎng)絡(luò)設(shè)備面向數(shù)據(jù)包地接收和發(fā)送而設(shè)計,并不對應(yīng)于文件系統(tǒng)節(jié)點.內(nèi)核與網(wǎng)絡(luò)設(shè)備地通信方式完全不同于內(nèi)核與字符設(shè)備、塊設(shè)備地通信方式DS18B20是單總線溫度傳感器,主機只能以位”為單位對其進行訪問因此,在 Linux系統(tǒng)中,將DS18B20作為一種典型地字符設(shè)備來訪問.2 DS18B20地結(jié)構(gòu)和工作原理2.1DS18B20地內(nèi)外結(jié)構(gòu)L 23B1DS18B20地外部結(jié)構(gòu)如圖1所示.其中,VDD為電源輸入端,DQ為數(shù)字信號輸入/ 輸出端,GND為電源地.GNDDQ圈t DS18BZ0外部第構(gòu)DS18B20內(nèi)部結(jié)構(gòu)主要包

4、括 4部分:64位光刻ROM、溫度傳感器、非易失地溫度報 警觸發(fā)器TH和TL、配置寄存器,如圖2 所示.DQSiAM和-ttn*11| LCRCLffi 2 DSJBH2064位ROM中,在產(chǎn)品出廠前就被廠家通過光刻刻錄好了64位序列號.該序列號可以看作是DS18B20地地址序列碼,用來區(qū)分每一個 DS18B20,從而更好地實現(xiàn)對現(xiàn)場溫度地多 點測量.圖2中地暫存器是DS18B20中最重要地寄存器.暫存器由9個字節(jié)組成,各字節(jié)定義如 表1所列.配置寄存器用于用戶設(shè)置溫度傳感器地轉(zhuǎn)換精度TMR1ROI13 |,其各位定義如下:A i 存關(guān)字節(jié)分配豪字節(jié)it x0騎91武值底蠱燈12AMMcTH)

5、3*VTt4配寄樣券57ft 11a廉環(huán)冗余校離CCK血TM位是測試模式位,用于設(shè)置DS18B20是工作模式(0還是測試模式(1,其出廠值為 0.R1、R0用于設(shè)置溫度傳感器地轉(zhuǎn)換精度:00,分辨率為9位,轉(zhuǎn)換時間為93.75ms ; 01,分辨率為10位,轉(zhuǎn)換時間為187.5 ms ; 10,分辨率為11位,轉(zhuǎn)換時間為375 ms ; 11分辨為 12位,轉(zhuǎn)換時間為750 ms.R1、R0地出廠值為11其余5位值始終為1.第0和第1字節(jié)為16位轉(zhuǎn)換后地溫度二進制值,其中前4位為符號位,其余12位 為轉(zhuǎn)換后地數(shù)據(jù)位(分辨率為12位.如果溫度大于0,則前4位值為0,只要將測到地數(shù)值乘 上0.06

6、2 5即可得到實際溫度值;如果溫度小于0,則前4位為1,需將測得地數(shù)值取反加1后,再乘上0.062 5.第0和第1字節(jié)各位地二進制值如下:LSB(O)HSB(l)2.2 DS18B20 地應(yīng)用電路結(jié)構(gòu)按DS18B20地供電方式,其應(yīng)用電路結(jié)構(gòu)可分為如下 3種:寄生電源供電方式; 寄生電源強上拉供電方式;外部電源供電方式實際應(yīng)用中,以外部電源供電方式為主其應(yīng)用原理圖如圖3所示.VCC 巴引曲20MCU卜加_|磬n i(mT4VCC圖3外部電31供電原理團2.3DS18B20地工作原理根據(jù)DS18B20地通信協(xié)議,MCU對其操作主要有如下 3個步驟:讀寫之前,對DS18B20發(fā)送約500卩地低電平

7、進行復(fù)位;復(fù)位成功 ,發(fā)送ROM指令;發(fā)送RAM指令.MCU對DS18B20地具體操作流程如圖 4 所示.N復(fù)檯戰(zhàn)功?寫ROM命令0CCH 跳11ROM匹配)延時延時S位開始丿結(jié)束)I寫尺?M命令0CCH |S 4 DSI8B2O 作潦程寫 ROM 命 0BEH (發(fā)讀濕度命令寫ROM命令44H 館動溫度轉(zhuǎn)換3Linux地DS18B20驅(qū)動程序?qū)崿F(xiàn)選取mini2440 開發(fā)板為硬件平臺(主芯片為Samsung公司地S3C2440,選取 Linux地最新內(nèi)核 Linux2.6.29 為軟件平臺通過mini2440 地擴展接口引出 GPIO 口 (GPBI為數(shù)據(jù)線DQ.DS18B20為單總線器件,

8、因此對其操作地時序比較嚴(yán)格.DS18B20驅(qū)動最終能否得以正常運行,獲得實時溫度值,關(guān)鍵在于能否正確地編寫復(fù)位程序、位寫程序和位讀程序.3.1復(fù)位程序?qū)S18B20進行讀寫之前要對其復(fù)位初始化,以檢測DS18B20地存在.復(fù)位要求MCU將數(shù)據(jù)線下拉480960卩,再釋放數(shù)據(jù)線,等待約60 若MCU接收到DS18B20發(fā) 出地存在低電平,則表示復(fù)位成功下面是復(fù)位程序代碼:#血旅DQ S3C241Q-GPB1定次弓I膵卷占更改GPIQ 口M 此FiM DQ,INPUT S3C2nO_GPBl_lNP 軸人功能 define DQJJUTPUT S3C24ia_GPBlOUTP 輪出功繼 void

9、 reself void)(do 53c2 t/ MCU發(fā)出60。沖低電平昭臨垃亠gpioetpi*DQB, /ftR為高電平udlay(6O) iwhik(a3c2410_jsp_getpin(DQ) r -0 j檢樋是否收到簽件存崔低韭平while) = = 0)(尊待DS1&聘眞電平結(jié)車= y庫|3.2寫1字節(jié)子程序發(fā)送ROM和RAM指令,需向DS18B20寫入數(shù)據(jù)寫1字節(jié)子程序如下:void writcbyteCuchar comd) fuchar is3c2U0 ffpcfgpin DQ, DQ.OUTPUT);設(shè)為出 for (i 如1&ii + + ”s3c2410_gpio_K

10、tpnCPQ, 0)j 產(chǎn)生下降沿 udehy( 1) jif,糠特 DS1BB20 釆禪覚畢s3c2llO_gPio_5ctpin(DQ. l)t 拉何為高電平 comd comdA 13.3讀N字節(jié)子程序當(dāng)溫度轉(zhuǎn)換完畢,需從DS18B20地RAM中讀取第0和第1字節(jié)地二進制數(shù)據(jù)讀1字節(jié)子程序如下:uchsr rtadby(e(void)(uchar itempOf for(iOti = l ;蚪盤 4 】0_gpio_c(gpin(DQ, DQ_OUTPUT)t讖?fù)癁檩敵鰏3c2410_gpio_setpin( DQ* 0) iudday(1)s3c2l 10_gpK_wtpin(DQ, 1)槍為高電平 s3cZ410_gpio?-7 DQ T rt UT);設(shè)直為輸人,釋放數(shù)振級 udelayC 10) aif(s3c2410_gpio_Etpin(DQ) temp(temp| OxSO); 數(shù)據(jù)為1udelay(65) i s3c2410_gpio_cfgpin(DQ + DQ_ OUTPUT) t 心旦410.KP斂pmg* l)t /fit回為離電平retum(Ump) i讀N字節(jié)子程序如下:void rednbytef uchar N t uchar * temp) uchar i;for(i=OjL . hn

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論