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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于WINCE的CAN驅動的研究與實現(xiàn)

          基于WINCE的CAN驅動的研究與實現(xiàn)

          作者: 時間:2012-03-24 來源:網絡 收藏

          1 引言

          ,全稱為“Controller Area Network”,即控制器局域網,是國際上應用最廣泛的現(xiàn)場總線之一。最初,被設計作為汽車環(huán)境中的微控制器通訊,在車載電子控制裝置ECU之間交換信息,形成汽車電子控制網絡。比如:發(fā)動機管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入控制裝置。

          一個由CAN 總線構成的單一網絡中,理論上可以掛接無數個節(jié)點。實際應用中,節(jié)點數目受網絡硬件的電氣特性所限制。例如,當使用Philips P82C250作為CAN收發(fā)器時,同一網絡中允許掛接110個節(jié)點。CAN 可提供高達1Mbit/s的數據傳輸速率,這使實時控制變得非常容易。另外,硬件的錯誤檢查特性也增強了CAN的抗電磁干擾能力。

          CAN具有十分優(yōu)越的特點,使人們樂于選擇。這些特性包括:

          (1)低成本,極高的總線利用率。

          (2)很遠的數據傳輸距離(長達10Km),高速的數據傳輸速率(高達1Mbit/s)。

          (3)可靠的錯誤處理和檢錯機制;發(fā)送的信息遭到破壞后,可自動重發(fā)。

          (4)節(jié)點在錯誤嚴重的情況下具有自動退出總線的功能。

          因此,實現(xiàn)符合工業(yè)標準的嵌入式CAN總線驅動具有非常重大的現(xiàn)實意義和研究價值。

          2 CAN總線協(xié)議

          CAN總線協(xié)議棧,按下圖分層為:

          1、CAN卡內已經實現(xiàn)了CAN協(xié)議層。對于具體的某個智能模塊設備,雖然通訊協(xié)議層都采用CAN協(xié)議層,但應用層還不一致,所以還需要對具體的設備進行特定的驅動開發(fā)。

          2、CAN協(xié)議層并不能保證數據可靠的傳輸,所以對具體的設備進行驅動開發(fā)時要注意對協(xié)議數據進行檢查。

          3、應用CAN總線,對應也分為3層,對應關系如上圖所示。子設備協(xié)議完成應用層協(xié)議,父設備完成CAN協(xié)議層。

          4、從上圖可以看出,父設備完成CAN協(xié)議層,封裝了CAN控制器(MCP2515、SJA1000),并提供上層子設備協(xié)議層接口。

          3 應用模式

          第一種,主從模式:


          在此模式中,只有1個主機(TPC)會輪詢采集數據,或發(fā)送設備命令;其它設備(CAN設備)不會主動發(fā)送數據,只是被動響應。此模式應用比較多,但對子設備有要求:子設備(CAN設備)不會主動發(fā)送數據。

          第二種,分布模式:上面的主從模式對子設備造成了限制,網絡如果更復雜限制就會更多。本來CAN總線網就是分布實時控制網絡,所以就應該設計成分布模式。該方式對子設備沒有要求,但對子設備(CAN設備)開發(fā)驅動有所要求,要求子設備按自己的協(xié)議做,不能假設任何情況。這要求開發(fā)驅動的人員深入了解CAN 總線協(xié)議的數據幀和遠程幀。


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(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); })();