1.7 USB设备描述符及其之间的关系
USB1.1
设备描述符
USB协议版本号 设备类型 端点0最大包大小 VID PID 设备版本号 厂商字符串索引 产品字符串索引 设备序列号索引 可能的配置
配置描述符
配置说包含的接口数、配置的编号、供电方式、是否支持远程唤醒、电量需求
接口描述符
接口的编号、接口的端点数、接口所使用的类、子类、协议
端点描述符
端点号及方向 端点的传输类型 最大的包长度 查询时间间隔等
字符串描述符 单独获取 获取字符串请求 描述符索引号 语言ID来获取
USB2.0
Device Qualifier Descriptior
Other Speed Configuration Description
还有些 类特殊 描述符 HID描述符 厂家自定义描述符
1.8 USB设备枚举的过程
枚举的传输方式 控制传输
控制传输的三个过程 :建立过程 可选数据过程 状态过程
枚举的详细过程
1.获取设备描述符 这里面需要注意管道0得到大小和设备描述符的大小 但是管道的最大包长度是在设备描述符的最前面八个字节
2. 设置地址
3.再次获取设备描述符 ,但是这次的用分配的地址获取全部的设备描述符
4. 获取配置描述符 然后获取配置集合
1.9 USB的包结构及传输过程
1.91 USB的包结构及包的分类
传输以包为单位· 包分为·不同的域
通用格式 同步域. PID+ EOP
同步域
全速和低速 01H
高速 0001H
低速和全速EOP 大约为两个数据位的的SE0 即D+ D-都保持低电平
复位 10ms的SE0
高速 使用故意的位填充错误来表示。
包标识符PID 一共有八位 PID0-PID4
USB协议包括4类
令牌包 token packet PID1-0 01
数据包 data packet PID1-0 11
握手包 handshake PID1-0 10
特殊包 special packet PID1-0 00
IN 令牌 通知设备返回一个数据包
SETUP 用于控制传输 只是用 DATA0的数据包 只能发送到设备的控制端点,设备必须接受
SOF包 每个帧开始时候以广播形式发送 十一位 不跟随数据
1.9.3 数据包
数据包 DATA0 DATA1高速分裂事务和同步高速高带宽传输 DATA2MDATA
这样的好处可以预防确认型号损坏的情况发送
1.9.4 握手包
ACK 正确接受数据 并且有足够的空间来容纳数据
主机唯一能使用的握手包
NAK 没有数据需要返回 数据正在接受 但是没有足够的空间来容纳他们
主机接收到NAK以后会在以后合适的时机来重新传输
STALL 设备无法执行这个请求 或者端点已经被挂起了 它是一种错误的状态 设备返回 STALL 后 需要主机进行干预材料解除这种STALL 状态
NYET 只在USB2.0中的高速设备输出事务中使用,表示本次数据成功接收,但是没有足够的空间来接收下一次数据,主机在下一次输出数据时候,将先用PING命令牌来试探设备是否有空间接受数据,以避免不必要的浪费。
NAK不是出错 出错将什么都不返回
1.9.5 特殊包
令牌包
PER 打开低速端口的前导包 只使用全速模式
与握手包的结构一样 全速设备将忽略这一要求
USB2.0新增
SPLIT
高速事务令牌包 通知集线器把高速数据转换为全速或者低速数据发送给下面的端口
PING
与OUT结构一样
PING发送以后需要等待ACK命令才能继续发送数据包
握手包
ERR
1.9.6 如何处理数据包
USB芯片都会处理好数据 只需要规定好要发什么数据就行了
1.10 USB传输的四种类型
按照一定的关系把包组成事务
1.10.1 USB事务包
事务组成 令牌包 数据包 握手包
令牌包启动事务 数据包 握手包(通常数据接受者发送)
批量 同步 和中断传输 是一个事务
控制传输 建立过程 状态事务 一个事务 数据过程 包含多个事务
1.10.2 批量传输
bulk transaction 一次 批量事务 传输数据 分三个阶段
令牌包 数据包 握手包
批量读 批量写
批量输入事务时 主机不允许使用NAK握手包 因为 USB所有的读写都是有主机发起的 所以主机既然发起接受请求 受到再拒绝 这种行为就太二了
1.10.3 中断传输
所谓的中断传输和单片机的中断意义不同 是指 以不大于某个时间间隔内安排一次传输
1.10.4 同步传输
没有应答是同步传输的一大特点
1.10.5 控制传输
建立过程
与批量事务传输不同之处
建立过程使用SETUP令牌包
SETUP只能使用 DATA0
握手包 只能用ACK
数据过程
数据传输过程中一旦方向改变 就进入状态过程 数据过程第一个数据包必须输出DATA1包,然后交替
状态过程
传输方向与数据过程相反 只能用DATA1
1.0.7 传输类型与端点支持的最大包长
控制传输 低速 8 高速 64 全速 8/16/32/64
同步传输 全速1023 高速 1024 低速 不支持
中断传输 低速 8 全速 64 高速 1024
批量传输 高速 512 全速 8/16/32/64 低速不支持
来源:https://www.cnblogs.com/cjxltd/p/7125698.html