概述
循环冗余校验(Cyclic Redundancy Check,CRC)是最为常用的计算机和仪表数据通信的校验方法,FM33A048B中CRC计算单元为完全独立模块,通过软件控制可进行7816、I2C、UART和SPI模块有串行数据流接口的收发CRC计算和校验,也可进行Flash内容的CRC校验。

CRC算法说明
(1) CRC 模块所支持的多项式为:

(2 )CRC 运算的初始值可设置
(3 )支持输入 reflect (即将输入数据的每一 byte 依次反向后再进行计算)
支持输出 reflect (即将计算结果数据全部反向后再进行输出)
(4 )计算出的结果支持异或输出

软件配置过程
CRC 配置及计算流程如下:
1、CRC开始计算的时候,配置运算移位寄存器中的初始值,范围是0000~FFFF。
2、配置输出异或寄存器CRC_XOR
3、软件需配置好输入reflectin处理使能;输出reflectout和xorout处理使能
4、软件将需要计算CRC码的8bit数据放入数据寄存器(CRCDR[7:0]),然后自动开始计算逐次移位,总共移位8拍。(注意:触发计算的动作即是软件将需要计算CRC码的数据写入此数据寄存器,所以在这之前,所有的配置动作须完成)
5、计算完毕后,结果数据回写到数据寄存器,软件根据当前计算状态busy位来判断是否能取结果:16bit计算结果存在{CRCDR[15:0]};
6、计算完前一次CRC后,数据寄存器中会保留前一次结果,作为后续数据的移位寄存器初始值。在多次连续触发CRC计算后,软件最终读取的是累积计算的完整数据的CRC值。

DMA 接口
CRC与DMA之间通道为单向的(RAM->CRC)。CRC模块可以通过DMA模块读取并校验RAM数据,其工作流程如图所示。CRC向DMA发起请求,DMA接收请求后,读取RAM并将数据写入CRC模块的CRCDR寄存器中。CRC模块接收到数据后,撤销DMA请求并开始计算校验值,校验完成后,CRC模块重新置起DMA请求。

Flash 数据完整性校验
Flash内容的CRC校验可以在上电后进行,以保证内容正确性。CRC模块读取Flash时起始地址必须对齐word边界,每读一次flash,需要运算4次8bit CRC。软件通过寄存器指定CRC校验的起始地址和数据长度(17bit word address),起始地址寄存器兼做flash指针,CRC启动后每读取一次Flash将对指针+1,同时对长度寄存器-1,直到长度寄存器等于0,当Flash指针到达最高有效地址后,如果长度仍未减到0,指针将roll-over至0地址继续运行。
Flash校验由软件启动,启动后CRC完全占据Flash总线,CPU如果在Flash中取指将被挂起,在RAM中取指不受影响。

FM33A048B CRC相关推荐

  1. LabVIEW实现CRC校验

    目录 1.内部控件计算CRC校验 2.公式节点计算CRC校验 CRC(循环冗余校验),是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存 ...

  2. ctf 文件头crc错误_[CTF隐写]png中CRC检验错误的分析

    [CTF隐写]png中CRC检验错误的分析 最近接连碰到了3道关于png中CRC检验错误的隐写题,查阅了相关资料后学到了不少姿势,在这里做一个总结 题目来源: bugku-MISC-隐写2 bugku ...

  3. CRC校验和芯片ID

    文章目录 一.CRC循环冗余校验计算单元 二.96位芯片ID 三.中断控制器和外部/事件控制器 四.stm32功能全图 杨桃32学习笔记,本文图片文字皆为转述 一.CRC循环冗余校验计算单元 CRC是 ...

  4. 码crc校验_CRC计算

    循环冗余码校验英文名称为 Cyclical Redundancy Check,简称 CRC,它具有更高性能 的检错能力.CRC 利用除法余数的原理来检测错误, 它将两个字节数据流进行二进制除法 (没有 ...

  5. 如果CRC等于炒鸡蛋,那么...

    01 如果产生CRC等于炒鸡蛋 ▲ 绝妙的比喻 02 那么CRC校验是什么? ▲ 也就是这样了

  6. 用c语言打电子算料,用C语言实现CRC校验计算

    在编写数据传输程序时,数据容错是一个非常重要的问题.循环冗余位校验(Cyclicl Redundncy Check英文简称CRC)是目前运用非常广泛的一种数据容错方法,在数据传输,数据压缩等领域运用极 ...

  7. crc错误 modbus poll_Modbus通讯错误检测方法

    标准的Modbus串行网络采用两种错误检测方法.奇偶校验对每个字符都可用,帧检测(LRC和CRC)应用于整个消息.它们都是在消息发送前由主设备产生的,从设备在接收过程中检测每个字符和整个消息帧. 用户 ...

  8. crc生成多项式怎么算_利用system Verilog生成任意CRC多项式

    IC君的第43篇原创文章 之前有一篇文章讲了CRC串行和并行电路的实现:CRC算法的硬件电路实现:串行电路和并行电路. 有做过类似设计的同学问:有没有办法轻松愉快地生成任意CRC多项式的电路?我们在设 ...

  9. 32位crc校验码程序_CRC码计算及校验原理的最通俗诠释

    CRC校验原理 CRC校验原理看起来比较复杂,好难懂,因为大多数书上基本上是以二进制的多项式形式来说明的.其实很简单的问题,其根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注 ...

最新文章

  1. 使用Python3发送邮件测试代码
  2. ETH网络要爆炸,未来Token的最佳选择注定是BCH
  3. python序列_科学网—Python:序列(字符串、列表、元组)和序列函数 - 刘洋洋的博文...
  4. requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...
  5. 计算机由简单的二进制阴阳,二进制之美,大道至简,二生万物!
  6. 计算机普通用户禁止修改c盘,保护C盘数据win7中设置禁止修改C盘文件的方法
  7. vfp 生成html,vfp教程之用FoxPro生成HTML文件
  8. android微信发现代码,微信代码各种隐藏盘点 99%用户都不知道的微信代码
  9. 阿里巴巴JAVA编码规范考试
  10. 手机邮箱设置qq服务器,手机设置qq邮箱
  11. [CSP-S模拟测试]:跳房子(模拟)
  12. 电脑管家修复DNS服务器,DNS是什么?dns劫持是怎么回事?怎么处理?
  13. vue 生成 证书模板 并支持 图片下载和导出PDF的demo
  14. Xamarin for android学习总结一
  15. IMSI(MIN)介绍
  16. Mybatis Plugin拦截器处理特殊字符串
  17. 红帽子linux网络播放器,redhat默认播放器(totem)解码包安装
  18. Hadoop的NameNode在启动时都做了哪些事情?源码解析
  19. 基于matlab的电机运行分析,电机模型分析及拖动仿真:基于MATLAB的现代方法
  20. ios中html2canvas正式包空白,html2canvas 部分iphone手机机型出现空白

热门文章

  1. Kali Linux中前十名的Wifi攻击工具(附官网链接、使用教程)
  2. 使用Adb wifi Android真机运行Uni-app
  3. 00后程序员都开始学习并精通使用SpringCloudRibbon了,你真会吗
  4. java-php-python-ssm医院分诊管理系统计算机毕业设计
  5. 计算机二级准考证是哪套题,计算机二级word真题:制作准考证
  6. 选调打印准考证必须用电脑吗
  7. Android系统移植与调试之如何修改Android系统默认显示【开发者选项】并默认打开【USB调试】和【未知来源】开关
  8. 伟文标记android版本,【伟文品胜 标签打印机使用总结】APP|连接|打印|更换标签纸|优点_摘要频道_什么值得买...
  9. Python对于人工智能的应用
  10. 基于云应用的公众号后台程序开发-李朋伟-专题视频课程