软件实现STM32硬件CRC算法

  STM32系列MCU自带CRC与标准CRC存在差别,大多情况下,应用程序与STM32通信往往需要用到CRC校验时,如固件升级、通信可靠性校验,此时需要统一CRC标准。为了STM32端可以充分利用自身硬件资源,STM32可以利用自带硬件CRC,应用程序端(如上位机、服务器、云等)可以通过软件实现STM32硬件CRC算法。


uint32_t soft_crc32_st(uint32_t *pbuf, uint32_t size)
{
    const uint32_t st_const_value = 0x04c11db7;
    uint32_t	crc_value = 0xffffffff;
    uint32_t	xbit;
    uint32_t 	bits;
    uint32_t	i;

    for(i = 0;i < size;i ++)
    {
        xbit = 0x80000000;
        for (bits = 0; bits < 32; bits++)
        {
            if (crc_value & 0x80000000)
            {
                crc_value <<= 1;
                crc_value ^= st_const_value;
            }
            else
            {  
            	crc_value <<= 1;
            }
            if (pbuf[i] & xbit)
            {
            	crc_value ^= st_const_value;
            }    
            xbit >>= 1;
        }
    }
    return crc_value;
}

参考

【1】https://blog.csdn.net/lan120576664/article/details/47156067

【2】https://blog.csdn.net/kezunhb/article/details/82729696

posted @ 2019-12-09 23:47  Acuity  阅读(473)  评论(0编辑  收藏  举报