[转]USB协议基本概念
0. 基本概念
l Pipe:Host与Device.Endpoint间的通路(HOST与Device间多个Pipes)。
l Packet:信息传输的基本单元。
l Transaction:由Packet组成,可分为3类IN、OUT、SETUP。
l Transfer (控制、批量、中断、等时):由Transaction组成。
l Frame:把Transfer封装于Frame传输,下图Frame由SOF、SETUP、IN、IN、IN、EOF(非Packet、仅电平)。
1. Packet
Packet 组成:SYNC、PID、ADDR-ENDP、FrameNumber、DATA、CRC和EOP(电平)。
1.1 PID:指定不同类型的Packet。
1.2 Token类型Packet:IN、OUT、SETUP、PING
1.3 SOF Packet
1.4 Data类型Packet:DATA0、DATA1、DATA2、MDATA
1.5 Handshake类型Packet:ACK、NAK、STALL
2.Transaction
2.1 输入(IN)事务处理
•【正常】的输入事务处理
•【设备忙】时的输入事务处理
•【设备出错】时的输入事务处理
2.2. 输出(OUT)事务处理
•【正常】的输出事务处理
•【设备忙时】的输出事务处理
•【设备出错】的输出事务处理
2.3 设置(SETUP)事务处理
•【正常】的设置事务处理
•【设备忙时】的设置事务处理
•【设备出错】的设置事务处理
3.Transfer
3.1 控制传输 (Control Transfer)的2~3个阶段:
3.1.1 建立阶段:Host配置Device
Transfer.Setup = Transaction_SETUP =(P_SETUP、P_DATA0、P_ACK)…,配置Transaction_IN/Transaction_OUT的P_DATA个数、发送方向等。
3.1.2 数据阶段:
• 控制读:Transfer.IN = Transaction_IN、Transaction_IN … = (P_IN、P_DATA0、P_ACK)、(P_IN、NAK)…
• 控制写:Transfer.OUT = Transaction_OUT、Transaction_OUT … = (P_OUT、P_DATA0、P_ACK)、(P_OUT、NAK)…
3.1.3 Status阶段:
3.2 批量传输 (Bulk Transfer):大量可靠传输,如U盘
•DATA0-DATA1-DATA0-…翻转传输(同步、纠错)。
• Host容忍连续 3次传输错误。
3.3 中断传输(Interrupt Transfer):Device -> Host,优先级次于同步,如键盘、鼠标
3.4 同步传输(Isochronous Transfer):不可靠、优先级最高,适用于固定速率,如麦克风、喇叭、UVC Camera等设备。
4. OTG协议
若设备ID线拉低,则为Host;悬空或拉高,则为Device。
设备也能通过“主机交换协议(HNP)”实现角色互换。
因总线空闲而被切断电源的从设备,可通过“会话请求协议(SRP)”请求恢复电源。
2.1 HNP协议:主从切换
假设A为主设备、B为从设备。若B想成为主机,并告知A;A向B发送SetFeature命令,使总线进入J状态(D+=1、D-=0,Idle);B检测到并等待5ms,使总线处于SE0状态(D+=D-=0,Stop);A检测到后,使总线再次进入J状态(表示A认可B的HNP请求);B复位并控制总线。
2.2 SRP协议:
SRP分为数据线脉冲调制和电压脉冲调制两种方式,B发起SRP的必要条件:
1) A、B均低于有效电压阈值。
2) D+和D-低于有效阈值(SE0状态)时间至少2ms。
数据线脉冲调制:B检测到上述必要条件;B上拉D+(接入上拉电阻);A检测到后,发送SRP指示信号。
Vbus脉冲调制会话请求:B检测到上述必要条件;B对电容充电(提高总线电压),达到总线电压阈值;A检测到后,发送SRP指示信号。
有修改,转自:https://blog.csdn.net/myarrow/article/details/8484113