8位循环冗余检验CRC校验说明.pdf

上传人:飞****9 文档编号:135765226 上传时间:2020-06-18 格式:PDF 页数:10 大小:325.53KB
返回 下载 相关 举报
8位循环冗余检验CRC校验说明.pdf_第1页
第1页 / 共10页
8位循环冗余检验CRC校验说明.pdf_第2页
第2页 / 共10页
8位循环冗余检验CRC校验说明.pdf_第3页
第3页 / 共10页
8位循环冗余检验CRC校验说明.pdf_第4页
第4页 / 共10页
8位循环冗余检验CRC校验说明.pdf_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《8位循环冗余检验CRC校验说明.pdf》由会员分享,可在线阅读,更多相关《8位循环冗余检验CRC校验说明.pdf(10页珍藏版)》请在金锄头文库上搜索。

1、 软件名称 CRC 算法说明 功能描述 最近看的 CRC 8 资料 分享如下 公司名称 ROBAM 作 者 顾长超 芯 片 日 期 2017 8 1 修改日期 第一部分第一部分 CRC 8 原理说明 CRC Cyclic Redundancy Check 是数据通信领域中最常用的一种差错校验码 其特征是信息字段和校验字段的长度可以任意选定 CRC 校验可以简单地描述为 例如我们要发送一些数据 信息字段 为了避免一些干扰以及 在接收端的对读取的数据进行判断是否接受的是真实的数据 这时我们就要加上校验数据 即 CRC 校验码 来判断接收的数据是否正确 在发送端 根据要传送的 k 位二进制码序列 以

2、一定的规则 CRC 校验有不同的规则 这个规则 在差错控制理论中称为 生成多项式 产生一个校验用的 r 位校验码 CRC 码 附在原始信息后边 构成一个新的二进制码序列数共 k r 位 然后发送出去 在接收端 根据信息码和 CRC 码之间所遵循的规则 即与发送时生成 CRC 校验码相同的规则 进行检 验 校验采用计算机的模二除法 即除数和被除数 即生成多项式 做异或运算 进行异或运算时除数和被除数最高位对齐 进行按位异或运算 若最终的数据能被除尽 则传输正确 否则 传输错误 CRC 8 即 最终 生成的 CRC 校 验码 为 1 字 节 其 生成 多项 式 生成 多 项式 为 g x x 8

3、x 5 x 4 x 0 相当于 g x 1 x 8 0 x 7 0 x 6 1 x 5 1 x 4 0 x 3 0 x 2 0 x 1 1 x 0 即对应的二进制数为 100110001 CRC 8 校验算法 a 信息字段代码为 m x 0 x0102 x 8 x 1 1 0000 0010 b 多项式为 g x x 8 x 5 x 4 x 0 0 x0131 100110001 高位对齐 1 0000 0010 0000 0000 注 0 x0102 8 m x 左移 8 位 100110001 g x m x 做模二运算 最终的余数就是所要的 CRC8 校验码 其二进制数的位数一定比生成多

4、项式 g x 的位数小 000110011 00000000 100110001 高位为 1 对齐 01010100100000 100110001 0011000110000 100110001 01011110100 100110001 0010010110 最后生成的只有 8 位就是所要的 CRC8 校验码 前面的 0 不算 以 1 为准 10010110 0 x96 第第二二部分部分 SHT3X 规格书验证 代码如下 static u8t SHT3X CalcCrc u8t data u8t nbrOfBytes u8t bit bit mask u8t crc 0 xFF calcu

5、lated checksum u8t byteCtr byte counter calculates 8 Bit checksum with given polynomial for byteCtr 0 byteCtr 0 bit if crc 保证高位为 1 对齐 else crc crc 0 x41 CRC 符合 SHT3X 规格书里面的 Examples CRC 0 xBEEF 0 x92 第第三三部分部分 逆序 CRC 信息单元编码算法 低位 LSB 对齐 CRC 8 原理说明 首先需要明确 CRC 8 常见的表格数据中是按照先传输 LSB 并通过右移寄存器来判断的 因此每次要判断的就

6、是寄存器的最低位 LSB 同时要将多项式 x 8 x 5 x 4 x 0 也就是 0 x131 0011 0001 按位颠倒后得到的 0 x8c 1000 1100 来在计算过程中做异或运算 为什么 0 x131 中的第一个 1 没有被颠倒 答 因为它是隐藏的 网上说法 注 其实最低位也是被颠倒了 1000 1100 1 只是程序软件算法需要 把最低位省略了 m x 0 x01 作为示例来进行计算说明 在程序运算中 要求被算的 CRC 变量最低位为 1 时 需要 1 右移一位 也就是和多项式 翻转之后的为 1000 1100 1 的最低位 X 8 的 1 对齐 0X01 1 0000 0000

7、 1 和 1000 1100 1 多项式 翻转之后的 异或为 0000 0000 1 1000 1100 1 1000 1100 0 可以看出最低位都是 1 异或结果也固定都是 0 所以 程序里面简化运算 直接把最低位为 1 移出去 不再对最低位进行运算 程序软件算法 for bit 8 bit 0 bit if crc POLY 0X8C 1000 1100 1 注 1 最低位省略 0X8C else crc crc 1 具体步骤如下 判断 crc 最低位是否为 1 如果为 1 先将 crc 右移一位 然后 多项式 0 x8c 进行异或运算 结果保存在 crc 中 如果最低位为 0 则将 c

8、rc 右移一位 直到 crc 中的 8 位数据全部从右移出 m x 0 x01 0000 0001 g x 1000 1100 1 0000 0000 0000 0001 左边加 8 个 0 变成 16 位 1 0001 1001 低位对齐 注 前面的 CRC 算法是高位对齐 注意区别 0000 0001 0001 1000 1000 1100 1 0000 1001 1101 0 1 0001 1001 0001 1000 0100 100 0110 01 0101 1110 00 最低位为 0 的 直接右移出去 0101 1110 0 x5e 所以 0X01 的 CRC 8 运算结果为 0

9、 x5e 与 0X5E CRC8Table 0X01 一致 程序实例如下 运算法 define POLY 0 x8c define POLY CRC 0 x131 1 0011 0001 B the top 1 is hidden static u8t CRC8 Calc u8t data u8t Num unsigned char bit bit mask unsigned char u8crc 0 calculated checksum unsigned char byteCtr byte counter calculates 8 Bit checksum with given polyn

10、omial for byteCtr 0 byteCtr 0 bit if u8crc table i crc 1byte 1 table i POLY else u8crc u8crc 1 return u8crc 查表法 查表法是对 0 x00 0 xff 这 256 个数依次生成与每一个数对应的 CRC 码所组合成的表 每次算一字节数据的 CRC 码不用经过 calcrc 1byte uchar abyte 这个函数对每个数据的最低位进行判断是 1 还是 0 而直接通过查表的方式直接提取出 crc8 p 的 CRC 码 其运行效率相对按位运算方法更高 但是查表法所列的表却很占空间 unsi

11、gned char CRC8 Table unsigned char p unsigned char lens unsigned char crc 0 for lens 0 lens crc CRC8Table crc p 查表得到 CRC 码 p while lens len 为总共要校验的字节数 crc CRC8Table crc p return crc 10 进制 CRC 8 表格 const unsigned char CRC8Table 256 0 94 188 226 97 63 221 131 194 156 126 32 163 253 31 65 157 195 33 12

12、7 252 162 64 30 95 1 227 189 62 96 130 220 35 125 159 193 66 28 254 160 225 191 93 3 128 222 60 98 190 224 2 92 223 129 99 61 124 34 192 158 29 67 161 255 70 24 250 164 39 121 155 197 132 218 56 102 229 187 89 7 219 133 103 57 186 228 6 88 25 71 165 251 120 38 196 154 101 59 217 135 4 90 184 230 167

13、 249 27 69 198 152 122 36 248 166 68 26 153 199 37 123 58 100 134 216 91 5 231 185 140 210 48 110 237 179 81 15 78 16 242 172 47 113 147 205 17 79 173 243 112 46 204 146 211 141 111 49 178 236 14 80 175 241 19 77 206 144 114 44 109 51 209 143 12 82 176 238 50 108 142 208 83 13 239 177 240 174 76 18

14、145 207 45 115 202 148 118 40 171 245 23 73 8 86 180 234 105 55 213 139 87 9 235 181 54 104 138 212 149 203 41 119 244 170 72 22 233 183 85 11 136 214 52 106 43 117 151 201 74 20 246 168 116 42 200 150 21 75 169 247 182 232 10 84 215 137 107 53 16 进制 CRC 8 表格 const unsigned char CRC8Table 256 0 x00

15、0 x5e 0 xbc 0 xe2 0 x61 0 x3f 0 xdd 0 x83 1 0 xc2 0 x9c 0 x7e 0 x20 0 xa3 0 xfd 0 x1f 0 x41 2 0 x9d 0 xc3 0 x21 0 x7f 0 xfc 0 xa2 0 x40 0 x1e 3 0 x5f 0 x01 0 xe3 0 xbd 0 x3e 0 x60 0 x82 0 xdc 4 0 x23 0 x7d 0 x9f 0 xc1 0 x42 0 x1c 0 xfe 0 xa0 5 0 xe1 0 xbf 0 x5d 0 x03 0 x80 0 xde 0 x3c 0 x62 6 0 xbe

16、0 xe0 0 x02 0 x5c 0 xdf 0 x81 0 x63 0 x3d 7 0 x7c 0 x22 0 xc0 0 x9e 0 x1d 0 x43 0 xa1 0 xff 8 0 x46 0 x18 0 xfa 0 xa4 0 x27 0 x79 0 x9b 0 xc5 9 0 x84 0 xda 0 x38 0 x66 0 xe5 0 xbb 0 x59 0 x07 10 0 xdb 0 x85 0 x67 0 x39 0 xba 0 xe4 0 x06 0 x58 11 0 x19 0 x47 0 xa5 0 xfb 0 x78 0 x26 0 xc4 0 x9a 12 0 x65 0 x3b 0 xd9 0 x87 0 x04 0 x5a 0 xb8 0 xe6 13 0 xa7 0 xf9 0 x1b 0 x45 0 xc6 0 x98 0 x7a 0 x24 14 0 xf8 0 xa6 0 x44 0 x1a 0 x99 0 xc7 0 x25 0 x7b 15 0 x3a 0 x64 0 x86 0 xd8 0 x5b 0 x05 0 xe7 0 xb9 16

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号