<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM32之CAN---錯誤管理分析

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

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏

          1 幾個重要概念

          根據(jù)ISO11898有如下幾個重要的與CAN相關(guān)的定義:

          本文引用地址:http://www.ex-cimer.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節(jié)點可以區(qū)分常規(guī)錯誤和永久故障。有故障的發(fā)送節(jié)點將切換到離線狀態(tài)。離線意味著在邏輯上與總線斷開,既不能發(fā)送也不能接收。

          • 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 .

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

          • 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 .

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

          • 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.

          由于錯誤界定規(guī)則,一個節(jié)點可能處于離線狀態(tài),當(dāng)處于此狀態(tài)時,這個節(jié)點既不發(fā)送也不接收。至于何時離線恢復(fù)取決于何時用戶請求。

          2 ISO11898中錯誤界定的規(guī)則

          2.1 描述

          當(dāng)涉及到錯誤界定,一個節(jié)點必須處于下述三個錯誤狀態(tài)中的其中一個,至于具體是哪種錯誤狀態(tài)取決于節(jié)點的錯誤計數(shù)值:

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

          2.2 錯誤計數(shù)

          錯誤計數(shù)器當(dāng)檢測下下述事件時將修改錯誤計數(shù)值:

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

          2.3 主動錯誤狀態(tài)和被動錯誤狀態(tài)之間的轉(zhuǎn)變

          當(dāng)發(fā)送錯誤計數(shù)器或者接收錯誤計數(shù)器的值大于127時,該節(jié)點變成被動錯誤狀態(tài)。

          當(dāng)節(jié)點從主動錯誤狀態(tài)變?yōu)楸粍渝e誤狀態(tài)時,節(jié)點將發(fā)送一主動錯誤標(biāo)志。

          當(dāng)被動錯誤節(jié)點的發(fā)送錯誤計數(shù)器和接收錯誤計數(shù)器的值都小于且等于127時,將再次變?yōu)橹鲃渝e誤狀態(tài)。

          2.4 離線管理

          如果一個節(jié)點的發(fā)送錯誤計數(shù)器的值超過255時,那么此節(jié)點將會處于離線狀態(tài)。處于離線狀態(tài)的節(jié)點不會對總線產(chǎn)生任何影響,它將不會發(fā)送消息幀,ACK,錯誤幀,過載幀等,至于會不會接收總線上的數(shù)據(jù),取消于此節(jié)點的實現(xiàn)。

          當(dāng)一個處于離線狀態(tài)下的節(jié)點接收到128次連接11位隱性位時,將變成主動錯誤狀態(tài),且同時設(shè)置發(fā)送錯誤計數(shù)器和接收錯誤計數(shù)器為0.

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

          圖1


          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32CAN錯誤管

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();