推荐文档列表

AVR单片机CRC校验码的查表与直接生成

时间:2021-10-01 09:45:36 计算机论文 我要投稿

AVR单片机CRC校验码的查表与直接生成

摘要:循环冗余码校验CRC是常用的重要校验方法之一。AVR高速嵌入式单片机功能强大,在无线数据传输应用方面具有很大优势。本文基于Atmega128高速嵌入式单片机,实现32位CRC校验码的直接生成法和查表生成法;根据实验结果,分析两种方法的特点。

    关键词:Atmega128 CRC校验码 CRC生成表 数据段

引 言

  随着技术的不断进步,各种数据通信的应用越来越广泛。由于传输距离、现场状况、干扰等诸多因素的影响,设备之间的通信数据常会发生一些无法预测的错误。为了降低错误所带来的影响,一般在通信时采用数据校验的办法,而循环冗余码校验是常用的重要校验方法之一。

  AVR高速嵌入式单片机是8位RISC MCU,执行大多数指令只需一个时钟周期,速度快(8MHz AVR的运行速度约等于200MHz 80C51的运行速度),32个通用寄存器直接与ALU相连,消除了运算瓶颈;内嵌可串行下载或自我编程的Flash和EPPROM,功能繁多,具有多种运行模式。

  本文采用Atmel公司的Atmega128高速嵌入式单片机,依照IEEE 1999年公布的802.11无线局域网协议标准,采用32位循环冗余校验码(Cyclic Redundancy Check)实现无线传输数据时的差错校验。

1 CRC循环冗余校验码原理

    1.1 数据传输的帧格式

  根据IEEE制定的802.11无线局域网络协议,在数据传输时都应按照帧传输。这里,我们采用了信息处理系统-数据通信-高级数据链路控制规程-帧结构,它的每个帧由下列字段组成(传输顺序自左至右):

地 址控  制信  息CRC校验位

地址——数据站地址字段;

控制——控制字段。

信息——信息字段;

CRC校验位——根据前面三个字段生成的CRC校验位。

由地址、控制、信息三个字段组成的总的字段统称为数据段。

    1.2 CRC校验码的理论生成方法

  CRC校验采用多项式编码方法,被处理的数据块可以看作是一个n阶的二进制多项式。这里,假定待发送的二进制数据段为g(x),生成多项式为 m(x),得到的CRC校验码为c(x)。

  CRC校验码的编码方法是用待发送的二进制数据g(x)除以生成多项式m(x),将最后的余数作为CRC校验码,实现步骤如下。

   ① 设待发送的数据块是m位的二进制多项式 g(x),生成多项式为r阶的m(x)。在数据块的末尾添加r个0,数据块的长度增加到m+r位,对应的二进制多项式为G(x) 。

  ② 用生成多项式m(x)去除G(x) ,求得余数为阶数是r-1的二进制多项式c(x)。此二进制多项式 c(x)就是g(x)经过生成多项式m(x)编码的CRC校验码。

  ③ 用模2的方式减去c(x),得到的二进制多项式就是包含了CRC校验码的待发送字符串。

CRC校验可以

[1] [2] [3] [4]