久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > STM32之CAN---錯誤管理分析

STM32之CAN---錯誤管理分析

作者: 時間:2016-11-24 來源:網絡 收藏

1 幾個重要概念

根據ISO11898有如下幾個重要的與CAN相關的定義:

本文引用地址:http://cqxgywz.com/article/201611/320936.htm
  • 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節點可以區分常規錯誤和永久故障。有故障的發送節點將切換到離線狀態。離線意味著在邏輯上與總線斷開,既不能發送也不能接收。

  • Error-active(主動錯誤)

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 .

處于主動錯誤狀態的節點能正常參與總線通信的收發和當檢測到錯誤時將發送錯誤標志,錯誤標志由6個連續的顯示位組成(這種連續的6個顯示位與常規的填充位和其它幀固定格式不相同,正因為如此,硬件才容易區別)。

  • Error-passive(被動錯誤)

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 .

處于被動錯誤狀態的節點不能發送主動錯誤標志。它能參與正常通信,但當檢測到錯誤時發送的是被動錯誤標志。被動錯誤標志由6個連續的隱性位組成。當發送結束后,處于被動錯誤狀態的節點在下一次再次發送時之前需要等待一些額外時間。

  • Bus-off(離線)

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.

由于錯誤界定規則,一個節點可能處于離線狀態,當處于此狀態時,這個節點既不發送也不接收。至于何時離線恢復取決于何時用戶請求。

2 ISO11898中錯誤界定的規則

2.1 描述

當涉及到錯誤界定,一個節點必須處于下述三個錯誤狀態中的其中一個,至于具體是哪種錯誤狀態取決于節點的錯誤計數值:

  • 主動錯誤狀態(Error-active)
  • 被動錯誤狀態(Error-passive)
  • 離線狀態(Bus-off)

2.2 錯誤計數

錯誤計數器當檢測下下述事件時將修改錯誤計數值:

  • 當一接收節點檢測到一個錯誤時,錯誤計數器將加1.有一種情況可以排外,即當檢測到發送一主動錯誤標志或者重載標志時出現一位錯誤時除外。
  • 當一接收節點發送一錯誤標志時,檢測到首位為顯性位時,錯誤計數器加8.
  • 當一發送節后發送錯誤標志時,錯誤計數器加8,這時有兩種情況除外:1:當這個發送節點處于主動錯誤狀態下,且檢測到由于ACK域未有顯性位而造成的ACK錯誤,但是在發送時未檢測到被動錯誤標志;2:當發送節點發送一錯誤標志時,在仲裁時檢測到填充位錯誤(這些填充位原來應該是隱性,但檢測結果為顯性)。以上兩種異常錯誤計數值保留原值不變。
  • 當發送節點發送一主動錯誤標志或重載標志時,檢測到位錯誤時,錯誤計數器加8.
  • 當接收節點婁送一主動錯誤標志或重載標志時,檢測到位錯誤時,錯誤計數器加8.
  • 任何節點在發送主動錯誤標志,被動錯誤標志,或重載標志時都應都忍受連續7個顯示位。當檢測到連接14個顯示位,或者被動錯誤標志后緊跟著連接8個顯示位,或者8個連續顯性位后緊跟著被動錯誤標志時,所有發送節點發送錯誤計數器加8,所有接收節點接收錯誤計數器加8.
  • 發成功發送一幀報文后,發送計數器應減1,除非當前已經為0.
  • 當成功接收一幀報文后,如果當前接收計數器的值大于1且小于127,則接收計數器減1;如果接收計數器的值為0,則保持為0;如果在于127,則接收計數器的值應設置為119~127之間的值。

2.3 主動錯誤狀態和被動錯誤狀態之間的轉變

當發送錯誤計數器或者接收錯誤計數器的值大于127時,該節點變成被動錯誤狀態。

當節點從主動錯誤狀態變為被動錯誤狀態時,節點將發送一主動錯誤標志。

當被動錯誤節點的發送錯誤計數器和接收錯誤計數器的值都小于且等于127時,將再次變為主動錯誤狀態。

2.4 離線管理

如果一個節點的發送錯誤計數器的值超過255時,那么此節點將會處于離線狀態。處于離線狀態的節點不會對總線產生任何影響,它將不會發送消息幀,ACK,錯誤幀,過載幀等,至于會不會接收總線上的數據,取消于此節點的實現。

當一個處于離線狀態下的節點接收到128次連接11位隱性位時,將變成主動錯誤狀態,且同時設置發送錯誤計數器和接收錯誤計數器為0.

注:具體實現可能并不會與上述所描述的一模一樣,比如離線還原,在STM32是有一開關來設置是否會自動還原,如果此功能禁止了,那么當處于離線狀態下的節點接收到128次連接11連隱性位時也不會不還原成主動錯誤狀態。

圖1


上一頁 1 2 下一頁

關鍵詞: STM32CAN錯誤管

評論


技術專區

關閉