你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 CRC 使用详解

[复制链接]
STMCU小助手 发布时间:2022-8-9 00:02
1. 概述% P: ~" E. i' s, \* q
在 STM32 众多外设中,CRC 是一个不起眼的小外设,以至于在使用的时候会忽略掉。最近在学习 Class B 的时候,CRC 是 Class B 应用需要用到的外设,用来生成 ROM校验码,在阅读 Class B 相关文档 CRC 的部分的时候,我出现了理解上的一些错误,由此可见,CRC 外设虽小,理解其细节,也是需要时间的,本文的目的是通过理解 CRC 外设的使用,用文字的方式记录下来,给后来使用者提供参考。
3 Y6 r* F0 m5 f6 I% s; [2 g7 [
( D5 C! a) i/ `9 v& K; A

9 I& S  {' r% C2. 问题描述% h7 L( D8 Z6 l
在阅读 RM0440 Reference Manual 文档中 CRC 章节的时候,文中提到了对输入数据和输出数据进行 bit-reversal 的操作,如下图所示,开始以为是按位取反的操作,但是按照文中给的例子,按位取反的结果与实例不一致,才觉得有必要深入理解一下。带着问题,
, ^/ `3 H' a9 r8 Q% e- S+ U本文对 CRC 校验用到的概念以及校验方法进行较为详细的介绍。
+ m" U, S5 l6 T

% f: d, P, N3 M# w* e SE)KNAOF2_WB~O5S1MJQ[AD.png 2 A1 b- J- R& o

  b" p! \. h6 I( D2 Q8 k

4 m# q2 t/ E$ l( ~1 f4 t5 A" \按照我最初的理解,输入数据 0x1A2B3C4D 按位取反的值都应该是 0xE5D4C3B2,很显然,这个理解是不对的。Bit-reversal 的正确理解是按位高低位反过来,所以按照字节,半字,字为单元进行操作得到的数据是不一样的,这个功能实际作用是解决不同硬件字节序的问题。
" I4 S' {9 Q/ a3 {' e' [1 ^' P9 R$ e
3. CRC 校验算法原理
6 [( y. e1 d  l, `( y. _在 CRC 校验会用到多项式和模 2 运算的概念,这里先介绍一下什么是多项式和模 2 运算。 多项式是由多个单项式组成的代数式。任何一个二进制数,都可以与一个系数仅为 0或者 1 的多项式对应。
+ f5 J: K7 j& r9 K比如二进制数 1010111 对应的多项式为 X6 + X4 + X2 + X1 + 1.- L" j. U9 J& ~5 {; z0 N" |
下面要谈的模 2 除法其实就是异或操作,简单来说就是同为 0,异为 1,不用进位也不用借位。不妨一起看看模 2 除法的一个具体实例。
, E% u9 v6 E$ I# D" i6 L假设被除数 X=11110000B,除数 P=1101B,那么进行模 2 除法的步骤和结果如下。* ]& j' a" K6 _  R* T# @

+ n* P) P* L  h! C

& [) L7 j. ^6 J+ F H3HFVB)2%XS`[]IV5(2JFW5.png & z& ?0 @* u( p- |! u
9 Q: f; B0 ^9 `9 ]& D6 V4 K/ X

: \) m/ F( w6 g完整版请查看:附件( F. y( z+ x, A  T, l
( t+ t( e* W! w9 N
4 m( j  e4 L: @4 z. s. ]3 x
* E( ]. d+ p7 i: \

LAT1098STM32CRC使用详解_v1.0.pdf

下载

372.43 KB, 下载次数: 17

赞 收藏 评论0 发布时间:2022-8-9 00:02

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版