STM32 CRC硬件单元

本文介绍了STM32的CRC硬件单元,指出其使用的CRC校验算法与主流CRC32算法不同,虽然形式类似CRC-32/MPEG-2,但计算方式存在差异。文章提供了CRC在线校验网站,并分享了STM32官方文档中的CRC计算单元C语言描述,以及针对STM32的C#代码实现,确保与STM32硬件计算结果一致。
摘要由CSDN通过智能技术生成

STM32 CRC硬件单元

STM32采用的CRC校验模块使用的校验算法与主流CRC32校验算法不同。

下面是一个CRC在线校验网站:
http://www.ip33.com/crc.html

主流32位校验算法包括CRC-32 和 CRC-32/MPEG-2两种,而STM32采用的校验算法与这两种都不同,尽管形式上很像CRC-32/MPEG-2,但STM32是32为逐位计算的,而主流算法都是按字节计算的。

STM32CRC权值为0x4C11DB7,初始值为0xFFFFFFFF,,输入值和输出值不需要反转,输出值不需要异或运算,形式和 CRC-32/MPEG-2相同,但计算结果却不同。

以下为官方文档中给出的CRC计算单元的C语言描述:

    DWORD dwPolynomial= 0x04c11db7;
    DWORD cal_crc(DWORD *ptr, int len)
    {
       DWORD xbit;
       DWORD data;
       DWORD CRC= 0xFFFFFFFF; // init
       while (len--)
       {
           xbit=1 << 31;
           data= *ptr++;
           for (int bits= 0; bits< 32; bits++)
           {
               if(CRC & 0x80000000)
               {
                    CRC <<= 1;
           
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值