您的位置:首页 > 其它

CAN_BUS_CRC解碼原理介紹

2007-07-14 16:13 323 查看
1. 目的:CRC檢查是針對突發性、單一位元或奇數個位元錯誤進行檢查的動作,已表示資料傳輸的過程中是否錯誤。

2. 工作原理:CRC主要的運作方式是將資料位元D(X)除以多項式G(X)進行運算,不同的CRC檢查則有不同的多項式G(X)產生,經過除法運算後可得知餘數R(X)來進行判斷。

3. 運算規範:檢測資料是否傳輸正確可依照下列運算式進行驗證。

方法一:
資料位元D(X)在尾端+波形顯示之CRC_R(X)=檢測位元T(X)
檢測位元T(X)÷特定多項式G(X)=0顯示資料傳送正確
≠0 顯示資料傳送錯誤
方法二:
資料位元D(X)在尾端+補上G(X)次方數個0=T `(X)
檢測位元T `(X)÷特定多項式G(X)=餘數位元R(X)
餘數位元R(X)=波型上餘數位元R(X) 顯示資料傳送正確
≠波形上餘數位元R(X) 顯示資料傳送錯誤

範例:由於工作原理相同,在此統一採方法二進行檢測。下圖使用LA擷取PISO-200之CAN_BUS模組板之標準格式訊號,每1 bit為8us。首先針對訊號分析做解碼動作,其特別規範為每相同訊號連續5 bits即給予1 bit反向訊號,如同下圖A-B區段內容中因有5 bits 1而後面緊接1 bits 0,其1 bit 0之訊號不列入CRC檢查運算內,這點請注意。首先進行訊號分析,START=0 (T-A區段)、BASIC ID=11111111111(A-B區段)、RTR=0 (B-C區段)、IDE=0 RB0=0 CTRL=0001(C-D)、Data=10001000 (D-E區段)、CRC R(X)=0101100100101001 (E-F)、ACK=01 (F-G)、STOP=1111111 (G-H)。

CAN_BUS_CRC多項次固定G(X)=X15+X14+X10+X8+X7+X4+X3+1必須轉換為位元形式,從最高位元至常數位元依序排列,位元不足部份補為0,共有16 bits。

X15 X14 X13 X12 X11 X10 X9 X8 X7 X6 X5 X4 X3 X2 X 1
1 1 0 0 0 1 0 1 1 0 0 1 1 0 0 1

※ 依據上式可得G(X)=1100010110011001

※ CAN_BUS_CRC資料位元串D(X)
=CRC R(X)碼前資料位元數
=011111111111000000110001000 (T-E區段)

※ CAN_BUS_CRC 餘數碼R(X)
=CRC波形上訊號
=0101100100101001 (E-F區段)

進型運算時因G(X)為15階多項式,因此必須在D(X)尾端加上15個0,可得檢測位元T `(X)=D(X)+000000000000000
=011111111111000000110001000000000000000000

10101101101110011001110100
1100010110011001

11111111111000000110001000000000000000000
1100010110011001

1110100111100101
1100010110011001

1011000111110010
1100010110011001

1110100011010110
1100010110011001

1011010100111101
1100010110011001

1110000101001000
1100010110011001

1001001101000100
1100010110011001

1010110110111010
1100010110011001

1101000001000110
1100010110011001

1010111011111000
1100010110011001

1101011011000010
1100010110011001

1001101011011000
1100010110011001

1011111010000010
1100010110011001

1111011000110110
1100010110011001

1100111010111100
1100010110011001
010110010010100
運算R(X)=010110010010100與波形上CRC_R(X)相符合,因此判段資料傳輸正確無誤。運算數據與波形上比對採前15 bits 最後1 bit 為CRC Del界定符,唯一單獨隱性位元,在此不列入比較。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: