Проблема понимания алгоритма контрольной суммы - PullRequest
0 голосов
/ 05 марта 2019

Протокол для BM62 Bluetooth-модуля

1 Ответ

1 голос
/ 06 марта 2019

Идея состоит в том, что вам нужно придумать 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, и это также было бы правильным способом проверки правильности.

...