crc32的使用方法

STM32系列
pyboard相关
回复
头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

crc32的使用方法

#1

帖子 shaoziyang »

STM32F4支持硬件CRC32功能,但是在以前micropython版本中并没有提供crc32计算功能。在新v1.14版本的STM32固件中,已经默认开启了CRC32计算功能(通过定义 #define MICROPY_PY_UBINASCII_CRC32  (1)),它的使用方法是:

代码: 全选

from ubinascii import crc32

print(hex(crc32('123456789')))
print(hex(crc32(b'\x01\x02\x03\x04')))
运行结果是:
0xcbf43926
0xb63cfbcd
大家可以将计算结果和其它软件进行对比,比如CRC校验工具在线计算

注意
  • CRC32功能目前只在STM32F4/F7/H7/RP2上可以使用,其它硬件上暂时还不支持。
  • 只有STM32F7/H7可以自定义多项式。
 
 
 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: crc32的使用方法

#2

帖子 shaoziyang »

使用硬件计算CRC速度非常快,相比软件方式要快上数百倍。下面计算100次1024字节的CRC32校验,用时约18ms。

代码: 全选

from ubinascii import crc32
from time import ticks_us, ticks_diff

buf = bytearray(1024)

t0 = ticks_us()
for i in range(100):
    crc32(buf)
t1 = ticks_us()

print(ticks_diff(t1, t0), 'us')
4021661486
4021661486
4021661486
4021661486
4021661486
17935 us

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章