15.18、 硬件CRC循环冗余检验实验.pdf

上传人:紫竹语嫣 文档编号:5514307 上传时间:2020-05-27 格式:PDF 页数:7 大小:220.83KB
返回 下载 相关 举报
15.18、 硬件CRC循环冗余检验实验.pdf_第1页
第1页 / 共7页
15.18、 硬件CRC循环冗余检验实验.pdf_第2页
第2页 / 共7页
15.18、 硬件CRC循环冗余检验实验.pdf_第3页
第3页 / 共7页
15.18、 硬件CRC循环冗余检验实验.pdf_第4页
第4页 / 共7页
15.18、 硬件CRC循环冗余检验实验.pdf_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《15.18、 硬件CRC循环冗余检验实验.pdf》由会员分享,可在线阅读,更多相关《15.18、 硬件CRC循环冗余检验实验.pdf(7页珍藏版)》请在三一文库上搜索。

1、 硬件硬件CRC循环冗余检验实验循环冗余检验实验 CRC 是(Cyclic Redundancy Check)的缩写,意思是循环冗余校验。CRC 循环冗余校验 技术主要应用于核实数据远程传输或者数据存储的正确性和完整性。 神舟系列开发板使用的 STM32 芯片都内置了一个硬件的 CRC 计算模块,本章节我们讲述该硬件模块的使用。 ? 意义与作用意义与作用 CRC 校验可以硬件完成,可以软件实现。本多处理器内部没有硬件 CRC 校验电路,只 能使用软件实现,但是软件实现需要占用 CPU 和 RAM 资源,而且速度稍慢。神舟系列开 发板使用的 STM32 芯片内置了一个硬件的 CRC 计算模块,可

2、以在通信的检测错误和数据 完整性方面发挥优异的性能,本章节我们讲述该硬件模块的使用。 ? 实验原理实验原理 CRC 循环冗余校验计算单元是根据固定的生成多项式得到任一 32 位全字的 CRC 计算 结果。 在其他的应用中, CRC 技术主要应用于核实数据传输或者数据存储的正确性和完 整性。标准 EN/IEC 60335-1 即提供了一种核实闪存存储器完整性的方法。CRC 计算单元可 以在程序运行时计算出软件的标识, 之后与在连接时生成的参考标识比较, 然后存放在指定 的存储器空间。 所有的 STM32 芯片都内置了一个硬件的 CRC 计算模块,可以很方便地应用到需要进 行通信的程序中,这个 C

3、RC 计算模块使用常见的、在以太网中使用的计算多项式: X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 +X8 + X7 + X5 + X4 + X2+ X +1 写成十六 进制就是:0x04C1 1DB7。STM32 芯片的硬件 CRC 计算单元框图如下: 图表 1 CRC 计算单元框图 使用这个内置 CRC 模块的方法非常简单, 既首先复位 CRC 模块(设置 CRC_CR=0x01), 这个操作把 CRC 计算的余数初始化为 0xFFFFFFFF;然后把要计算的数据按每 32 位分割为 一组数据字,并逐个地把这组数据字写入 CRC_DR 寄存器

4、(既上图中的绿色框),写完所有 的数据字后,就可以从 CRC_DR 寄存器(既下图中的兰色框)读出计算的结果。 注意:虽然读写操作都是针对 CRC_DR 寄存器,但实际上是访问的不同物理寄存器。 下面是用 C 语言描述的这个计算模块的算法,大家可以把它放在通信的另一端,对通 信的正确性进行验证: 有几点需要说明: 1)上述算法中变量 CRC,在每次循环结束包含了计算的余数,它始终是向左移位(既从最 低位向最高位移动),溢出的数据位被丢弃。 2)输入的数据始终是以 32 位为单位,如果原始数据少于 32 位,需要在低位补 0,当然也 可以高位补 0。 3)假定输入的 DWORD 数组中每个分量是

5、按小端存储。 4)输入数据是按照最高位最先计算,最低位最后计算的顺序进行。 例如: 如果输入 0x44434241,内存中按字节存放的顺序是:0x41, 0x42, 0x43, 0x44。计算的结 果是:0xCF534AE1 如果输入 0x41424344,内存中按字节存放的顺序是:0x44, 0x43, 0x42, 0x41。计算的结 果是:0xABCF9A63 ? 硬件设计硬件设计 CRC 计算单元是 STM32 处理器内部硬件组件,这部分不需要硬件电路,这里仅将计算结 果在串口打印出来。 ? 软件设计软件设计 本实验循环重复计算一段已知数据的 CRC 校验结果并打印,这段已知数据如下:

6、关于串口打印相关知识请查看“串口 2 的 Printf 输出实验”章节。 本实验比较简单,下面我们之间看 MAIN 主函数,MAIN 主函数开始首先是初始化串 口 2,如下: 接着是打印一些提示信息,如下: 最后是 while 循环,循环体内首先使能 CRC 时钟(当然这一步可以放在循环体之外) , 然后是给 CRC 寄存器置初值,CRC_ResetDR 置初值很关键,否则循环打印出的 CRC 结果 一次和一次不同,最后是计算已知数据的 CRC 校验结果并打印,如下: ? 下载与验证下载与验证 神舟IV号光盘源码目录包含本实验的工程源码,在神舟IV号光盘源码18、硬件CRC 循 环 冗 余 检

7、 验.rarProject18、 硬 件CRC循 环 冗 余 检 验EWARMv5STM32F107VC -ARMJISHUExe目录下的ARMJISHU_硬件CRC循环冗余检验.hex文件即为前面我们分析的 硬件CRC循环冗余检验实验编译好的固件,我们可以直接将固件下载到神舟IV号开发板中, 观察运行效果。 如果使用JLINK下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。下载固件 到神舟IV号开发板小节进行操作。 如果使用USB下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行操 作。 如果使

8、用串口下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行 操作。 如果在IAR开发环境中, 下载编译好的固件或者在线调试, 请按错误! 未找到引用源。错误! 未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 如果在MDK开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。错误!未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 ? 实验现象实验现象 将固件下载在神舟IV号STM32开发板后,用随板配置的串口线连接神舟IV号串口2与电 脑的串口,打开超级终端,并按如下参数配置串口。 图表 2 超级终端串口参数配置 以下是下载固件后上电运行神舟 IV 号时串口的打印信息,每次校验得到相同结果: 以下是下载固件后上电运行神舟 IV 号时串口的打印信息,每次校验得到相同结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料


经营许可证编号:宁ICP备18001539号-1