ZHCU951A March 2018 – April 2022
所有命令都作为数据包发送。只有主器件可以启动数据包事务。命令数据包由 START_CHARACTER、2 字节标头(命令字节、长度)、可变数据有效负载以及校验和字节组成。下文各子节对此进行了解释。
图 1-3 中显示了由主器件发送的 SPI 数据包结构。
字节 0 | 字节 1 | 字节 2 | 字节 3 | … | 字节 n+2 | 字节 n+3 |
起始字符 | 命令字节 | 长度(n) | 数据[1] | … | 数据[n] | 校验和 |
在图 1-3 中,n 表示正在传输的命令的数据字节数。例如,背光命令(请参阅Topic Link Label3.2.1)将具有以下结构:
字节 1 | 字节 2 | 字节 3 | 字节 4 | 字节 5 |
命令字节 = 00 | n = 2 | 数据[1] = FF | 数据[2] = FF | 校验和 = 00 |
对于命令数据包的每个字节,从器件将持续将虚拟字节 (0xFF)发送回主器件。一旦完全接收到命令数据包,从器件在验证校验和及长度字节后准备一个响应字节。若要接收响应字节,主器件应持续向从器件发送虚拟字节,直到主器件接收到从器件发送的非 0xFF 字节。从器件的第一个非 0xFF 字节将是响应字节。
对于读取命令,读取数据跟随在响应字节之后,其结构如图 1-6 所示,其中,
k – 这是从器件响应主器件的请求所需的时间(以字节为单位)。
m – 从器件返回的数据字节数。这也被称为长度,以字节 k+1 的形式传输。
由从器件从 k 中传输的字节数可以从最小的 1 个字节(仅响应字节 – 如果是写入命令,则读取命令失败)到 258 个字节(255 个数据字节 + 响应 + 长度 + 校验和)不等,具体取决于读取命令(除非主器件中止此命令)。
字节 k-2 | 字节 k-1 | 字节 k | 字节 k+1 | 字节 k+2 | … | 字节 k+m+1 | 字节 k+m+2 |
0xFF | 0xFF | 响应字节 | 长度(m) | 数据[1] | … | 数据[m] | 校验和 |
例如,从器件对背光读取命令的响应(请参阅Topic Link Label3.2.3)如下所示:
字节 k | 字节 k+1 | 字节 k+2 | 字节 k+3 | 字节 k+4 |
响应字节 = 01 | m = 2 | 数据[0] = FF | 数据[1] = FF | 校验和 = 01 |