02_USB协议数据格式

1 初步了解传输过程

如何寻址设备?如何表示数据方向(读、还是写)?如何确认结果?
(1)USB系统是一个Host对应多个设备,要传输数据首先要通知设备:
a)发出IN令牌包:表示想读数据,里面含有设备地址
b)发出OUT令牌包:表示想写数据,里面含有设备地址
(2)数据阶段:
a)Host想读数据:前面发出IN令牌包后,现在读取数据包
b)Host想发出数据:前面发出OUT令牌包后,现在发出数据包
(3)结果如何?有握手包
a)Host想读数据,设备可能未就绪,就会回应NAK包
b) Host想写数据,它发出数据后,设备正确接收了,就回复ACK包

2 概念

USB通讯过程,有传输、事务、包、域的概念,这部分一定要理解;

2.1 传输

概念较大,由事务组成,是用来满足不用传输需求来进行选择的,先不纠结;
批量传输:使用批量事务实现数据传输,可靠、非实时,U盘;
中断传输:使用中断事务实现数据传输,可靠、实时,鼠标键盘;
实时传输:使用实时事务实现数据传输,不可靠、实时,UVC;
控制传输:由建立事务、批量事务组成,所有的USB设备都必须支持控制传输,用于”识别、枚举“。

前三个传输各由一个事务完成(传输可以认为就是事务),控制传输由多个事务组成
批量传输:批量事务的一次或多次重复
注意:并没有中断引脚,传输只能是主机发起,所以没有中断功能,只不过主机周期性的询问数据

2.2 事务(transaction)

事务由1至多个包组成,令牌包+数据包(可选)+握手包(可选)
事务是主机与设备通讯的基本单元,数据传输的完整流程。主机是发起者,与设备进行交互应答实现通讯,也就是说一个事务既有收也有发;

一个事务过程(主机发送数据给设备为例):
(1)令牌阶段(token phase)
SOP SYNC PID addr|ep CRC EOP
主机发(告诉指定设备,我要发数据),其中 Packet Content:PID(输出),后面是地址和端点
(2)数据阶段(data phase)
SOP SYNC PID DATA CRC EOP
主机发(发数据),其中 Packet Content:PID(数据),后面跟着数据
(3)握手阶段(Handshake phase)
SOP SYNC PID CRC EOP
设备发(回应结果),其中 Packet Content:这里的PID表示结果,ACK或NAK;

2.3 包

令牌包、数据包、握手包、特殊包
包的类型由PID表示,令牌包可以指定输入输出,数据包承载数据,握手包表示该次传输是否成功等
PID有8位,后4位为前4位的取反,一共可以表示16种包,这些包分为四类
令牌 (Token) Packet
帧首 (Start of Frame) Packet
数据 (Data) Packet
握手 (Handshake) Packet
在这里插入图片描述

每一个包都是由这些内容组成,第一行为一个包的结构,其中Packet Content 包含PID和CRC、地址帧号数据不一定同时出现,可以结合上面的案例来看。
有一个起始信号,表示开始传输,域
同步信号,同步传输速度,也是一个域

2.4 域

同步域、地址域、端点域、帧号域、标识域、数据域、校验域
PID(包的ID):含有方向和类型,8位,高4位为低4位的取反,一共可以表示16种包,这些包分为四类,最低两位表示类型,bit2、bit3表示输入输出
地址7位断点4位
在这里插入图片描述

3 传输

3.1 批量传输

在这里插入图片描述

之前没怎么看懂这个图,理清楚了前面的那些概念和示例,这个就容易看了。
深色表示主机,白色表示设备。先是令牌包表示输入、输出等,接着是数据阶段,最后是握手阶段。
写:主机先发一个令牌包,接着数据包,设备回应一个握手包
读:主机发令牌包,设备回数据包,主机回应握手包
这三个包组成事务,如果传输较多数据,批量事务进行多次重复,DATA1与DATA0交替发送。
在这里插入图片描述

3.2 中断传输

特点:定期发送输入令牌包,询问是否有数据
在这里插入图片描述

3.3 实时传输

只有token和data,没有握手包
在这里插入图片描述

3.4 控制传输

从左往右看,建立阶段,数据阶段,状态阶段。
从上到下看,是三种不同的控制传输。
建立阶段:控制传输的令牌包是SETUP,发出令牌包后接着发出数据包DATA0表示读或写,设备回复握手包;
数据阶段:主机发出IN或OUT令牌包,接着是数据包,握手包,其实就是由多个批量事务组成;
状态阶段:一个批量事务,data len 为 0,发出或受到握手包
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值