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

          新聞中心

          EEPW首頁 > 消費電子 > 設計應用 > 基于LPC2214和μC/OS-II的iButton接口

          基于LPC2214和μC/OS-II的iButton接口

          ——
          作者:電子科技大學 曾非一 桑楠 熊光澤 時間:2007-01-26 來源:《單片機與嵌入式系統(tǒng)應用》 收藏

          電力設備點檢管理是利用檢測設備和儀器,按照預先制訂的技術標準,定人、定點、定路線、定周期、定方法、定檢查記錄,施行全過程對運行設備進行動態(tài)檢查。點檢人員按要求將手持的個人點檢機與安置在設備現(xiàn)場的id鈕扣相接觸后,該位置相應的若干作業(yè)指令應逐條顯示在個人點檢服務器上,指導各相關崗位人員完成點檢工作;同時,采集的設備現(xiàn)場信息以數字形式被記錄在點檢器的存儲器中,方便地上傳給計算機管理系統(tǒng)進行統(tǒng)計分析。dallas公司生產的ibutton系列產品為工業(yè)現(xiàn)場的應用和信息識別技術研究創(chuàng)造了條件。

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

          ibutton(信息鈕扣)的物理結構是一個封裝在扁圓型不銹鋼外殼里的直徑為16 mm、厚度為3~6 mm的微型計算機晶片,是一種攜帶自動識別號的電子數據標簽。先進的設計理念及封裝形式賦予了ibutton超強的抗沖擊、防靜電、防腐蝕、防水、防摩擦等性能,具有ic卡、磁卡等信息載體無法比擬的優(yōu)勢;極大地滿足系統(tǒng)在可靠性、穩(wěn)定性方面的要求,可確保十年以上的使用壽命。在以 lpc2214設計的點檢機中,ibutton得到了充分的應用。下面以ds1990a為例,對其與lpc2214之間一線串行通信方式進行研究。

          1 ds1990a的性能特點

          堅固耐用的ibutton具有優(yōu)秀的環(huán)境適應能力,可防塵、防潮和防震。這種緊湊的鈕扣外形使其自動對準相應的探測器,易于人工操作使用。各種附件使ds1990a在巡檢、物流等現(xiàn)代化管理系統(tǒng)中具有不可替代的作用。其主要性能指標如下:

            ◆ 工廠刻入的64位rom包括48位唯一序列碼、8位crc校驗碼和8位家族碼(01h)。
            ◆ 通過單線與主機進行數據通信,傳輸速率可達16.3 kbps。
            ◆ 標準16 mm直徑和1wire協(xié)議保證了與其他ibutton產品的兼容性。
            ◆ 讀取時間可在5 ms 以內。
            ◆ 溫度范圍-40~+85℃

          2 ds1990a與lpc2214硬件接口設計

          1-wire是在一條總線上連接1個主控器和多個從機設備的系統(tǒng)。在任何情況下,ds1990a都是從機設備,而總線控制器常由微控制器充任。1-wire總線定義了1根信號線,所以讓總線上每個設備都在適當的時刻運行。ds1990a為漏級開路輸出,總線主控制器可以采用與其一致的等效電路。在主控制器端需加1個上拉電阻,在短距離傳輸情況下上拉電阻約為5 kω。1個多點系統(tǒng)由1個1-wire總線和連接在上面的多個從機設備組成。

          1-wire單總線的閑置狀態(tài)為高電平。不管是何種原因,當傳輸操作過程需要暫停下來,且要求傳送過程還能繼續(xù)時,總線必須處于閑置狀態(tài);如果情況不是這樣或者總線保持低電平超過120 μs,那總線上的所有器件將要復位。

          ds1990a與lpc2214的接口電路如圖1所示。由于lpc2214 p0口都已被點檢機其他部分占用,p1口均有上拉電阻,并非開漏輸出,因此需有2個i/o口接ibutton。lpc2214的p1.22口接tx,用作輸出;p1.16口接rx,用作輸入。

          圖1ds1990a與lpc2214硬件接口

          3 軟件設計

          ds1990a內建rom僅由單根數據線訪問。依據dallas的1-wire協(xié)議,可以從中提取48位序列碼,8位家族碼和8位crc校驗碼。1-wire通信協(xié)議規(guī)定,總線的收發(fā)按照特殊時隙下的總線狀態(tài)進行,由主機發(fā)出的同步脈沖下降沿初始化;所有數據讀寫都按照低位在前的原則。

          ds1990a在1-wire總線上的數據訪問命令流程依次為:初始化、rom功能命令、讀取數據。

          3.1 初始化及應答

          1-wire總線上所有的傳輸操作均由初始化序列開始。初始化序列由主機發(fā)出的復位脈沖(reset pulse)和從機發(fā)出的在線應答脈沖(presence pulse)組成。一個復位脈沖緊跟一個在線應答脈沖表明ds1990a就緒,可執(zhí)行恰當的rom命令進行數據收發(fā)。

          復位和在線應答脈沖時序如圖2(a)所示,主機發(fā)送(tx)一個復位脈沖(一個至少480 μs的低電平),然后釋放信號線進入接收模式(rx)。此時,1-wire總線被5 kω上拉電阻拉至高電平,當檢測到數據線上信號的上升沿后,ds1990a等待(tpdl,15~60 μs),然后發(fā)送在線應答脈沖(tpdl,15~60 μs)。

          3.2 讀寫操作

          一旦主機檢測到應答脈沖,就可以發(fā)出rom功能命令。所有rom操作命令的長度為8位。read rom的命令為[33h]或[0fh],此命令允許總線主控器讀取ds1990a的8位家族碼、唯一的48位序列碼和8位crc校驗碼。此命令僅當總線上只有一個ds1990a設備時可以使用。若總線上的從機設備超過一個,當各設備同時發(fā)送時將會引發(fā)數據沖突。search rom的命令為[f0h],此命令允許總線主控器采用排除法來確認總線上所有設備的64位rom碼。

          讀/寫時隙的定義如圖2(b)、(c)所示,主機將數據線置低初始化所有時隙。在數據線的下降沿,通過觸發(fā)ds1990a中的延時電路使得ds1990a與主機同步;在寫時隙期間,延時電路決定何時ds1990a對數據線進行采樣。至于讀數據的時隙,如果傳輸的是“0”,延時電路將繼續(xù)被置低近15 μs,然后被置高;如果數據位是“1”,則ibutton保持讀數據的時隙不變。


          圖2復位和讀/寫時序

          3.3 關鍵代碼及實現(xiàn)

          主機和ibutton的通信是通過初始化、寫數據時序、讀數據時序完成的,命令和數據的各個字節(jié)均由最低有效位開始逐位傳送。在程序中,先初始化lpc2214的time1定時器,將其定時時間設定為10 μs,delay子程序的作用是使其延遲time倍的10 μs。reset、writebyte、readbyte分別是初始化、讀、寫1字節(jié)的子程序。在指針型函數*getbuttonid中,將ibutton的64位序列碼保存在buttonid數組中,最后返回指向這個數組的指針。(程序見本刊網站www.mesnet.com.cn——編者注)

          結語

          為避免設備的維修不足或檢修過剩,當前電力設備管理正由定期檢修和計劃檢修管理體制,向預知性設備狀態(tài)檢修體制轉變,其根本目標是提高設備可靠性、經濟性、降低生產成本,提高設備的利用率。dallas公司推出的智能信息載體ibutton與其他類型的智能卡相比,能更好地解決電力現(xiàn)場環(huán)境比較惡劣,油污、灰塵、振動、電磁等不利因素對它的干擾問題。本文提供的ds1990a與lpc2214在嵌入式實時操作系統(tǒng)μc/osii中的接口的軟硬件設計,已在智能點檢機中推廣應用。隨著相關技術的發(fā)展,ibutton信息識別技術在工業(yè)領域的應用會越來越廣泛,其經濟作用會越來越大。



          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();