1. 程式人生 > >關於can 出錯重連

關於can 出錯重連

1.CAN協議的定義:

     CAN匯流排使用序列資料傳輸方式,當can總線上的一個節點站傳送資料,它以報文形式廣播給網路中所有的節點。對於每隔節點來說,無論資料是不是發給自己的,都對其進行接受。

2.CAN 錯誤的種類:

1.)主動錯誤:(主動報錯)

       只要發現錯誤就會主動的發出“出錯標識”(PS:六個顯性的同性位,不滿足can協議最多5個連續的同性位)

2.)被動錯誤:(被動報錯)

     如果檢查到錯誤,只能等待主動錯誤發現,才能報錯,然後競爭匯流排,否則處於離線狀態

3.)離線:(bus_off)

    離線的節點不會對總線上的其他節點產生任何影響

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