1、基本概念
2 、包(Packet)
-
USB总线上的情形是怎样的?
1.1 PID类型(即包类型)
1.2 Token Packets
1.3 Start-of-Frame(SOF) Packets
-
对于full-speed总线,每隔1.00 ms ±0.0005 ms发送一次;
-
对于high-speed总线,每隔125 μs ±0.0625 μs发送一次;
1.5 Handshake Packets
-
ACK: 对于IN事务,它将由host发出;对于OUT、SETUP和PING事务,它将由device发出。
-
NAK: 在数据阶段,对于IN事务,它将由device发出;在握手阶段,对于OUT和PING事务,它也将由device发出;host从不发送NAK包。
2、事务(Transaction)
-
一个token packet -
可选的data pcket -
可选的handshake packet -
可选的special packet
2.1 输入(IN)事务处理
-
【正常】的输入事务处理
-
【设备忙】时的输入事务处理
-
【设备出错】时的输入事务处理
2.2. 输出(OUT)事务处理
-
【正常】的输出事务处理
-
【设备忙时】的输出事务处理
-
【设备出错】的输出事务处理
2.3 设置(SETUP)事务处理
-
【正常】的设置事务处理
-
【设备忙时】的设置事务处理
-
【设备出错】的设置事务处理
3、USB传输类型
-
控制传输 (Control Transfer)
-
中断传输 (Interrupt Transfer)
-
批量传输 (Bulk Transfer)
-
同步传输 (Isochronous)
3.1 控制传输 (Control Transfer)
-
建立阶段(Setup)
-
数据阶段(无数据控制没有此阶段)(DATA)
-
状态阶段(Status)
3.1.1 建立阶段
3.1.2 数据阶段
-
控制读取(读取USB描述符)
-
控制写入(配置USB设备)
-
无数据控制
-
控制读取
-
控制写入
3.1.3 状态阶段
3.2 批量传输 (Bulk Transfer)
-
token
-
data
-
handshake
-
For IN Token (即:IN Transaction)
-
ACK: 表示host正确无误地接收到数据
-
NAK: 指示设备暂时不能返回或接收数据 (如:设备忙)
-
STALL:指示设备永远停止,需要host软件的干预 (如:设备出错)
-
For OUT Token (即:OUT Transaction)
-
ACK: Device已经正确无误地接收到数据包,且通知Host可以按顺序发送下一个数据包
-
-
NAK: Device 已经正确无误地接收到数据包,且通知Host重传数据,由于Device临时状况(如buffer满)
-
-
STALL: 指示Device endpoint已经停止,且通知Host不再重传
-
Bulk读写序列
3.4 同步传输(Isochronous Transfer)
-
它由两种包组成:
-
token
-
data
免责声明:本文来自网络,本文仅代表作者个人观点,不代表金航标及行业观点,只为转载与分享,支持保护知识产权,转载请注明原出处及作者,如有侵权请联系我们删除。