熟悉CAN通訊的工程師們一般都會見過“反碼位”一專業術語,但它到底是什么?到底有什么用?也許很多人對其并沒有深入的理解,本文將讓大家對此不再迷惑。
數據數字編碼有很多方法,諸如非歸零(NRZ)、曼徹斯特或脈寬編碼,它們的區別在于用來表示一個位的時隙的數目不同,如圖1所示。
非歸零電平編碼的信號電平在整個位時間里保持不變,因此只需要一個時隙來表示一個位。而曼徹斯特編碼的信號在一個位時間內發生變化,因此需要兩個時隙來表示一個位。曼徹斯特編碼的優點是每個位都有一個信號邊沿用來實現位同步(Self-clocking code)。但是曼徹斯特編碼和非歸零編碼相比,在相同的位時間(位頻率)時,位速率只能達到非歸零碼一半。由于非歸零編碼的信號電平可長時間保持不變(取決于所傳輸的數據),因此有必要采取適當的措施以確保不超過兩個信號沿之間最大允許的時間間隔。重新同步點之間最大的時間間隔由節點振蕩器的誤差決定。重新同步可通過應用“位填充”的方法實現。這種方法是在一定數量的恒定位電平之后將一個反碼插入到位流中。
![1c03b0e8-3f1c-11ef-a655-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/FC/08/wKgaomaPer2AZacaAAAqY_xOMgA207.png)
圖1 NRZ和曼徹斯特編碼的位表示
CAN協議中應用的是帶位填充(填充寬度為5位)的NRZ信號編碼,它保證了具有足夠同步能力的最高傳輸性能。這種類型的編碼還提供非常良好的信號輻射特性(總線輻射的能量大致上和傳輸信號的頻率以及信號邊沿的數量成比例)。
CAN協議中應用NRZ編碼的部分包括SOF、仲裁場、控制場、數據場、數據幀和遠程請求幀的CRC序列。發送器一檢測到5個連續相同值的序列,它就會在實際傳輸的位流中插入一個反碼位。數據幀或遠程幀剩下的部分(CRC分隔符、ACK場和EOF)都有一個固定的形式(隱性電平),并且不采用位填充進行發送。出錯和超載幀也是如此。
-
CAN總線
+關注
關注
145文章
1955瀏覽量
131092 -
編碼
+關注
關注
6文章
957瀏覽量
54951 -
信號傳輸
+關注
關注
4文章
437瀏覽量
20281
發布評論請先 登錄
相關推薦
為什么CAN信號傳輸中要插入反碼位
為什么CAN信號傳輸中要插入反碼位
![為什么<b class='flag-5'>CAN</b><b class='flag-5'>信號</b><b class='flag-5'>傳輸</b><b class='flag-5'>中</b><b class='flag-5'>要</b><b class='flag-5'>插入</b><b class='flag-5'>反碼位</b>](https://file1.elecfans.com//web2/M00/A6/8E/wKgZomUMPqKAWMtzAAAKG1YbrjM842.jpg)
CAN信號傳輸中為什么要插入反碼位
![<b class='flag-5'>CAN</b><b class='flag-5'>信號</b><b class='flag-5'>傳輸</b><b class='flag-5'>中</b>為什么<b class='flag-5'>要</b><b class='flag-5'>插入</b><b class='flag-5'>反碼位</b>](https://file1.elecfans.com//web2/M00/A7/31/wKgZomUMQu6AO9bFAAAJ-e0DqbQ900.jpg)
評論