CAN 數據幀,遠程幀,錯誤幀,以及出錯重連

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 外設

3.數據幀

數據幀的基本格式

 

  • 幀起始:數據幀的開始。1bit 0 顯性位 (總線空閒時的電平位1)
  • 仲裁場:
  • 控制場:
  • 數據場
  • CRC場
  • ACK場
  • 幀結束:數據幀的結束。7bit 1 隱形位  

2.仲裁段

 

4.錯誤幀

主動錯誤類型 發送6bit 0 而後等待連續的8bit 1

                主動錯誤幀發送後,出現連續的6bit相同位,其餘節點會檢測出位填充錯誤,這樣就能夠通知其餘節點總線出錯了,當全部節點都發送完錯誤標誌,總線回覆1,能夠重新開始數據傳輸

           

被動錯誤類型 發送6bit 1而後等待連續的8bit 1

             被動錯誤幀發送,別人時沒法接受到的,等待別的單元發送錯誤幀

5.過載幀

   和主動錯誤幀同樣

6.遠程幀 

與數據幀相比,無 數據場

用於接收單元向具備相同 ID 的發送單元請求數據的幀。