【问题标题】:Trouble Understanding a Checksum Algorithm无法理解校验和算法
【发布时间】:2019-03-05 19:59:18
【问题描述】:

BM62蓝牙模块协议

我只是有一个关于校验和算法如何适用于特定蓝牙模块 (BM62) 的简单问题。上图解释了 UART 协议,并解释了校验和规则,但我无法理解它的实际工作原理,并且似乎无法猜测图中示例中给出的校验和值。

【问题讨论】:

    标签: math binary checksum crc


    【解决方案1】:

    这个想法似乎是你需要想出CHKSUM 这样LENH + LENL + OPCODE + PARAM + CHKSUM 在最低有效字节中有0。所以,让我们以 8 位(或模 256)求和:

    LENH + LENL + OPCODE + PARAM + CHKSUM = 0

    CHKSUM = -(LENH + LENL + OPCODE + PARAM)

    IOW,CHKSUM = -(0 + 2 + 1 + 0) = -3 = 0xFD。 (请记住,所有这些都是在 8 位中完成的)。

    您可以验证CHKSUM 是否满足要求(您现在正在使用 16 位执行所有操作):

    0 + 2 + 1 + 0 + 0xFD = 0x100

    最低有效字节为 0。如果我们也以 8 位执行此操作,我们将得到 0 而不是 0x100,这也是检查正确性的有效方法。

    【讨论】:

      猜你喜欢
      • 2021-05-11
      • 2023-03-22
      • 1970-01-01
      • 2020-08-11
      • 2012-10-16
      • 1970-01-01
      • 2022-07-29
      • 2016-11-23
      • 1970-01-01
      相关资源
      最近更新 更多