【问题标题】:How to use CRC32 generator for an effective CRC16?如何使用 CRC32 生成器生成有效的 CRC16?
【发布时间】:2018-07-26 22:49:33
【问题描述】:

我正在用 C 语言编写嵌入式 STM32F105 微控制器。我需要实现一个 CRC 例程来验证无线发送的消息。

微控制器的硬件中内置了一个 CRC32 生成器。您一次输入 4 个字节,它会计算 CRC,而无需额外的处理器开销。它是不可配置的,使用以太网 CRC32 多项式。

我想使用这个硬件 CRC 生成器,但我只想为每个数据包添加两个字节(而不是四个)。数据包的大小将在 4 到 1022 字节之间变化。

我可以简单地使用 CRC32 的两个高(或低)字节吗?或者我是否可以一次向 CRC 模块提供 2 个字节,高字节为零?

还有其他方法可以得到我想要的东西吗?

【问题讨论】:

    标签: checksum crc crc32 crc16


    【解决方案1】:

    对于大多数应用,当然,您可以只使用 CRC-32 的低两个字节作为 16 位校验值。但是,这不会是 16 位 CRC。在检查消息中的严重错误时,它将与任何其他哈希值一样好。

    对于 CRC 提供的短数据包长度中的少量比特错误,它不会具有某些理想的属性。

    向 CRC 生成器输入零是没有意义的。继续为每条指令提供四个字节的数据。

    【讨论】:

    • 谢谢马克。低两个字节会比高两个字节更强大吗?还是没关系?
    • 没关系。
    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 2017-01-31
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    相关资源
    最近更新 更多