[CortexM0--stm32f0308]CRC简述

问题描述

CRC,即循环冗余码校验,是一种对传输/存储数据的完整性进行检查的校验算法。因为在许多地方可能都会用到,所以stm32f0308就将这个算法用一个CRC硬件计算单元实现在了IC中,当有应用要用到CRC时,那么就可以通过软件来控制该硬件单元实现需求。

CRC计算单元

框图如下:

具体的实现是在IC内部的,这个无法得知,因此只需要知道如何使用即可,而且使用上很简单。将需要进行计算的源数据从Data register(input)写入,启动CRC计算单元计算,应当就能在Data register(output)中读到计算后的结果咯。

其实stm32f0308的CRC Data register的input和output使用的是同一个register,因为必须先输入,再得到输出,然后才能继续下一个输入……从这个过程可以看到,input和output并不是同时在使用的,那么直接用一个register复用两种功能,就OK。该register可以32 bit操作,也可16 bit, 8 bit的操作,这样可满足不同的需求了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 21:01:59

[CortexM0--stm32f0308]CRC简述的相关文章

【转载】简述Linux的启动过程

原文:简述Linux的启动过程 本文将简单介绍一下Linux的启动过程,希望对那些安装Linux的过程中遇到了问题的朋友有些帮助 声明:本人没用过UEFI模式和GPT分区格式,所有关于这两部分的内容都是网络上找的资料,仅供参考. 典型启动顺序 计算机通电后,CPU开始从一个固定的地址加载代码并开始执行,这个地址就是BIOS的驱动程序所在的位置,于是BIOS的驱动开始执行. BIOS驱动首先进行一些自检工作,然后根据配置的启动顺序,依次尝试加载启动程序.比如配置的启动顺序是CD->网卡01->U

Hibernate简述及入门实例

一.Hibernate简述 总的概括,Hibernate是一个ORM的轻量级持久层框架,解决了对象和关系数据库中表的不匹配问题(阻抗不匹配)以及拥有开发代码不用去继承hibernate类或接口的优势(无侵入性).hibernate框架实现使得开发人员可以避免反复地编写javajdbc部分代码,应用面向对象的思维操作关系型数据库. 二.使用myeclipse创建hibernate实例两种方法(以hibernate3.5.2及mysql为例) a)手动编写hibernate.cfg.xml及*.hb

Struts2基本使用(二)--配置文件简述

配置文件简述 引入Struts2框架之后项目中多了一个struts.xml,以及web.xml也多了一些代码 web.xml只要的功能就是拦截用户的请求其多出的代码如下: <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class&

简述23种软件设计模式

简述23种软件设计模式 一.设计模式分类 总体来说设计模式分为三大类: 五种创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 七种结构型模式:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 十一种行为型模式:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 二.设计模式概述 创建型模式 1.工厂方法模式 工厂方法模式的创建是因为简单工厂模式有一个问题,在简单工厂模式

STM32大文件分块校验CRC

一.CRC校验的使用    STM32内置CRC计算单元,节约了软件计算的时间.在软件开发中,可以为firm追加4字节的CRC校验码到生成的BIN文件最后位置,这个CRC码就是全部代码区域数据的CRC校验值. 在代码执行之前,可以校验CRC是否通过,不通过则说明代码完整性出现错误.尤其在代码IAP升级应用中非常有用,用CRC校验来决定是否更新代码. 但是有一个问题是,常见的CRC校验的主要2个输入参数分别是数据指针和数据长度,这就要求一次把数据传给计算单元.但是代码BIN文件动辄几十KB到几百K

Spark 学习: spark 原理简述与 shuffle 过程介绍

Spark学习: 简述总结 Spark 是使用 scala 实现的基于内存计算的大数据开源集群计算环境.提供了 java,scala, python,R 等语言的调用接口. Spark学习 简述总结 引言 1 Hadoop 和 Spark 的关系 Spark 系统架构 1 spark 运行原理 RDD 初识 shuffle 和 stage 性能优化 1 缓存机制和 cache 的意义 2 shuffle 的优化 3 资源参数调优 4 小结 本地搭建 Spark 开发环境 1 Spark-Scal

JavaScript事件简述

事件简述 技术一般水平有限,有什么错的地方,望大家指正. 事件是我们平时经常使用,这次就来了解一下事件.首先我们要明确几个概念,JavaScript是单线程,浏览器是多线程的,并不是所有的事件处理函数都是异步的. 前两个我们都知道,这里我们主要介绍第三个.事件处理函数可以在将来执行,只要满足触发条件就会执行事件处理函数.我们经常看到的一个场景,在循环中为一组元素绑定事件,弹出它在这组元素中的索引: <button>button1</button><button>butt

简述Python中&quot;_&quot;的使用常识

0. 背景 Python里面的下划线"_"使用频率明显比其他主流语言要多的多,而且在Python中,它也有自己独到的用处.本文主要简述:下划线在python中的使用常识. 1. 单下划线-将名称封装到类中 如果想将类中的"私有"数据封装到类的实例上,但是又需要考虑到Python缺乏对属性的访问控制问题.与其依赖语言特性来封装数据,Python程序员们更期望通过特定的命名规则来表达出对数据和方法的用途. 第一个规则是任何以单下划线(_)开头的名字应该总是被认为只属于内

TCP/IP协议工作原理简述

TCP/IP协议工作原理简述 Table of Contents 1 概要 2 应用层 3 传输层 4 网络层 5 链路层 1 概要 协议是什么?协议是一组为完成特定需求或功能而定义的标准通讯格式.协议是服务于具体需求或功能的,它不能独立存在. 制定TCP/IP协议的目的是为了解决主机互联以及互联的主机上的应用通讯的问题.TCP/IP协议共有四层:应用层.传输层.网络层.链路层.应用层实际就是我们的应用程序,对于非具体应用而言这一层的协议是未定义的,需要我们自己根据我们具体的业务模型来制定.传输