能举例说明它的校验和是怎么算的吗?1.NFC初始化赋值(MCU上电后立即调用) 注:校验和:包长度开始一直到有效负载的字节求和取余数,(取求和后的低八位) MCU => 语音模组 序号 字段名称 字节长度(Byte) 内容说明 1 固定包头 2 0xAA55 2 包长度 2 Len(命令…校验和) 3 命令 1 0xA1 4 包序号 1 0x## 5 flags 2 0x0000 6 PRODUCT_PID_DATA0 1 0x##,IOT给的产品PID第一个字节ASCII码 7 PRODUCT_PID_DATA1 1 0x##,IOT给的产品PID第二个字节ASCII码 8 PRODUCT_PID_DATA2 1 0x##,IOT给的产品PID第三个字节ASCII码 9 PRODUCT_PID_DATA3 1 0x##,IOT给的产品PID第四个字节ASCII码 10 NFC_RECVDATA_LENGTH 1 0x##, 接收数据区大小,不含F0123456 含checkSUM 11 NFC_SENDDATA_LENGTH 1 0x##, 发送数据区大小,值为功能数*2 12 校验和 1 0x##
时间: 2024-04-13 08:26:02 浏览: 156
代码_单片机_源码
让我们以一个具体的例子来说明如何计算校验和。假设我们有以下数据包:
固定包头:0xAA55
包长度:0x0015
命令:0xA1
包序号:0x01
flags:0x0000
PRODUCT_PID_DATA0:0x41
PRODUCT_PID_DATA1:0x42
PRODUCT_PID_DATA2:0x43
PRODUCT_PID_DATA3:0x44
NFC_RECVDATA_LENGTH:0x07
NFC_SENDDATA_LENGTH:0x04
现在,我们来计算校验和:
首先,将从包长度开始一直到有效负载的字节进行求和:
0x0015 + 0xA1 + 0x01 + 0x0000 + 0x41 + 0x42 + 0x43 + 0x44 + 0x07 + 0x04 = 0x1F6
然后,取求和结果的低八位(即和的模256):
0x1F6 % 256 = 0xF6
最后,将校验和填充到校验和字段中:
校验和:0xF6
因此,在这个例子中,校验和的计算结果是0xF6。实际应用中,发送方会将校验和填充到数据包中,接收方在接收到数据包后会执行相同的校验和计算,并与发送方的校验和进行比较以验证数据包的完整性。
阅读全文