CAN_BUS_CRC解碼原理介紹

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)次方數個0T `(X)

              檢測位元T `(X)÷特定多項式G(X)=餘數位元R(X)

              餘數位元R(X)=波型上餘數位元R(X) 顯示資料傳送正確

                                      ≠波形上餘數位元R(X) 顯示資料傳送錯誤

      

       範例:由於工作原理相同,在此統一採方法二進行檢測。下圖使用LA擷取PISO-200CAN_BUS模組板之標準格式訊號,每1 bit8us。首先針對訊號分析做解碼動作,其特別規範為每相同訊號連續5 bits即給予1 bit反向訊號,如同下圖A-B區段內容中因有5 bits 1而後面緊接1 bits 0,其1 bit 0之訊號不列入CRC檢查運算內,這點請注意。首先進行訊號分析,START0 (T-A區段)BASIC ID11111111111(A-B區段)RTR0 (B-C區段)IDE0 RB0=0 CTRL=0001(C-D)Data=10001000 (D-E區段)CRC R(X)0101100100101001 (E-F)ACK01 (F-G)STOP1111111 (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)尾端加上150,可得檢測位元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界定符,唯一單獨隱性位元,在此不列入比較。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值