ZHCU813A April 2021 – February 2022 DLPC6540
响应数据包是 DLP 控制器应答主机的格式。写入响应和读取响应都遵循响应数据包格式。对于写入命令,只有在命令标头中设置了“已请求应答”位时才会发送响应数据包。
DLP 控制器将响应标头匹配为与传入命令数据包标头相同的格式。但有一个例外:如果响应数据包用于需要可变数据字节数的命令,则响应数据包将始终包含长度字段(无论命令数据包是否提及长度)。另请参阅有关可变大小命令的Topic Link Label16.6部分。
与命令数据包的定义类似,粗体字段表示始终存在的字段。
字段 | 大小(字节) | 说明 |
---|---|---|
Header(标头) | 1 | 请参阅下面的表 16-4 |
Length(长度) | 2 或 0(可选,根据标头中的“数据长度存在”字段而定) | 此字节之后的命令数据长度(以字节为单位)。校验和不包含在长度中。 例如 length=10 表示在这个长度字段之后有 10 个字节的数据。应先发送长度 LSB,然后是 MSB。 |
Data(数据) | 0-511(整个消息中包括标头和校验和在内最多 512 个字节) |
响应数据字节取决于命令代码。 如果设置了标头中的错误位,则将只有一个数据字节。此字节将指示导致命令无应答的错误代码。表 16-5 列出了错误代码定义。 |
Checksum(校验和) |
1 或 0 (可选,根据标头字节的“校验和存在”字段而定) |
消息中所有字节的校验和(包括标头字节)。Fletcher 校验和。 |
位 | 字段名称 | 值 |
---|---|---|
0:2 | Destination(目标) | 请参阅 Topic Link Label16.3 |
3 | Reserved(保留) | 不适用 |
4 | Datalength Present(数据长度存在) | 1 = 扩展标头中存在长度字段 0 = 无长度字段 |
5 | Checksum Present(校验和存在) | 1 = 数据字节后存在校验和 0 = 不存在校验和 |
6 | Error(错误) | 1 = 错误。第一个数据字节将包含错误代码,此代码可提供有关失败的更多信息 0 = 无错误 |
7 | Busy(繁忙) | 1=系统繁忙/响应未准备就绪;0=响应准备就绪。仅适用于基于 I2C 的通信 |
错误代码 | 含义 |
---|---|
1 | 无效目标 |
2 | 无效/未知命令 |
3 | 无效长度 |
4 | 分配的缓冲区不足以存储命令 |
5 | 大小可变的命令缺少长度信息 |
6 | 校验和不匹配 |
7 | 控制器不兼容,无法运行应用程序 |
8 | 不支持读取 |
9 | 不支持写入 |
10 | 执行失败 |
11 | 无效的响应长度 |
12 | 缓冲区已满 |
如上面的命令标头说明中所述,写入响应是可选项。如果请求了响应,则必须在相应的命令数据包之后立即读取响应(包括写入响应和读取响应)。一旦 DLP 控制器从主机接收到另一组字节,命令的响应就会丢失。