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

          新聞中心

          CAN總線仲裁機制

          作者: 時間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
          最近在學(xué)習(xí)CAN總線,原先一直不太明白,若有A,B2個節(jié)點同一時刻一起向總線上發(fā)送數(shù)據(jù),CAN總線是怎么仲裁的,來讓A,B其中一個節(jié)點退出,保證高優(yōu)先級的節(jié)點優(yōu)先傳輸,今天又在網(wǎng)上查了一些資料,總算搞明白了一些。

          在CAN總線上,若同一個時刻,既有節(jié)點向總線上發(fā)送隱形電平(1),也有節(jié)點發(fā)送顯性電平(0),那么此時總線上表現(xiàn)出來的為顯性(0)。

          本文引用地址:http://www.ex-cimer.com/article/201612/330371.htm

          當(dāng)總線空閑時,有多個節(jié)點同時需要發(fā)送報文,那么每個節(jié)點的發(fā)送器將會對發(fā)送位的電平和被監(jiān)控的總線電平做比較,如果電平相同,那么該節(jié)點可以繼續(xù)發(fā)送,如果發(fā)送的為一“隱性”電平(1),但是監(jiān)控到一“顯性”電平(0),那么該節(jié)點失去仲裁,必須退出發(fā)送狀態(tài),只到下一次總線空閑的時候在參與總線的仲裁競爭。

          由以上也可以看出,當(dāng)有多個節(jié)點同時爭奪總線的控制權(quán),ID最小的那個節(jié)點將會勝出,所以在CAN總線上,節(jié)點的ID越小,優(yōu)先級越高。

          先列舉2種特殊情況,根據(jù)仲裁來判斷優(yōu)先級。

          1.若在同一時刻,標(biāo)準(zhǔn)格式的報文與擴展格式的報文同時搶占總線,且它們的基礎(chǔ)ID相同,則發(fā)標(biāo)準(zhǔn)格式的報文節(jié)點就會PK成功。這是因為擴展格式在基本ID后,緊接著是SRR位,與IDE位,且這兩位都是隱性位。而在標(biāo)準(zhǔn)格式中,這兩位分別對應(yīng)的位為RTR與r1,其中RTR既可以為隱性位,也可以為顯性位,,但是r1必須為顯性位。由仲裁規(guī)則可以此時標(biāo)準(zhǔn)幀必定勝出。

          2.同理,如果在同一時刻,具有相同格式,且具有相同ID的數(shù)據(jù)幀與遠(yuǎn)程幀爭奪總線控制權(quán),那么數(shù)據(jù)幀必定勝出。因為RTR顯性表示數(shù)據(jù)幀,隱性表示遠(yuǎn)程幀。

          今天又發(fā)現(xiàn)了一個問題,前幾天也是在21IC的論壇上看見有這樣一條帖子,上面說如果有2個節(jié)點具有相同的ID,同時向總線上發(fā)送不同的數(shù)據(jù)幀,那么這兩個節(jié)點將會繼續(xù)仲裁數(shù)據(jù)場,只到有一方退出。開始我也是這樣認(rèn)為的,但是下午在看到CAN-bus規(guī)范V2.0上,關(guān)于應(yīng)答場(ACK)部分的時候,想到了, 如果真是如上所述,就會出現(xiàn)一種比較奇怪的現(xiàn)象:

          即如果總線上,只有A,B2個節(jié)點,當(dāng)前只有A節(jié)點發(fā)送報文,B節(jié)點再接收,按照以上的觀點,那么將會發(fā)生什么呢?在應(yīng)答場(ACK)應(yīng)答間隙(ACK SLOT)的時候,A節(jié)點將會發(fā)送一個“隱性”位(1),但是同時,B節(jié)點卻會發(fā)送一個“顯性位”(0)來以示應(yīng)答(這里假設(shè)B節(jié)點正確接收到有效的報文),那么此時總線上表現(xiàn)出來就是“顯性”(0)了。但是A卻是發(fā)送的是“隱性”(1)啊,那么按照上述說法,此時A節(jié)點就要退出總線了,也就不在發(fā)送應(yīng)答界定符(ACK DELIMITER)(顯性1),了,此時總線上就會一直保持顯性(0)狀態(tài),只到位錯誤的發(fā)生。

          因此,以上說法是不成立的,其實由CAN-bus規(guī)范V2.0的P8頁上有如下語句:

          Arbitration
          Whenever the bus is free, any unit may start to transmit a message. If 2 or more units
          start transmitting messages at the same time,the bus access conflict is resolved by
          bitwise arbitration using the IDENTIFIER. The mechanism of arbitration guarantees that
          neither information nor time is lost. If a DATA and a REMOTE with the
          same IDENTIFIER are initiated at the same time, the DATA prevails over the
          REMOTE . During arbitration every transmitter compares the level of the bit
          transmitted with the level that is monitored on the bus. If these levels are equal the unit
          may continue to send. When a ’recessive’ level is sent and a ’dominant’ level is
          monitored (see Bus Values), the unit has lost arbitration and must withdraw without
          sending one more bit.

          由以上紅色部分可知,參與逐位仲裁的位只有仲裁場?。。?/p>

          那么如果有2個節(jié)點具有相同的仲裁場,但是他們的數(shù)據(jù)場不同,將會發(fā)生什么呢?我感覺可能在數(shù)據(jù)場之間可能會產(chǎn)生位錯誤(Bit Error),接收完CRC序列后,可能會發(fā)生一個應(yīng)答錯誤,或者一個CRC錯誤。



          關(guān)鍵詞: CAN總線仲裁機

          評論


          技術(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); })();