标签:通过 事务处理 名称 填充 大数 -- tco 电源 奇数
usb协议
功能层: 控制传输、中断传输、块传输(批量传输)、同步传输
设备层:管理USB设备、分配地址、读取设备描述符
总线接口层:采用NRZI编码-反向非归零编码(0将前一个电平翻转,1不翻转)
电气特性
电压:4.75~5.25V
电流:USB2.0高输出功率最大500mA、低输出功率最大100mA、 USB3.0最大输出900mA
USB事务
usb事务处理是主机和设备数据通信的基础。由: 令牌阶段、数据阶段、握手阶段组成。
常用字段
同步字段(SYSC): 每个信息包以SYSC开始,低速/全速同步字段长度为8位,数据为10000000B,从低位开始发送。高速同步字段长度为32位,数据为80000000H。
包标志字段(PID):字段长度为8位,低4位类型字段和高4位校验字段组成,校验字段是类型字段的补码,可验证数据的正确性。4种信息包类型: 令牌包、握手包、特殊包和数据包。
包类型 | PID[3:0] 二进制 | 包名 | 说明 |
---|---|---|---|
令牌包 | 1001 | OUT PID | 数据从主机发送到设备 |
0001 | IN PID | 数据从设备发送到主机 | |
0101 | SOF PID | 作为帧的开始信息 | |
1101 | SETUP PID | 主机向设备发送的配置信息 | |
握手包 | 0010 | ACK PID | 接收方正确接收到数据 |
1010 | NACK PID | 接收方未能正确接收到数据 | |
1110 | STALL PID | 使用的端点被挂起 | |
0110 | NYET PID | 接收方没有任何响应 | |
数据包 | 0011 | DATA0 PID | 数据包为偶数据包 |
1011 | DATA1 PID | 数据包为奇数据包 | |
0111 | DATA2 PID | 高速同步事务专用数据包 | |
1111 | MDATA PID | SPLIT事务专用数据包 | |
特殊包 | 1100 | PRE PID | 令牌,主机发送先导包,使能低速通信 |
1011 | ERR PID | 握手信息,SPLIT事务中的错误握手信号 | |
1000 | SPLIT PID | 高速SPLIT事务的令牌信息 | |
0100 | PING PID | 数据流量检测控制 |
地址字段: 长度为7位,共128个地址值。地址0缺省,实际只有127个地址。在USB上电的时候主机先通过缺省地址0和usb设备进行通信,配置完成后,主机重新为设备分配一个地址。
端点字段: 长度为4位,总共可表示16个端点。低速:3个端点, 高速/全速:16个端点。,端点0是所有USB设备必须的,主要在设备上电初期和USB主机进行通信、完成配置。
帧号字段: 长度为11位,最大值07FFH,表示当前帧的帧号,每个帧发送的时候,该字段加1
数据字段: 最大长度1024字节,长度由传输类型和程序的需要决定。首先传输低字节,再传输高字节。
CRC字段: 循环冗余校验字段。一般在发送方进行位填充之前进行。令牌包一般采用5位CRC校验;数据包采用16位CRC校验。
令牌包
IN令牌包: PID字段+ADDR字段+ENDP字段+CRC字段 数据从 设备 到 主机
? PID: 数据从设备发送至主机
? ADDR:USB设备地址
? ENDP: 发送数据的端点号
? CRC: ADDR和ENDP字段进行校验
OUT令牌包: PID +ADDR + ENDP + CRC 数据从 主机 到 设备
SETUP令牌包: PID + ADDR + ENDP + CRC 数据从主机 到 设备, 配置信息
PING令牌包: PID +ADDR + ENDP + CRC 数据从 设备 到 主机, 握手信号传输
PRE令牌包: PID 低速数据传输先导包,在开始发送数据之前必须先发送该包(主机与集线器之间进行传输)。
数据包: PID + 数据字段 + 16位CRC PID指定数据包DATA0-DATA2或MDATA。数据字段的长度根据协议规定:低速最大长度8字节,全速最大长度 1023字节,高速最大长度1024字节
握手包:PID 接收方反馈状态给发送方
事务处理
IN事务处理
主机发送IN令牌包: SYNC+IN+EOP
设备发送数据包: SYNC+数据包+EOP
主机发送握手包: SYNC+确认+EOP
OUT事务处理
? 主机发送OUT令牌包: SYNC+OUT+EOP
? 主机发送数据包: SYNC+数据包+EOP
? 设备发送握手包: SYNC+确认+EOP
? 3.SETUP事务处理(利用其对设备进行配置,常用于建立阶段)
? 主机发送SETUP令牌包: SYNC+SETUP+EOP
? 主机发送数据包: SYNC+DATA0+EOP
? 设备发送握手包: SYNC+确认+EOP
? 4.PING事务处理(主要用于高速数数据传输中)
? 主机发送PING令牌包: SYNC+PING+EOP
? 设备发送握手包: SYNC+确认+EOP
? 5.SOF事务处理
? 主机主动发送。低速或者全速usb传输,每隔1ms产生一个SOF令牌包,对于高速传输,每
? 隔125us产生一个小帧,每隔7个小帧,产生一个SOF令牌包,不需要握手包。
USB设备的状态
连接状态: usb总线开始向usb设备供电,直到电源稳定。
上电状态: usb设备处于上电状态,当没有被复位
缺省状态: usb设备响应usb主机发出的复位信号,进行复位操作,复位结束后,设备进入缺省状态。该状态下:电流小于100mA,并且使用缺省的设备地址对一些usb事务进行处理。
地址状态: 复位结束后,usb主机重新为设备分配一个唯一的地址。
配置状态: 主机发出setconfiguration请求。
挂起状态: usb设备在3ms内没有检测到总线活动,自动进入挂起状态,保持原有的地址和配置。
USB数据传输
块传输: 适用于传输大量且对传输时间和传输速率没有要求的场合。数据包长度 -- 全速端点,可以是8、16、32、64字节;高速端点只能是512字节。数据量如果超过最大的数据包长,主控制器会将其分成多个块事务处理。处理过程:
? 令牌 >> 数据 >> 握手
? 第一个数据包为DATA0,第二个应该是DATA1,之后可以是DATA0/DATA1
中断传输: 适用于传输少量或对数据处理有周期要求的场合。数据长度 -- 低速端点最大数据包长度8字节;全速端点最大为64字节;高速端点为1024字节。
同步传输: 只能用于全速、高速设备。适用于传输大量、速率恒定的,且对周期有要求的数据。例如:音频、视频等。数据长度 -- 全速端点最大为1023字节;高速端点最大为1024字节
控制传输: 主要用于传输少量的,对传输时间和传输速率均无要求、但必须保证传输的数据。数据长度 -- 低速端点最大为8字节;全速端点可谓8、16、32、64字节;高速端点只能是64字节。
? 建立阶段 + 数据阶段 + 状态阶段
USB设备配置
设备描述符:表示USB设备的总体信息,一个USB设备只有一个设备描述符。固定18字节。
配置描述符: USB设备可以有一个或者多个配置,每个配置必须有一个配置描述符。固定9字节。
字符串描述符: 可选。用于保存供应商的名称、产品序列等文本信息。
接口描述符: 接口为端点的集合,负责完成该USB设备的特定功能。固定9字节。
端点描述符: 指出端点的特性。固定7字节。
设备限定描述符: 设备既需要告诉传输也需要全速传输,则必须支持设备限定描述符。固定10字节。
其他速率配置描述符: 既采用高速传输又采用全速传输,则必须支持该描述符。固定9字节。
标签:通过 事务处理 名称 填充 大数 -- tco 电源 奇数
原文地址:http://www.cnblogs.com/BlogsOfLei/p/7749434.html