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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 入門知識分享之CAN總線

          入門知識分享之CAN總線

          作者: 時間:2013-12-06 來源:網絡 收藏

            一、的概述

            CAN,全稱為“Controller Area Network”,即控制器局域網,是國際上應用最廣泛的現場總線之一。最初,CAN被設計作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網絡。比如:發(fā)動機管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入CAN控制裝置。由于這些系統(tǒng)之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。一個由CAN 總線構成的單一網絡中,理論上可以掛接無數個節(jié)點。實際應用中,節(jié)點數目受網絡硬件的電氣特性所限制。為適應“減少線束的數量”、“通過多個LAN,進行大量數據的高速通信”的需要,1986 年德國電氣商博世公司開發(fā)出面向汽車的CAN 通信協(xié)議。此后,CAN 通過ISO11898 及ISO11519 進行了標準化,在歐洲已是汽車網絡的標準協(xié)議。

            二、的分層結構

            CAN遵從OSI模型,按照OSI基準模型,CAN結構劃分為兩層:數據鏈路層和物理層,如下圖所示。

            

            1.按照IEEE 802.2和802.3 標準,數據鏈路層又劃分為:

            1)邏輯鏈路控制(LLC-Logic Link Control)。

            2)媒體訪問控制(MAC-Medium Access Control)。

            2.物理層又劃分為:

            1)物理信令(PLS-Physical Signalling)。

            2)物理媒體附屬裝置(PMA-Physical Medium Attachment)。

            3)媒體相關接口(MDI-Medium Dependent Interface)。

            MAC子層運行借助稱之為“故障界定實體(FCE)”的管理實體進行監(jiān)控。故障界定是使判別短暫干擾和永久性故障成為可能的一種自檢機制。物理層可借助檢測和管理物理媒體故障實體進行監(jiān)控(例如總線短路或中斷,總線故障管理)。LLC和MAC兩個同等的協(xié)議實體通過交換幀或協(xié)議數據單元(PDU-Protocol Data Unit)和(N)-用戶數據組成,為傳送一個NPDU,(N-1)層實體必須通過(N-1)服務訪問點(SAP-Service Access Point)[(N-1)-SAP].NPDU借助于(N-1)層服務數據單元(SDU-Service Data U nit)[(N-1)-SDU]傳至(N-1)層,其服務功能允許NPDU的傳送。SDU是接口數據,對其識別預先在(N)層實體間進行,亦即,它表示邏輯數據單元由服務進行傳送。CAN協(xié)議的數據鏈層既不提供分配一個SDU至多個PDU,也不提供分配多個SDU至一個PDU的方法,亦即,NPDU直接由相應的NSDU和層指定控制信息N-PCI構成。


          上一頁 1 2 下一頁

          評論


          相關推薦

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