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计算速度,可以采用查表法进行优化。
页: 1 2 [3] 4
查看完整版本: ‌在N32单片机上实现CRC校验