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

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 為什么CAN信號(hào)傳輸中要插入反碼位?

          為什么CAN信號(hào)傳輸中要插入反碼位?

          作者:周立功致遠(yuǎn)電子 時(shí)間:2016-07-21 來源:電子產(chǎn)品世界 收藏

            熟悉通訊的工程師們一般都會(huì)見過“”一專業(yè)術(shù)語,但它到底是什么?到底有什么用?也許很多人對其并沒有深入的理解,本文將讓大家對此不再迷惑。

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

            數(shù)據(jù)數(shù)字編碼具有很多方法,諸如非歸零(NRZ)、曼徹斯特或脈寬編碼,它們的區(qū)別在于用來表示一個(gè)位的時(shí)隙的數(shù)目不同,如圖 1所示。非歸零電平編碼的信號(hào)電平在整個(gè)位時(shí)間里保持不變,因此只需要一個(gè)時(shí)隙來表示一個(gè)位。而曼徹斯特編碼的信號(hào)在一個(gè)位時(shí)間內(nèi)發(fā)生變化,因此需要兩個(gè)時(shí)隙來表示一個(gè)位。曼徹斯特編碼的優(yōu)點(diǎn)是每個(gè)位都有一個(gè)信號(hào)邊沿用來實(shí)現(xiàn)位同步(Self-clocking code)。但是曼徹斯特編碼和非歸零編碼相比,在相同的位時(shí)間(位頻率)時(shí),位速率只能達(dá)到非歸零碼一半。由于非歸零編碼的信號(hào)電平可長時(shí)間保持不變(取決于所傳輸?shù)臄?shù)據(jù)),因此有必要采取適當(dāng)?shù)拇胧┮源_保不超過兩個(gè)信號(hào)沿之間最大允許的時(shí)間間隔。重新同步點(diǎn)之間最大的時(shí)間間隔由節(jié)點(diǎn)振蕩器的誤差決定。重新同步可通過應(yīng)用“位填充”的方法實(shí)現(xiàn)。這種方法是在一定數(shù)量的恒定位電平之后將一個(gè)反碼插入到位流中。

            

           

            圖 1 NRZ和曼徹斯特編碼的位表示

            協(xié)議中應(yīng)用的是帶位填充(填充寬度為5位)的NRZ信號(hào)編碼,它保證了具有足夠同步能力的最高傳輸性能。這種類型的編碼還提供非常良好的信號(hào)輻射特性(總線輻射的能量大致上和傳輸信號(hào)的頻率以及信號(hào)邊沿的數(shù)量成比例)。

            協(xié)議中應(yīng)用NRZ編碼的部分包括SOF、仲裁場、控制場、數(shù)據(jù)場、數(shù)據(jù)幀和遠(yuǎn)程請求幀的CRC序列。發(fā)送器一檢測到5個(gè)連續(xù)相同值的序列,它就會(huì)在實(shí)際傳輸?shù)奈涣髦胁迦胍粋€(gè)。數(shù)據(jù)幀或遠(yuǎn)程幀剩下的部分(CRC分隔符、ACK場和EOF)都有一個(gè)固定的形式(隱性電平),并且不采用位填充進(jìn)行發(fā)送。出錯(cuò)和超載幀也是如此。



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