24小時聯系電話:18217114652、13661815404
中文
技術專題
串行通信協議 CAN 和 LIN
串行通信協議 CAN 和 LIN
我們將一起研究流行的 CAN 和 LIN 協議。本文是串行通信協議系列的一部分。我們希望在下次您發現自己將串行通信總線作為設計的一部分時,該資源將被證明是無價的。我們旨在幫助您選擇適合您情況的最佳選擇。
CAN總線
CAN代表Controller Area Network,是各種電子設備使用的通信協議。CAN 通常用于提供車輛中設備之間的通信,例如發動機管理系統、主動懸架、ABS、換檔控制、照明控制、空調、安全氣囊、中控鎖系統以及車輛中的其他系統。
CAN 是一種高完整性串行數據通信總線,非常適合實時應用。該總線可以以高達 1 Mbps 的數據速率運行,并具有出色的錯誤檢測和糾正能力。CAN 由 Bosh 開發,主要用于汽車應用,但現在也用于許多工業自動化和控制應用。
CAN 是一種多主、基于消息的協議。這意味著所有 CAN 設備都可以傳輸數據,并且多個 CAN 設備可以同時請求使用總線。CAN 網絡沒有尋址系統,而是使用優先級消息系統。所有消息都分為一系列優先級。
目前使用的 CAN 總線有多種版本,其中包括:
CAN 2.0A – 使用 11 位消息標識符
CAN 2.0B - 使用 29 位消息標識符
CAN FD - 使用靈活的數據速率
在CAN 總線中,發送設備向所有 CAN 節點發送消息,每個節點決定如何對接收到的消息做出反應。此外,如果同時發送多條消息,節點將確定每條消息的優先級。
簡化的消息流程圖
CAN 總線有三種不同的速度類型,它們是:
低速 - 125 kbps 數據速率和 500 米最大總線長度
高速(或高速)- 1 Mbps 數據速率和 40 米最大總線長度
靈活的數據速率 - 15 Mbps 數據速率和 10 米最大總線長度
CAN 總線使用差分傳輸線,因此不需要接地連接。差分線路的每一端都使用 120 Ω 端接電阻器,如下面的電路圖所示。
末端為 120 Ω 終端電阻的簡單 CAN 接線示例
差分對傳輸線更加穩健并且不受環境干擾和噪聲的影響。這是因為兩條信號線保持非常接近,所以當電磁干擾影響一條傳輸線時,它也會同樣影響另一條傳輸線。因為差分對中沒有參考地,所以 CAN 總線電壓是根據成對差分傳輸線之間的差異來測量的。
影響兩條差分對線的電磁干擾
在CAN差分傳輸線中,顯性邏輯電平為低或0,而隱性邏輯電平為高或1。
以下是標準 11 位消息的完整 CAN 協議幀:
CAN數據報文幀
消息以起始幀開始,指示消息的開始。通常,CAN 總線會處于空閑狀態(1),因此為了識別報文的開始,發送顯性 0 信號,它勝過隱性 1。
其后是仲裁字段,指示數據的優先級。發送器在開始發送消息時識別消息優先級。如果多個發送器同時發送消息,當檢測到它們正在發送隱性邏輯電平 1 但總線上的實際仲裁字段位是顯性電平 0 時,它們會檢測到這一點。這告訴受影響的發送器延遲發送,因為它不是最高優先級。這一直持續到只剩下一個發送器來發送它的消息。發送此消息后,其他較低優先級的發送器將重新啟動該過程。如此重復,直到所有消息按優先級順序發送完畢,如下所示:
CAN報文優先競爭
下一位是遠程傳輸請求。該位顯示消息幀的格式??梢允?span>Data Frame,發送端發送信息時使用,設置為顯性邏輯0表示?;蛘?,也可以是Remote Frame,發送端請求信息,設置為隱性表示邏輯 1。
下一位是 ID 擴展名。如果將 ID 擴展設置為顯性邏輯 0,則仲裁字段的長度將是標準的 11 位,對于 2048 種不同的標識來說足夠了。如果該位設置為隱性級別 1,則仲裁字段的長度將擴展 29 位,這對于 536870912 種不同的標識來說已經足夠了。ID 擴展位之后的仲裁字段的附加 18 位。
下一位保留,通常設置為顯性邏輯電平 0,但設置為隱性邏輯電平 1 將不起作用。
接下來的四位是數據長度代碼位,它顯示數據字段中有多少位。數據長度可以從 1 到 8 個字節不等,相當于 8 到 64 位。
接下來的 15 位是用于錯誤檢測的CRC(循環冗余校驗)字段。
下一位是 CRC 定界符,它必須設置為隱性邏輯 1。
下一位是確認槽位。發送器將此設置為隱性邏輯電平 1。如果成功接收到消息,接收器通過覆蓋該位并將其分配給顯性邏輯電平 0 來指示這一點。
下一位是確認定界符,它必須設置為隱性邏輯 1。
最后七位是幀結束指示,它標識消息已經結束。
標準 OBD2 汽車連接器包括用于診斷或軟件控制目的的 CAN 總線差分對引腳:
LIN總線
LIN 代表本地互連網絡,是一種主要用于類似于 CAN 的車輛的電子通信協議。LIN 協議的出現是因為當汽車中的每個設備都需要通過總線進行通信時,使用 CAN 協議的總線變得過于昂貴。正因為如此,歐洲汽車制造商開始使用不同的串行通信系統,這導致了兼容性問題。
在火山汽車集團和摩托羅拉的幫助下,LIN 由五家汽車制造商創建:寶馬、大眾集團、奧迪、沃爾沃汽車和梅賽德斯-奔馳。
LIN 通信網絡是一種主從安排。通常,LIN 總線由 16 個節點(1 個主站和 15 個從站)組成。所有 LIN 總線消息均由單個主設備發起。同時,只有一個從站可以隨時響應使用主站發送的標識符選擇的消息。
使用可變長度的固定格式消息在連接到 LIN 總線的設備之間傳輸數據。主設備發送一個中斷信號,然后是同步和標識符字段以啟動數據傳輸。從設備可以通過發送包含 2、4 或 8 個字節的數據加上 3 個字節的控制信息的數據幀進行回復。
LIN 可用作連接到 CAN 總線的子總線。CAN 總線向其節點之一發送信號,該節點本身可以是 LIN 主機。當 LIN 物理層發送器接收到消息時,它會使用 CAN 電池電壓電平(通常為 12 V)將其在邏輯電平上轉換為 LIN 協議。LIN 發射器還包括一個限流整形驅動器,可減少電磁輻射。
LIN 和 CAN 總線集成
LIN 從接收器然后將來自 LIN 總線的高電池電平電壓數據轉換為可以發送到微控制器的低電壓電平邏輯信號。
LIN 作為串行廣播系統運行,使用帶接地參考的單線總線。與 CAN 或其他串行通信協議 (<20 kbps) 相比,典型的 LIN 總線速度相對較低。然而,實現 LIN 總線的成本顯著降低,使其成為批量生產的理想選擇。它主要用于不太重要的非安全功能。LIN 常用于控制車窗、空調、雨刷器等。LIN 總線的最大長度為 40 米。
在 LIN 總線上,信號可以是顯性(邏輯電平低或 0)或隱性(邏輯電平高或 1)。
LIN 協議使用遵循以下六種幀類型之一的消息幀結構:
無條件幀——這是所有訂閱者(從站)接收的消息幀(假設沒有檢測到錯誤)
事件觸發幀 - 此消息幀提高了 LIN 集群(LIN 集群 - 一個 LIN 數據總線)的響應能力,而無需使用過多的總線帶寬
零星幀 - 當需要防止與其他消息沖突時傳輸此消息幀
診斷幀 - 此消息幀攜帶診斷或配置數據,并始終包含八位
用戶自定義幀——這個消息幀可以攜帶任何類型的信息
保留幀 – 此消息幀保留用于確認 LIN 網絡,不應在 LIN 2.0 中使用
LIN 總線數據幀示例
LIN 總線因其標準協議、簡單性和低成本在過去十年中變得非常流行,到 2020 年將有超過 6 億個 LIN 節點安裝在汽車中。
LIN 現在還用于非汽車行業的應用,例如家用電器和工業自動化。
本文研究了流行的 CAN 和 LIN 協議的一些特性,并討論了它們的一些優點和實現細節。