<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM9+Linux的DS18B20驅(qū)動(dòng)程序設(shè)計(jì)

          基于ARM9+Linux的DS18B20驅(qū)動(dòng)程序設(shè)計(jì)

          作者: 時(shí)間:2014-04-09 來源:網(wǎng)絡(luò) 收藏

          (4)溫度讀寫過程

          本文引用地址:http://www.ex-cimer.com/article/236202.htm

          ①循環(huán)判斷直到復(fù)位,延時(shí)120ms;

          ②寫入CCH命令,跳過讀序列號過程;

          ③寫入44H命令,開始溫度轉(zhuǎn)換,延時(shí)5 ms;

          ④循環(huán)判斷直到復(fù)位,延時(shí)200 ms;

          ⑤寫入CCH命令,跳過讀序列號過程;

          ⑥寫入BEH命令,讀取寄存器;

          ⑦讀溫度整數(shù)部分;

          ⑧讀溫度小數(shù)部分。

          (5)驅(qū)動(dòng)程序編寫

          選定S3C2440一個(gè)GPIO引腳作為連接的數(shù)據(jù)線,經(jīng)過查電路圖和S3C2440的芯片手冊,選擇GPF3為連接引腳;

          主要對GPF的控制寄存器GPFCON和數(shù)據(jù)寄存器GPFDAT進(jìn)行操作,GPF3主要對應(yīng)GPFCON第6位和第7位,以及GPFDAT的第3位進(jìn)行操作;對GPFCON[7:6]設(shè)00為輸人,設(shè)01為輸出;GPFDAT[3]設(shè)為輸入時(shí),相應(yīng)的位即為引腳的狀態(tài),設(shè)為輸出則可以對引腳進(jìn)行置1和置0操作;

          結(jié)合S3C2440的寄存器GPFCON和GPFDAT,以及DS18B20時(shí)序,可以利用C語言編寫下驅(qū)動(dòng)程序,本驅(qū)動(dòng)程序采用實(shí)現(xiàn)read接口函數(shù)的字符設(shè)備驅(qū)動(dòng)。

          3 部分代碼







          最后將data通過read接口函數(shù)發(fā)送到用戶層——copy_to_user(buf,data,2),即將8位整數(shù)和8位小數(shù)部分送到用戶層,完成一次數(shù)據(jù)讀取過程。

          4 系統(tǒng)運(yùn)行與測試

          加載驅(qū)動(dòng)后,通過用戶層調(diào)用驅(qū)動(dòng)程序,圖4為通過串口調(diào)試測試結(jié)果。

          結(jié)語

          完成了基于ARM9和2.6.30的DS18B20驅(qū)動(dòng)程序編寫,實(shí)現(xiàn)了溫度數(shù)據(jù)的采集以及傳輸。以ARM9為平臺,基于2.6.30開發(fā)DS18B20的驅(qū)動(dòng)程序,以模塊的形式加載到內(nèi)核,最后通過應(yīng)用層調(diào)用驅(qū)動(dòng),獲得溫度數(shù)據(jù)。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          linux相關(guān)文章:linux教程



          上一頁 1 2 下一頁

          關(guān)鍵詞: Linux DS18B20

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();