STM32之CAN---錯誤管理分析
1 幾個(gè)重要概念
- Fault confinement(錯誤界定)
CAN nodes shall be able to distinguish short disturbances from permanent failures. Defective transmitting nodes shall be switched off. Switched off means a node is logically disconnected from the bus, so that it can neither send nor receive any frames.
CAN節點(diǎn)可以區分常規錯誤和永久故障。有故障的發(fā)送節點(diǎn)將切換到離線(xiàn)狀態(tài)。離線(xiàn)意味著(zhù)在邏輯上與總線(xiàn)斷開(kāi),既不能發(fā)送也不能接收。
- Error-active(主動(dòng)錯誤)
An error-active node shall normally take part in bus communication and send an active error flag when an error has been detected. The active error flag shall consist of six (6) consecutive dominant bits and shall violate the rule of bit stuffing and all fixed formats appearing in a regular frame .
處于主動(dòng)錯誤狀態(tài)的節點(diǎn)能正常參與總線(xiàn)通信的收發(fā)和當檢測到錯誤時(shí)將發(fā)送錯誤標志,錯誤標志由6個(gè)連續的顯示位組成(這種連續的6個(gè)顯示位與常規的填充位和其它幀固定格式不相同,正因為如此,硬件才容易區別)。
- Error-passive(被動(dòng)錯誤)
An error-passive node shall not send an active error flag. It takes part in bus communication, but when an error has been detected a passive error flag shall be sent. The passive error flag shall consist of six (6) consecutive recessive bits. After transmission, an error-passive node shall wait some additional time before initiating a further transmission .
處于被動(dòng)錯誤狀態(tài)的節點(diǎn)不能發(fā)送主動(dòng)錯誤標志。它能參與正常通信,但當檢測到錯誤時(shí)發(fā)送的是被動(dòng)錯誤標志。被動(dòng)錯誤標志由6個(gè)連續的隱性位組成。當發(fā)送結束后,處于被動(dòng)錯誤狀態(tài)的節點(diǎn)在下一次再次發(fā)送時(shí)之前需要等待一些額外時(shí)間。
- Bus-off(離線(xiàn))
A node shall be in the bus-off state when it is switched off from the bus due to a request of FCE. In the bus-off state, a node shall neither send nor receive any frames. A node shall start the recovery from bus-off state only upon a user request.
由于錯誤界定規則,一個(gè)節點(diǎn)可能處于離線(xiàn)狀態(tài),當處于此狀態(tài)時(shí),這個(gè)節點(diǎn)既不發(fā)送也不接收。至于何時(shí)離線(xiàn)恢復取決于何時(shí)用戶(hù)請求。
2 ISO11898中錯誤界定的規則
2.1 描述
當涉及到錯誤界定,一個(gè)節點(diǎn)必須處于下述三個(gè)錯誤狀態(tài)中的其中一個(gè),至于具體是哪種錯誤狀態(tài)取決于節點(diǎn)的錯誤計數值:
- 主動(dòng)錯誤狀態(tài)(Error-active)
- 被動(dòng)錯誤狀態(tài)(Error-passive)
- 離線(xiàn)狀態(tài)(Bus-off)
2.2 錯誤計數
錯誤計數器當檢測下下述事件時(shí)將修改錯誤計數值:
- 當一接收節點(diǎn)檢測到一個(gè)錯誤時(shí),錯誤計數器將加1.有一種情況可以排外,即當檢測到發(fā)送一主動(dòng)錯誤標志或者重載標志時(shí)出現一位錯誤時(shí)除外。
- 當一接收節點(diǎn)發(fā)送一錯誤標志時(shí),檢測到首位為顯性位時(shí),錯誤計數器加8.
- 當一發(fā)送節后發(fā)送錯誤標志時(shí),錯誤計數器加8,這時(shí)有兩種情況除外:1:當這個(gè)發(fā)送節點(diǎn)處于主動(dòng)錯誤狀態(tài)下,且檢測到由于A(yíng)CK域未有顯性位而造成的ACK錯誤,但是在發(fā)送時(shí)未檢測到被動(dòng)錯誤標志;2:當發(fā)送節點(diǎn)發(fā)送一錯誤標志時(shí),在仲裁時(shí)檢測到填充位錯誤(這些填充位原來(lái)應該是隱性,但檢測結果為顯性)。以上兩種異常錯誤計數值保留原值不變。
- 當發(fā)送節點(diǎn)發(fā)送一主動(dòng)錯誤標志或重載標志時(shí),檢測到位錯誤時(shí),錯誤計數器加8.
- 當接收節點(diǎn)婁送一主動(dòng)錯誤標志或重載標志時(shí),檢測到位錯誤時(shí),錯誤計數器加8.
- 任何節點(diǎn)在發(fā)送主動(dòng)錯誤標志,被動(dòng)錯誤標志,或重載標志時(shí)都應都忍受連續7個(gè)顯示位。當檢測到連接14個(gè)顯示位,或者被動(dòng)錯誤標志后緊跟著(zhù)連接8個(gè)顯示位,或者8個(gè)連續顯性位后緊跟著(zhù)被動(dòng)錯誤標志時(shí),所有發(fā)送節點(diǎn)發(fā)送錯誤計數器加8,所有接收節點(diǎn)接收錯誤計數器加8.
- 發(fā)成功發(fā)送一幀報文后,發(fā)送計數器應減1,除非當前已經(jīng)為0.
- 當成功接收一幀報文后,如果當前接收計數器的值大于1且小于127,則接收計數器減1;如果接收計數器的值為0,則保持為0;如果在于127,則接收計數器的值應設置為119~127之間的值。
2.3 主動(dòng)錯誤狀態(tài)和被動(dòng)錯誤狀態(tài)之間的轉變
當發(fā)送錯誤計數器或者接收錯誤計數器的值大于127時(shí),該節點(diǎn)變成被動(dòng)錯誤狀態(tài)。
當節點(diǎn)從主動(dòng)錯誤狀態(tài)變?yōu)楸粍?dòng)錯誤狀態(tài)時(shí),節點(diǎn)將發(fā)送一主動(dòng)錯誤標志。
當被動(dòng)錯誤節點(diǎn)的發(fā)送錯誤計數器和接收錯誤計數器的值都小于且等于127時(shí),將再次變?yōu)橹鲃?dòng)錯誤狀態(tài)。
2.4 離線(xiàn)管理
如果一個(gè)節點(diǎn)的發(fā)送錯誤計數器的值超過(guò)255時(shí),那么此節點(diǎn)將會(huì )處于離線(xiàn)狀態(tài)。處于離線(xiàn)狀態(tài)的節點(diǎn)不會(huì )對總線(xiàn)產(chǎn)生任何影響,它將不會(huì )發(fā)送消息幀,ACK,錯誤幀,過(guò)載幀等,至于會(huì )不會(huì )接收總線(xiàn)上的數據,取消于此節點(diǎn)的實(shí)現。
當一個(gè)處于離線(xiàn)狀態(tài)下的節點(diǎn)接收到128次連接11位隱性位時(shí),將變成主動(dòng)錯誤狀態(tài),且同時(shí)設置發(fā)送錯誤計數器和接收錯誤計數器為0.
注:具體實(shí)現可能并不會(huì )與上述所描述的一模一樣,比如離線(xiàn)還原,在STM32是有一開(kāi)關(guān)來(lái)設置是否會(huì )自動(dòng)還原,如果此功能禁止了,那么當處于離線(xiàn)狀態(tài)下的節點(diǎn)接收到128次連接11連隱性位時(shí)也不會(huì )不還原成主動(dòng)錯誤狀態(tài)。
圖1
相關(guān)推薦
技術(shù)專(zhuān)區
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線(xiàn)
- 開(kāi)關(guān)電源
- 單片機
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機控制
- 藍牙
- PLC
- PWM
- 汽車(chē)電子
- 轉換器
- 電源管理
- 信號放大器
評論