1.CAN協議的定義:網絡
CAN總線使用串行數據傳輸方式,當can總線上的一個節點站發送數據,它以報文形式廣播給網絡中全部的節點。對於每隔節點來講,不管數據是否是發給本身的,都對其進行接受。dom
2.CAN 錯誤的種類:3d
1.)主動錯誤:(主動報錯)code
只要發現錯誤就會主動的發出「出錯標識」(PS:六個顯性的同性位,不知足can協議最多5個連續的同性位)orm
2.)被動錯誤:(被動報錯)blog
若是檢查到錯誤,只能等待主動錯誤發現,才能報錯,而後競爭總線,不然處於離線狀態it
3.)離線:(bus_off)ast
離線的節點不會對總線上的其餘節點產生任何影響class
3.使用CAN時錯誤處理機制:請求
Bits 31:24 REC[7:0]: Receive error counter
Bits 23:16 TEC[7:0]: Least significant byte of the 9-bit transmit error counter
Bits 15:7 Reserved, must be kept at reset value.
Bits 6:4 LEC[2:0]: Last error code
000: No Error
001: Stuff Error
010: Form Error
011: Acknowledgment Error
100: Bit recessive Error
101: Bit dominant Error
110: CRC Error
111: Set by software
Bit 3 Reserved, must be kept at reset value.
Bit 2 BOFF: Bus-off flag
Bit 1 EPVF: Error passive flag
Bit 0 EWGF: Error warning flag
使用stm32f103時,將ABOM位置1 ,CAN進入離線狀態時,會自動回覆(當一個處於離線狀態下的節點接收到128次鏈接11位隱性位時,將變成主動錯誤狀態,且同時設置發送錯誤計數器和接收錯誤計數器爲0)
檢測BOFF,EPVF EWGF位,直接復位
CAN : APB1 外設
數據幀的基本格式
2.仲裁段
主動錯誤類型 發送6bit 0 而後等待連續的8bit 1
主動錯誤幀發送後,出現連續的6bit相同位,其餘節點會檢測出位填充錯誤,這樣就能夠通知其餘節點總線出錯了,當全部節點都發送完錯誤標誌,總線回覆1,能夠重新開始數據傳輸
被動錯誤類型 發送6bit 1而後等待連續的8bit 1
被動錯誤幀發送,別人時沒法接受到的,等待別的單元發送錯誤幀
與數據幀相比,無 數據場
用於接收單元向具備相同 ID 的發送單元請求數據的幀。