ZHCUCK3A August 2024 – November 2024 DLPC8445
命令数据包定义了将命令发送到控制器时需遵循的数据包格式。始终存在的字段以粗体显示,可选字段以正常字体显示。
关于存在哪些字段的定义基于 1 个字节的标头字段。如果命令被定义为具有可变数据大小,则必须具有长度字段。
| 字段 | 大小(字节) | 说明 |
|---|---|---|
| 接头 | 1 | 请参阅下面的表 5-2 |
| 操作码 | 1 | 命令操作码 |
| 长度 | 2 或 0,基于标头中的存在数据长度字段 |
此字节之后的命令数据长度(以字节为单位)。校验和不包含在长度中。 例如,长度设置为 10 表示在这个长度字段之后有 10 个字节的数据。应先发送长度 LSB,然后是 MSB。 |
| 数据 | 0-511(整个消息中包括标头和校验和在内总计最多 512 个字节) | 参数/数据 |
| 校验和 | 1 或 0(可选,作为标头的存在校验和字段) |
消息中所有字节的校验和(包括标头字节)。Fletcher 校验和实现方式如下: uint32 SimpleChecksum = 0; uint32 SumofSumChecksum = 0; uint08 *Addr = (uint08 *) StartAddress; while (NumBytes--) { SimpleChecksum += *Addr++; SumofSumChecksum += SimpleChecksum; } |
| 位 | 字段名称 | 值 |
|---|---|---|
| 0:2 | 目标 | 适用命令的数字目标代码 |
| 3 | 操作码长度 | 0 = 一字节操作码 |
| 4 | 存在数据长度 | 1 = 扩展标头中存在长度字段 0 = 不存在长度字段 |
| 5 | 存在检验和 | 1 = 数据字节之后存在校验和 0 = 不存在校验和 |
| 6 | 已请求回复 | 1 = 器件将向每个写入命令发送一个响应数据包。此字段仅适用于写入命令。 0 = 不针对写入命令发送响应数据包 |
| 7 | 读取命令 | 1 = 读取命令 0 = 写入命令 |
下面提供了读取 LED 启用命令(请参阅节 9.6.2)的命令数据包示例:
