[CW32F030系列]

【CW32F030CxTx StartKit测评】4、牛x的CW32F030支持10种CRC算法

[复制链接]
1399|56
手机看帖
扫描二维码
随时随地手机跟帖
freeelectron|  楼主 | 2022-7-27 09:26 | 显示全部楼层 |阅读模式
cw, ar, rc
本帖最后由 freeelectron 于 2022-7-27 09:28 编辑

1、关于CRC
循环冗余校验(CRC)主要应用于核实数据传输或数据存储的正确性和完整性。
通常都是采用软件来实现CRC,本文体验一下硬件CRC。

2、CW32F030的CRC
CW32F030内部集成CRC计算单元,支持采用多种 CRC 算法对输入数据进行 CRC 计算。
• 3 种输入数据位宽:8bit、16bit、32bit
• 3 种多项式
    CRC-16 多项式 1:x 16 + x 15 + x 2 + 1
    CRC-16 多项式 2:x 16 + x 12 + x 5 + 1
    CRC-32 多项式:x 32 + x 26 + x 23 + x 22 + x 16 + x 12 + x 11 + x 10 + x 8 + x 7 + x 5 + x 4 + x 2 + x + 1
• 10 种常用的算法
基于多项式,初始值,结果异或值,输入 / 输出反转的组合
cw32-crc.jpg

3、代码测试
uint8_t  Raw08[8] = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 };

void CrcTest(void)
{
        RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_CRC, ENABLE);

        uint32_t res;
        
    res = CRC16_Calc_8bit(  CRC16_IBM, Raw08, 8 );
        printf("\r\nCRC16_IBM:0x%04X\r\n",res);       //E16C

    res = CRC16_Calc_8bit(  CRC16_MAXIM, Raw08, 8 );
        printf("\r\nCRC16_MAXIM:0x%04X\r\n",res);         //1E93

    res = CRC16_Calc_8bit(  CRC16_USB, Raw08, 8 );  
        printf("\r\nCRC16_USB:0x%04X\r\n",res);           //15D3

    res = CRC16_Calc_8bit(  CRC16_MODBUS, Raw08, 8 );
        printf("\r\nCRC16_MODBUS:0x%04X\r\n",res);        //EA2C

    res = CRC16_Calc_8bit(  CRC16_CCITT, Raw08, 8 );  
        printf("\r\nCRC16_CCITT:0x%04X\r\n",res);         //868F

    res = CRC16_Calc_8bit(  CRC16_CCITTFALSE, Raw08, 8 );   
        printf("\r\nCRC16_CCITTFALSE:0x%04X\r\n",res);    //5CFF

    res = CRC16_Calc_8bit(  CRC16_X25, Raw08, 8 );   
        printf("\r\nCRC16_X25:0x%04X\r\n",res);           //05FC

    res = CRC16_Calc_8bit(  CRC16_XMODEM, Raw08, 8 );  
        printf("\r\nCRC16_XMODEM:0x%04X\r\n",res);        //6DC1

    res = CRC32_Calc_8bit(  CRC32_DEFAULT, Raw08, 8 );  
        printf("\r\nCRC32_DEFAULT:0x%08X\r\n",res);       //8BA925F7

    res = CRC32_Calc_8bit(  CRC32_MPEG2, Raw08, 8 );  
        printf("\r\nCRC32_MPEG2:0x%08X\r\n",res);         //7FAE93CC
}
4、结果验证
crc_res.png

5、第三方验证工具
经常使用的一个工具,支持各种校验,通过这个计算出来的与单片机计算出来的一致。
crc_cal.png


使用特权

评论回复
七毛钱| | 2022-8-1 10:16 | 显示全部楼层
支持10种CRC方法,心源的这个板子确实牛

使用特权

评论回复
caigang13| | 2022-8-2 19:56 | 显示全部楼层
确实不错啊

使用特权

评论回复
chenjun89| | 2022-8-3 07:47 | 显示全部楼层
支持10种CRC算法,确实不错啊。

使用特权

评论回复
ynndmalh21| | 2022-8-5 13:03 | 显示全部楼层
确实很厉害的。

使用特权

评论回复
onlycook| | 2022-8-9 16:55 | 显示全部楼层
厉害厉害,国产芯片雄起

使用特权

评论回复
yangxiaor520| | 2022-8-11 07:51 | 显示全部楼层
还好吧,支持CRC功能的基本上都支持。

使用特权

评论回复
deliahouse887| | 2022-8-16 20:02 | 显示全部楼层
stm32有crc的代码  

使用特权

评论回复
kmzuaz| | 2022-8-16 21:48 | 显示全部楼层
如何校验呢?   

使用特权

评论回复
beacherblack| | 2022-8-16 22:21 | 显示全部楼层
10种CRC算法棒

使用特权

评论回复
sesefadou| | 2022-8-20 13:33 | 显示全部楼层
这个对数据计算量有要求吗  

使用特权

评论回复
louliana| | 2022-8-20 20:15 | 显示全部楼层
计算的速度快吗   

使用特权

评论回复
bestwell| | 2022-9-8 08:48 | 显示全部楼层
CRC16的C语言算法  

使用特权

评论回复
sesefadou| | 2022-9-8 09:15 | 显示全部楼层
硬件的CRC吗   

使用特权

评论回复
pmp| | 2022-9-8 09:35 | 显示全部楼层
modbus中如何计算CRC效验  

使用特权

评论回复
youtome| | 2022-9-8 10:54 | 显示全部楼层
是硬件CRC吗   

使用特权

评论回复
linfelix| | 2022-9-8 11:53 | 显示全部楼层
10种?  

使用特权

评论回复
朝生| | 2022-9-8 14:09 | 显示全部楼层
每种CRC算法都有什么区别?

使用特权

评论回复
albertaabbot| | 2022-9-8 16:28 | 显示全部楼层
几种CRC16算法   

使用特权

评论回复
juliestephen| | 2022-9-8 17:20 | 显示全部楼层
计算的速度怎么样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:stm32/LoRa物联网:304350312

65

主题

786

帖子

10

粉丝