USB协议分析——包标识字符段(Packet Identifier Field )

来源:互联网 发布:韩国gdp总量知乎 编辑:程序博客网 时间:2024/06/06 00:54

近来常用逻辑分析仪来分析USB交互过程,每次对一些PID指令都要反反复复的查看协议。现记录下来,一来加深印象,二来方便以后的查阅。废话不说了,先上协议内容:

所有USB包的同步字段后都紧跟着包标识符PID如图1所示包标识符由4位的包类型字段和其后的4位的校验字段构成包标识符指出了包的类型并由此隐含地指出了包的格式和包上所用错误检测的类型包标识符的4位的校验字段可以保证包标识符译码的可靠性这样包的余项也就能被正确地解释包标识符的校验字段通过对包类型字段的二进制的求反码产生的如果4 个PID检验位不是它们的各自的包标识符位的补则说明存在PID错。

图(1)PID格式

主机和所有功能部件都必须对得到全部PID字段实行完整的译码任何收到包标识符如果含有失败的校验字段或者经译码得到未定义的值则该包标识符被假定是被损坏的而且包的余项将被包接收机忽略Ignore如果一个功能部件Function收到了包含了它所不支持的事务类型或方向的合法包标识符则不必应答例如只能输入的端口IN-only Endpoint必须忽略输出标记Token表2列出了包标识符类型编码及其描述。

表(2)PID类型

*注解PID位以最高位在前的顺序被表示在USB上被发送的时候最右的位位0将被第一个发出。


包标识符被分为4个编码组标记数据握手和专用包标识符传送的前2位PID<0 1>指出了其属于哪个组这说明包标识符编码的分布。

备注:为方便查阅,总结PID对照表如下:




原创粉丝点击