熟悉CAN通訊的工程師們一般都會見過“反碼位”一專業(yè)術(shù)語,但它到底是什么,?到底有什么用?也許很多人對其并沒有深入的理解,,本文將讓大家對此不再迷惑。
數(shù)據(jù)數(shù)字編碼具有很多方法,,諸如非歸零(NRZ),、曼徹斯特或脈寬編碼,它們的區(qū)別在于用來表示一個位的時隙的數(shù)目不同,,如圖 1所示,。非歸零電平編碼的信號電平在整個位時間里保持不變,因此只需要一個時隙來表示一個位,。而曼徹斯特編碼的信號在一個位時間內(nèi)發(fā)生變化,,因此需要兩個時隙來表示一個位。曼徹斯特編碼的優(yōu)點是每個位都有一個信號邊沿用來實現(xiàn)位同步(Self-clocking code),。但是曼徹斯特編碼和非歸零編碼相比,在相同的位時間(位頻率)時,,位速率只能達到非歸零碼一半,。由于非歸零編碼的信號電平可長時間保持不變(取決于所傳輸?shù)臄?shù)據(jù)),因此有必要采取適當?shù)拇胧┮源_保不超過兩個信號沿之間最大允許的時間間隔,。重新同步點之間最大的時間間隔由節(jié)點振蕩器的誤差決定,。重新同步可通過應(yīng)用“位填充”的方法實現(xiàn)。這種方法是在一定數(shù)量的恒定位電平之后將一個反碼插入到位流中,。
圖 1 NRZ和曼徹斯特編碼的位表示
CAN協(xié)議中應(yīng)用的是帶位填充(填充寬度為5位)的NRZ信號編碼,,它保證了具有足夠同步能力的最高傳輸性能。這種類型的編碼還提供非常良好的信號輻射特性(總線輻射的能量大致上和傳輸信號的頻率以及信號邊沿的數(shù)量成比例),。
CAN協(xié)議中應(yīng)用NRZ編碼的部分包括SOF,、仲裁場、控制場,、數(shù)據(jù)場,、數(shù)據(jù)幀和遠程請求幀的CRC序列。發(fā)送器一檢測到5個連續(xù)相同值的序列,,它就會在實際傳輸?shù)奈涣髦胁迦胍粋€反碼位,。數(shù)據(jù)幀或遠程幀剩下的部分(CRC分隔符,、ACK場和EOF)都有一個固定的形式(隱性電平),并且不采用位填充進行發(fā)送,。出錯和超載幀也是如此,。