CAN開發 入門知識總結

2021-10-07 20:04:54 字數 3840 閱讀 6966

宣告:本文主要內容借鑑了知乎大佬–柏拉凃的回答,因為覺得他寫的太好了所以決定搬運到個人csdn部落格裡面來,方便以後學習翻閱,裡面也會加加入自己的一些理解和積累,大家對原文感興趣可以直接對他的內容-----傳送門

一、什麼是can

can匯流排技術誕生於2023年,全稱:controller area network,中文譯為「控制器區域網路」。是目前世界汽車行業主流車載網路匯流排技術,不管你是硬體工程師、軟體工程師、測試工程師還是標定工程師,都會接觸到它,是汽車行業的必備基礎知識之一。

二、can基礎知識了解

can入門書

整車具備的can網路一般有:pt can、ch can、body can、info can、diag can 5條can匯流排。詳細內容可以參考這裡-----整車can網路架構

低速容錯can:can_h或can_l僅有一根斷開時,任可正常通訊,主要使用在對可靠性要求高的場合如車身控制can網路通道。

高速can:用於更高的資料吞吐能力,主要使用在對實時性、資料傳輸量大的場合,如汽車動力系統can通道等。

(2)can幀分類

can的幀主要可分為** 資料幀、遙控幀、錯誤幀、過載幀、幀間隔** 。各種幀型別的用途如下表所示,作為資料傳遞的載體資料幀是最重要的,正常的控制命令、狀態資訊、診斷資料,重新整理資料都是通過資料幀傳遞的。

幀幀用途

資料幀用於傳送單元向接收單元傳送資料的幀

遙控幀用於接收單元向具有相同id的傳送單元請求資料的幀

錯誤幀用於當檢測出錯誤向其它單元通知錯誤的幀

過載幀用於接收單元通知其尚未做好準備的幀

幀間隔用於將資料幀及遙控幀與前面的幀分離開來的幀

(3)can資料幀的組成

要理解can,一定、絕對、千萬不能不知道資料幀的組成,特別是要關注其中的仲裁段,資料段,如下圖為標準幀(仲裁段為11bit)的幀格式組成,id取值範圍可為0x000 ~ 0x7ff;不同的廠家會將資料段進行區域劃分,如(僅做示例):

**0x00 ~ 0xff:**用於高優先順序的事件性報文傳送;

**0x100 ~ 0x4ff:**用於週期型報文的傳送;

**0x500 ~ 0x5ff:**用於網路管理報文的傳送;

**0x600 ~ 0x6ff:**用於除錯開發、標定相關報文的傳送;

**0x700 ~ 0x7ff:**用於診斷相關報文的傳送;

擴充套件幀

相對於上圖的標準資料幀,還有擴充套件can 資料幀,can 資料幀中緊隨sof 位的是32 位的仲裁字段。仲裁欄位的前11 位為29 位識別符號的最高有效位(most significant bit,msb)(基本ld) 。緊隨這11 位的是替代遠端請求(substitute remote request, srr)位,定義為隱性狀態。srr位之後是lde 位,該位為隱性狀態時表示這是擴充套件的can 幀。

三、汽車開發中can開發的主要內容

(1)can驅動開發

要實現can的收發必須先實現can驅動開發,can驅動開發主要包括:can控制器驅動開發和can收發器驅動,較為經典的nxp的tja104x系列can收發器,大部分nxp mcu整合的flexcan控制器。這部分開發更多的是閱讀對應型號的cpu,控制器的晶元手冊,結合示例**,一句一句摳,一行一行敲,再配合示波器(邏輯分析儀),各類can工具進行反覆摸索。

can收發器驅動的開發中最最關鍵的一部分工作就是了解收發器不同工作模式的切換方法,如下圖tja1043t收發器狀態切換示意圖,收發器工作時主要分為normal mode,stadby mode,go-to-sleep mode,sleep mode。

(2)can通訊矩陣

特別注意:can通訊矩陣的定義會有摩托羅拉格式和英特爾格式的區別,兩者的區別-----傳送門

(3)基於can的車輛診斷

車輛診斷:在不解體(或僅卸下個別零件)的條件下,確定汽車技術狀況,查明故障部位及原因的檢查。包括汽車發動機的檢測與診斷,汽車底盤的檢測與診斷,汽車車身及附件的檢測與診斷以及汽車排氣汙染物與雜訊的檢測等內容。can就能很好的滿足上述要求。

汽車診斷的開發是汽車電子電器開發中非常重要的一環,對於can診斷最為常見的是uds。uds協議即iso14229,是unified diagnostic services,統一診斷服務,是診斷服務的規範化標準,在汽車診斷方面廣泛使用,如圖,為滿足診斷需求,uds中定義了一系列的服務。

當然,為了確保診斷報文的穩定傳輸,還有iso 15765協議是一種can匯流排上的診斷協議。

其中:iso 15765-1包括物理層和資料鏈路層,

iso 15765-2對網路層進行說明,

iso 15765-3則是規定到應用層的具體服務。

(4)基於can的重新整理

由於設計缺陷或者功能公升級,車載控制器在生命週期內會有軟體重新整理的需求,作為控制器與外界幾乎唯一的資料通道,車載控制器的軟體重新整理通常由can通道實現,基於can的重新整理又與基於can的診斷息息相關。

但現在的整車ota架構,基本不依靠can來進行重新整理了

(5)can網路管理

主要分為osek網路管理,autosar網路管理

四、autosar

autosar在汽車電子行業的知名度應該不會亞於「六神」在中國香水界的地位。簡單的講autosar是由全球汽車製造商(寶馬、戴姆勒、福特…)、部件**商及其他電子(大陸、博世…)、半導體和軟體系統公司聯合建立,各成員保持開發合作夥伴關係。自2023年起,各夥伴公司攜手合作,致力於為****開發乙個開放的、標準化的軟體架構。

can作為汽車電子領域最為重要的通訊形式,autosar怎麼可以不對can進行定義規範,可以說autosar的架構思想對現今的軟體架構產生了重要影響,如圖為初步整理的的autosar中關於can的相關模組及架構,可以清楚的看到其中由下至上系統的定義出了can驅動、介面層、傳輸層、can診斷、can網路管理等。

不過,隨著汽車智慧型化程度的不斷推進,網際網路巨頭公司正在將android和ios系統逐步地往汽車上遷移,而且市面上已經有很多新上市汽車搭載了智慧型作業系統,汽車分散的ecu架構也往域控制器架構不斷推進,以前乙個汽車裡面上百個ecu,在不久的將來(5-10年)將變成幾十個甚至幾個,到了這個階段autosar還有市場嗎?

面臨同樣困境當然還有我們的can匯流排技術,雖然主機廠門把can匯流排宣稱地是安全地匯流排技術,但我認為這是一種既得利益者人為設定的壁壘而已,can匯流排在汽車智慧型化時代劣勢已經越來越凸顯了,行業急需一種更安全更快速,更具未來意義的匯流排技術,而車載乙太網可以說是最有競爭力的候選技術-------傳送門----有量產汽車不用can匯流排而用乙太網的嗎?

CAN知識集合

1.隱性和顯性位 顯性數值表示邏輯0,隱性數值表示邏輯1 can匯流排為隱性 邏輯1 時,can h和can l的電平都為2.5v 電位差為0v can匯流排為顯性 邏輯0 時,can h和can l電平分別為3.5v和1.5v 電位差為2.0v 2.o.s.i參考模型 應用層1.應用功能介面 2....

CAN 匯流排知識整理(一)CAN特點

1.can 是 controller area network 由1986年德國博世公司開發出,後通過iso11898 iso 11519標準。2.主要特徵有安全性 舒適性 方便性 低公害 低成本等特點。車載網路圖形 匯流排 連線圖 3.can特點 1 多主控多個單元在匯流排空閒都可以傳送訊息。在匯...

python入門知識總結

python的基礎由潛入深的理解,具體詳解內容來自 list和tuple的最大區別是 list是可變型別,tuple是不可變型別 list和tuple都有切片操作,l michael sarah tracy bob jack 取前三個元素l 0 3 l 3 取最後乙個l 1 前四個,每兩個取乙個l ...