CAN介紹

由於打算去面試一家外企,做汽車電子的;所以爲了複習一下知識,特意複習這篇文章(先說明,這篇文章不是我寫的,我頂多在其中加了自己理解的部分,從師兄給的筆記裏面找到的,所以不知道作者是誰了)。。。。。。。

CAN

CAN 是Controller Area Network 的縮寫(以下稱爲CAN),是ISO 國際標準化的串行通信協議。

技術背景介紹
在當前的汽車產業中,出於對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由於這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。爲適應“減少線束的數量”、“通過多個LAN,進行大量數據的高速通信”的需要,1986 年德國電氣商博世(BOSCH)公司開發出面向汽車的CAN通信協議。此後,CAN 通過ISO11898 及ISO11519 進行了標準化,已是汽車網絡的標準協議。

現在,CAN 的高性能和可靠性已被認同,並被廣泛地應用於工業自動化、船舶、醫療設備、工業設備等方面。現場總線是當今自動化領域技術發展的熱點之一,被譽爲自動化領域的計算機局域網。它的出現爲分佈式控制系統實現各節點之間實時、可靠的數據通信提供了強有力的技術支持。

CAN 控制器根據兩根線上的電位差來判斷總線電平。總線電平分爲顯性電平和隱性電平,二者必居其一。發送方通過使總線電平發生變化,將消息發送給接收方。

CAN總線特點
①多主控制。
總線空閒時,所有單元都可發送消息,而兩個以上的單元同時開始發送消息時,根據標識符(ID,非地址)決定優先級。兩個以上的單元同時開始發送消息時,對各消息ID 的每個位進行逐個仲裁比較。仲裁獲勝(優先級最高)的單元可繼續發送消息,仲裁失利的單元則立刻停止發送而進行接收工作。 這個有點類似於單片機裏面中斷的優先級。

②系統柔軟性。
連接總線的單元,沒有類似“地址”的信息,因此,在總線上添加單元時,已連接的其他單元的軟硬件和應用層都不需要做改變

③速度快,距離遠。最高1Mbps(距離<40M),最遠可達10KM(速率<5Kbps)。

④ 具有錯誤檢測、錯誤通知和錯誤恢復功能。
所有單元都可以檢測錯誤(錯誤檢測功能),檢測出錯誤的單元會立即同時通知其他所有單元(錯誤通知功能),正在發送消息的單元一旦檢測出錯誤,會強制結束當前的發送。強制結束髮送的單元會不斷反覆地重新發送此消息直到成功發送爲止(錯誤恢復功能)。

⑤故障封閉功能。
CAN 可以判斷出錯誤的類型是總線上暫時的數據錯誤(如外部噪聲等)還是持續的數據錯誤(如單元內部故障、驅動器故障、斷線等)。由此功能,當總線上發生持續數據錯誤時,可將引起此故障的單元從總線上隔離出去。

⑥連接節點多。
CAN 總線是可同時連接多個單元的總線。可連接的單元總數理論上是沒有限制的。但實際上可連接的單元數受總線上的時間延遲及電氣負載的限制。降低通信速度,可連接的單元數增加;提高通信速度,則可連接的單元數減少。

CAN物理層特性
SO11898標準:
**加粗樣式**![
CAN 控制器根據CAN_L和CAN_H上的電位差來判斷總線電平。總線電平分爲顯性電平和隱性電平,二者必居其一。發送方通過使總線電平發生變化,將消息發送給接收方。

在這裏插入圖片描述
顯性電平對應邏輯:0
CAN_H和CAN_L之差爲2V左右。
隱性電平對應邏輯:1
CAN_H和CAN_L之差爲0V。

顯性電平具有優先權,只要有一個單元輸出顯性電平,總線上即爲顯性電平。而隱形電平則具有包容的意味,**只有所有的單元都輸出隱性電平,總線上才爲隱性電平(顯性電平比隱性電平更強)。**另外,在CAN總線的起止端都有一個120Ω的終端電阻,來做阻抗匹配,以減少回波反射。

CAN幀種類的介紹在這裏插入圖片描述
其中,數據幀和遙控幀(遠程幀)有標準格式和擴展格式兩種格式。標準格式有11 個位的標識符(ID),擴展格式有29 個位的ID 。最常用,也是最複雜的是數據幀,這裏重點介紹數據幀的格式。想詳細瞭解的話可以去我上傳過的一份資料~

數據帖的組成
在這裏插入圖片描述

①幀起始。
表示數據幀開始的段
②仲裁段。
表示該幀優先級的段
③控制段。
表示數據的字節數及保留位的段
④數據段。
數據的內容,一幀可發送0~8個字節的數據
⑤CRC段。
檢查幀的傳輸錯誤的段
⑥ACK段。
表示確認正常接收的段。
⑦幀結束。
表示數據幀結束的段。
圖中D表示顯性電平,R表示隱形電平(下同)。

數據幀的解析
幀起始:標準幀和擴展幀都是由1個位的顯性電平表示幀起始。
仲裁段:表示數據優先級的段,標準幀和擴展幀格式在本段有所區別,如圖所示:
在這裏插入圖片描述
ID:高位在前,低位在後。
基本ID,禁止高7位都爲隱性,即不能:ID=1111111XXXX。
RTR,遠程請求位。0,數據幀;1, 遠程幀;
SRR,替代遠程請求位。設置爲1(隱性電平);
IDE,標識符選擇位。0,標準標識符;1,擴展標識符;

控制段由6個位構成,表示數據段的字節數。標準幀和擴展幀的控制段稍有不同,如圖所示:
在這裏插入圖片描述
r0,r1:保留位。必須以顯現電平發送,但是接收可以是隱性電平。
DLC:數據長度碼。0~8,表示發送/接收的數據長度(字節)。
IDE,標識符選擇位。0,標準標識符;1,擴展標識符;

數據段:該段可包含0~8個字節的數據,從最高位(MSB)開始輸出。標準幀和擴展幀在這個段的格式完全一樣:

CRC段:該段用於檢查幀傳輸錯誤。由15個位的CRC順序和1個位的CRC界定符(用於分隔的位)組成,標準幀和擴展幀在這個段的格式也是相同的;CRC的值計算範圍包括:幀起始、仲裁段、控制段、數據段。
接收方以同樣的算法計算 CRC 值並進行比較,不一致時會通報錯誤。

ACK段,此段用來確認是否正常接收。由ACK槽(ACK Slot)和ACK界定符2個位組成。標準幀和擴展幀在這個段的格式也是相同的:

發送單元ACK段:發送2個隱性位。
接收單元ACK段:接收到正確消息的單元,在ACK槽發送顯性位,通知發送單元,正常接收結束。稱之爲發送ACK/返回ACK。
注意:發送 ACK 的是既不處於總線關閉態也不處於休眠態的所有接收單元中,接收到正常消息的單元(發送單元不發送ACK)。正常消息是指:不含填充錯誤、格式錯誤、CRC 錯誤的消息。

幀結束:由7個位的隱性位組成。標準幀和擴展幀在這個段格式完全一樣。

CAN總線仲裁
在總線空閒態,最先開始發送消息的單元獲得發送權。
多個單元同時開始發送時,各發送單元從仲裁段的第一位開始進行仲裁。連續輸出顯性電平最多的單元可繼續發送。
同時多個單元發送數據時,總線仲裁(優先級)過程:
在這裏插入圖片描述

規律:
1,總線空閒時,最先發送的單元獲得發送優先權,一但發送,其他單元無法搶佔。
2,如果有多個單元同時發送,則連續輸出顯性電平多的單元,具有較高優先級。 從ID開始比較,如果ID相同,還可能會比較RTR和SRR等位。

CAN位時序

位速率
由發送單元在非同步的情況下發送的每秒鐘的位數稱爲位速率。一個位一般可以分爲如下四段:
① 同步段(SS)
② 傳播時間段(PTS)
③ 相位緩衝段1(PBS1)
④ 相位緩衝段2(PBS2)
這些段又由可稱爲 Time Quantum(以下稱爲Tq)的最小時間單位構成。
1 位分爲4 個段,每個段又由若干個Tq 構成,這稱爲位時序。
位時間=1/波特率,因此,知道位時間,我們就可以知道波特率。
1 位由多少個Tq 構成、每個段又由多少個Tq 構成等,可以任意設定位時序。通過設定位時序,多個單元可同時採樣,也可任意設定採樣點。

位時序各段的作用和 Tq 數如下表:
在這裏插入圖片描述
一個位的構成
在這裏插入圖片描述
圖中採樣時間加大或減少量的最大值就是SJW,這裏的採樣點就是讀取總線電平,並將讀到的電平作爲位置的點;位置在PBS1結束處。

在STM32中: 1Mbps速率下,採用點的位置在6tq位置處,BS1=5,BS2=2
500kbps速率下,採用點的位置在8tq位置處,BS1=7,BS2=3
250kbps速率下,採用點的位置在14tq位置處,BS1=13,BS2=2
125k,100k,50k,20k,10k的採用點位置與250K相同。

看了這麼多,在這裏總結一下:

標識符(ID)
數據幀的構成
總線仲裁
位時序

STMM32 CAN簡介

STM32 bxCAN特點
① 支持CAN協議2.0A和2.0B主動模式
② 波特率最高達1Mbps
③ 支持時間觸發通信
④ 具有3個發送郵箱
⑤ 具有3級深度的2個接收FIFO
⑥ 可變的篩選器組(也稱過濾器組,最多28個)

STM32 bxCAN模式
工作模式 P426
①初始化模式(INRQ=1,SLEEP=0)
②正常模式(INRQ=0,SLEEP=0)
③睡眠模式(SLEEP=1)
測試模式
①靜默模式( LBKM=0,SILM=1 )
②環回模式( LBKM=1,SILM=0 )
③環回靜默模式(LBKM=1,SILM=1)
調試模式
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章