ZHCUCK3A August 2024 – November 2024 DLPC8445
响应数据包是控制器应答主机的格式。写入响应和读取响应都遵循响应数据包格式。对于写入命令,只有在命令标头中设置了“已请求应答”位时才会发送响应数据包。D控制器将响应标头匹配为与传入命令数据包标头相同的格式。但有一个例外:如果响应数据包用于需要可变数据字节数的命令,则响应数据包将始终包含长度字段(无论命令数据包是否提及长度)。有关可变大小命令的信息,请参阅可变数据大小支持 部分。
与命令数据包的定义类似,粗体字段表示始终存在的字段。
| 字段 | 大小(字节) | 说明 |
|---|---|---|
| 接头 | 1 | 请参阅下面的表 5-4 |
| 长度 | 2 或 0(可选,根据标头中的“预设的数据长度”字段而定) | 此字节之后的命令数据长度(以字节为单位)。校验和不包含在长度中。 例如,长度设置为 10 表示在这个长度字段之后有 10 个字节的数据。应先发送长度 LSB,然后是 MSB。 |
| 数据 | 0-511(整个消息中包括标头和校验和在内最多 512 个字节) | 响应数据字节取决于命令代码。如果设置了标头中的错误位,则将只有一个数据字节。此字节将指示导致命令无应答的错误代码。下面的表 5-5 列出了错误代码定义。 |
| 校验和 | 1 或 0(可选,根据标头字节的“存在校验和”字段而定) | 消息中所有字节的校验和(包括标头字节)(Fletcher 校验和) |
| 位 | 字段名称 | 值 |
|---|---|---|
| 0:2 | 目标 | 适用命令的数字目标代码。 |
| 3 | 保留 | 不适用 |
| 4 | 存在数据长度 | 1 = 扩展标头中存在长度字段 0 = 无长度字段 |
| 5 | 存在检验和 | 1 = 数据字节之后存在校验和 0 = 不存在校验和 |
| 6 | 错误 | 1 = 错误。第一个数据字节将包含错误代码,此代码可提供有关失败的更多信息 0 = 无错误 |
| 7 | 忙 | 1 = 系统繁忙/响应未就绪 0 = 响应就绪 仅适用于基于 I2C 的通信 |
| 错误代码 | 含义 |
|---|---|
| 1 | 无效目标 |
| 2 | 无效/未知命令 |
| 3 | 无效长度 |
| 4 | 分配的缓冲区不足以存储命令 |
| 5 | 大小可变的命令缺少长度信息 |
| 6 | 校验和不匹配 |
| 7 | 超时错误 |
| 8 | 不支持读取 |
| 9 | 不支持写入 |
| 10 | 执行失败 |
| 11 | 无效的响应长度 |
| 12 | 缓冲区已满 |
下面提供了读取 LED 启用(请参阅节 9.6.2)的响应数据包示例:
