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