STM32 CRC-32 Calculator Unit
AN4187 - Using the CRC peripheral in the STM32 family
At start up, the algorithm sets CRC to the Initial_Crc XOR with the Input_Data.
Once CRC MSB is equal to one, the algorithm shifts CRC one bit to the left and XORs it with the POLY.
Otherwise, it only shifts CRC one bit to the left.
Figure 3 shows the step-by-step algorithm execution for the following conditions:
– Input_Data = 0xC1
– POLY = 0xCB
– Initial_Crc = 0xFF
All STM32 devices implement a CRC peripheral as described in Section 1.1.
The CRC calculation unit has a single 32-bit read/write data register (CRC_DR).
It is used to input new data (write access) and hold the result of the previous CRC calculation (read access).
Each write operation to the data register creates a combination of the previous CRC value (stored in CRC_DR) and the new one.
Figure 4. CRC calculation unit block diagram
To compute a CRC of any supported data, you must follow these steps:
1. Enable the CRC peripheral clock via the RCC peripheral.
2. Set the CRC Data Register to the initial CRC value by configuring the Initial CRC value register (CRC_INIT).(a)
3. Set the I/O reverse bit order through the REV_IN[1:0] and REV_OUT bits respectively in CRC Control register (CRC_CR).(a)
4. Set the polynomial size and coefficients through the POLYSIZE[1:0] bits in CRC Control register (CRC_CR)
and CRC Polynomial register (CRC_POL) respectively.(b)
5. Reset the CRC peripheral through the Reset bit in CRC Control register (CRC_CR).
6. Set the data to the CRC Data register.
7. Read the content of the CRC Data register.
8. Disable the CRC peripheral clock.
In firmware package, the CRC_usage example runs the CRC checksum code computing an array data (DataBuffer) of 256 supported data type.
For a full description, please refer to the file Readme.txt in the CRC_usage folder.
a. Applicable only for STM32F0xx and STM32F3xx devices
b. Applicable only for STM32F3xx devices
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2014-06-29 AC、HC、AHC、ACT、LS的区别
2013-06-29 both, either, neither的用法