pmp
发表于 2025-1-11 17:37
在安全敏感的应用中,确保CRC校验不会成为系统的安全漏洞。
sanfuzi
发表于 2025-1-11 18:16
如果单片机有硬件CRC模块,初始化CRC模块,设置初始值和多项式。
如果是软件实现,初始化一个足够大的寄存器(通常是32位或64位)来存储CRC值。
pixhw
发表于 2025-1-11 19:11
如果使用 N32 单片机的标准库或 HAL 库来实现 CRC 校验,要熟悉相关的函数接口和调用方法。注意函数参数的传递顺序、数据类型和取值范围等,确保正确调用 CRC 计算函数。若自行编写 CRC 计算代码,要保证算法的正确性和代码的规范性
hearstnorman323
发表于 2025-1-11 19:56
如果是通信应用,发送方会附加CRC值,接收方需要对接收到的数据和CRC值进行相同的CRC计算,并将计算结果与接收到的CRC值进行比较,以验证数据的完整性。
robincotton
发表于 2025-1-11 20:15
接收端收到数据帧后,使用相同的CRC生成多项式进行模2除法运算。
如果余数为0,则说明数据帧在传输过程中没有出错;否则,说明出现了差错,需要请求重发。
51xlf
发表于 2025-1-11 20:37
多项式的选择对CRC校验的检错能力有重要影响。不同的多项式具有不同的检错特性,因此需要根据具体的应用场景和需求进行选择。
wwppd
发表于 2025-1-11 21:01
对于大文件或大量数据,分段处理可以减少内存占用和提高计算速度。
plsbackup
发表于 2025-1-11 21:24
CRC校验中有两个关键点:一是预先确定一个发送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。
weifeng90
发表于 2025-1-11 21:41
现在很多MCU都是自带硬件CRC
iyoum
发表于 2025-1-11 21:47
在发送数据之前,需要在数据帧后面附加一定数量的0(数量取决于CRC生成多项式的位数),以构成一个新的数据帧。
然后,使用模2除法将这个新的数据帧除以CRC生成多项式,得到的余数即为CRC校验码。
地瓜patch
发表于 2025-1-22 08:29
计算和查表两种方法
明日视界
发表于 2025-2-1 16:57
每个crc算法都有一个相应的多项式,您需要正确理解和实现。
jobszheng
发表于 2025-2-1 23:50
楼上这几位都说了个啥啊
IntelCore
发表于 2025-2-2 13:53
处理多字节数据时,需要注意endian(大端或小端)。
PreWorld
发表于 2025-2-4 23:18
在N32单片机上实现CRC校验,可以通过硬件加速器或软件编程实现。软件编程时,按照CRC算法规则,计算数据的校验和并输出。关注寄存器和位操作,确保准确无误。
caigang13
发表于 2025-2-5 11:13
现在很多MCU内部都自带了硬件CRC单元,能够提升计算效率。
suncat0504
发表于 2025-2-25 22:40
不同的CRC算法使用不同的多项式。
suncat0504
发表于 2025-2-25 22:41
什么场景下需要使用CRC?
地瓜patch
发表于 2025-2-27 12:06
谢谢分享
物联万物互联
发表于 2025-2-28 19:22
对于需要快速处理时间的应用,为提高CRC计算速度,可以采用查表法进行优化。