[STM32L0] crc 计算结果是 0

[复制链接]
342|61
Stahan 发表于 2026-10-14 17:15 | 显示全部楼层
先检查一下你的数据是否真的按32位对齐,特别是最后一个字节0x16,它可能被错误地解释为0x0000。如果数据对齐没问题,试试手动设置CRC寄存器的初值和多项式,看看是否能得到期望的结果。
cemaj 发表于 2026-10-14 20:44 | 显示全部楼层
可以考虑使用软件 CRC 实现,以完全控制算法参数。
埃娃 发表于 2026-10-15 12:54 | 显示全部楼层
检查一下数据格式和多项式配置,可能多项式选错或数据字节序问题。
biechedan 发表于 2026-10-15 14:53 | 显示全部楼层
小端模式下CRC输入数据字节顺序如何调整?
febgxu 发表于 2026-10-15 15:52 | 显示全部楼层
初始值设置是否影响结果?              
uptown 发表于 2026-10-15 18:30 | 显示全部楼层
反转模式是否需要调整?              
OceanDepths 发表于 2026-10-16 10:34 | 显示全部楼层
看你的代码,问题可能出在初始化的CRC值上。你设置成了0,而STM32的CRC-32默认多项式是0x04C11DB7,如果输入全为0,确实计算结果是0。建议用0xFFFFFFFF作为初始值试一下。
modesty3jonah 发表于 2026-10-16 21:52 | 显示全部楼层
数据长度是否与计算需求匹配?              
maudlu 发表于 2026-10-17 12:12 | 显示全部楼层
在某些特定的多项式和初始值组合下,如果输入数据经过特定排列,结果可能为 0,但对于你给出的随机数据,概率极低。
benjaminka 发表于 2026-10-17 13:00 | 显示全部楼层
正确理解 HAL_CRC_Calculate 的行为或 CRC 外设的状态。
elsaflower 发表于 2026-10-17 13:41 | 显示全部楼层
CRC结果为0最可能的原因是输入数据长度不足或初始值与数据抵消。
AloneKaven 发表于 2026-10-17 16:30 | 显示全部楼层
数据格式对不上,你用32位字计算,数据却是16位,试试用16位字计算。
plsbackup 发表于 2026-10-17 17:41 | 显示全部楼层
CRC结果为0的直接原因是数据长度与实际参与计算的元素不匹配,导致CRC计算读取了无效数据。
sanfuzi 发表于 2026-10-17 22:42 | 显示全部楼层
按字节计算CRC时长度参数应如何设置?
ForgottenRealm 发表于 2026-10-18 13:00 | 显示全部楼层
先检查数据格式对齐,再确认CRC寄存器未重置。如果还是0,试试软件CRC算法对比。
jtracy3 发表于 2026-10-18 13:13 | 显示全部楼层
CRC 外设时钟未使能,导致硬件未工作,读取寄存器始终返回默认值 0。
yeates333 发表于 2026-10-18 14:42 | 显示全部楼层
调试器显示错误或变量优化              
hudi008 发表于 2026-10-19 17:10 | 显示全部楼层
明确指定参与计算的元素数量,确保数组长度 ≥ 实际计算长度。
eefas 发表于 2026-10-20 11:31 | 显示全部楼层
虽然数组声明为 uint32_t,但你只提供了 ‌8个‌ 初始值。更重要的是,你在调用时传入的长度参数是 5。
Bowclad 发表于 2026-10-20 19:48 | 显示全部楼层
多试几个不同的多项式和初始值,看看结果,有时候硬件实现和标准实现有细微差异。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部