USB:连接和枚举(二)


一、主设备与从设备

USB通讯的两端分别成为:HOST(主设备/USB主机)和 Device(从设备/USB设备)
在这里插入图片描述
客户软件:负责和usb设备的功能单元进行通信,用于实现特殊功能(分为:界面应用程序和驱动程序)
USB系统软件:负责和usb逻辑设备进行配置通讯,配置主机资源,设置usb参数。根据带宽安排传输,主要由操作系统扶着
USB总线接口:(分为:usb主机控制器和根集线器),主机控制器用于usb和主机之前实际数据的传输,根集线器实现主机和其他usb设备的连接

1. usb主设备功能

  • 检测usb设备的插拔动作
  • 管理主从通讯之间的控制流
  • 管理主从通讯之间的数据流
  • 记录主机状态和设备动作信息
  • 控制主控制器和USB设备间的电气接口

1. usb设备

1.按功能划分:集线器和功能和功能设备

集线器:
用于扩展USB主机的USB端口
结构上有一个上行端口,多个下行端口
支持级联,系统中最多有5个集线器(不包括主机的根集线器)
支持速度转换
功能设备(U盘,打印机等):
一个独立的外围设备,可以是单一功能也可以是多功能的合成设备
内部包含有猫叔自身功能和资源需求的配置信息

2. USB功能设备

在这里插入图片描述
tips:一个设备只有一个设备描述符,配置和接口是抽象概念,端点是实际的物理单元,在使用usb设备前,必须指明使用哪个配置,哪个接口。

2. 主机和usb设备构成的连接通讯系统

在usb系统中,一般usb主机通过集线器(HUB)进行设备扩展,以层次性的星型拓扑结构和物理连接,最多支持7层,最多可以支持127个设备,分配127个地址,除了根集线器之外,最多支持5个集线器相连,usb设备内部有一个集线器(设备=集线器+设备),这种设备被称为复合设备。
在这里插入图片描述
主机和usb设备之间通讯物理通道:主设备分配的地址/默认地址0+从设备固有端点号。
主机和usb设备之间时间长度单位:帧 / 微帧。
主机和usb设备之间协议处理基本单位:事务处理
主机和usb设备之间通讯:在基本单元“事务”中,主机总是发起者,并且和设备交互应答方式进行通讯

3. 连接与检测

在usb主机连接usb设备后,不但能自动检测到设备的连接和拔出动作,还会知道联机设备当前的通讯速度。
在这里插入图片描述

  • usb主机端口在 D+ 和 D- 上都有 1.5 千欧电阻接地
  • 低速usb从设备在 D- 上连有 1.5 千欧的电阻到 3.0v-3.6v电压
  • 没有连接:主机端口检测到 D+ 和 D- 电压都接地 0v,低速设备连接:主机端口检测到 D- 电压约 3v,D+ 电压接地 0v。

4. 主机连接

在这里插入图片描述

  • 高速设备先以全速设备结构与主机连接,他们之间左双向检测
  • 主机输出总线复位信号期间,usb设备以是否可以产生Chip K信号来表明高速或者全速的身份
  • 在 Chip k 信号后,主机是否发生 KJ 序列来表明高速主机身份或者是全速主机身份
  • 匹配到高速主机和高速设备后,usb设备断开D+上的1.5千欧的上拉电阻,连接D+/D-上的高速中断电阻,进去默认的高速状态,否则以全速状态通讯。

5. 连接与检测总结

  • 设备断开:主机检测到 D+ 和 D- 上近地状态(0v),并持续 2.5 微妙以上。
  • 设备连接:主机检测到 D+ 和 D- 上近地状态(3v),并持续 2 微妙以上。
  • 低速设备:主机检测到 D-上高电平
  • 全速设备:主机检测到 D+ 上高电平(有可能是高速设备)
  • 高速设备:主机检测到 D+ 上高电平,然后通过一系列协商握手信号确认双方身份(双向检查)
    tips:总线的几种状态
常见的几种状态描述
正常工作总线上存在周期性SOF包
总线复位总线维持SEO状态 > 10 ms
正常工作总线无活动 > 3ms
常见的几种变化描述
无连接 -> 连接D+ / D- 上出现高电平 > 2ms
正常 -> 挂起J 状态保持 > 3ms
挂起 -> 正常(主机主动唤起usb设备/usb设备远程唤起主机)出现 K 状态信号并持续一段时间

二、枚举过程

1.枚举概念

在这里插入图片描述

  • 枚举:usb主设备想usb从设备通过获取各种描述符,从而了解设备属性,知道是什么样的设备,并加载对应的 usb 类,功能驱动程序,然后进行后续一系列的数据通信。
    特点
  • 主设备连接识别从设备必须的过程
  • 由多个控制传输构成
  • 经过地址 0 (缺省地址)到其他地址(主设备分配地址)的通讯
  • 对于挂载多个usb从设备的系统,主设备是注意进行枚举操作

2.枚举过程

  • usb设备上电(一般从usb口取电)并连接到usb总线
  • 主机检测到总线上有设备连接
  • 主机会等待至少100ms用于连接的机械,电器特性稳定
  • 主机执行总线复位至少10ms,并得到usb设备通讯速度
  • 主机驱动总线空闲至少10ms用于做恢复时间
  • 主机发出获取设备描述符请求(缺省地址)
  • 主机为从设备分配唯一设备地址,后续通讯用此地址
  • 主机以新地址发出获取设备描述符请求
  • 主机以新地址发出获取设备描述符请求,获取设备全部配置
  • 主机分析获取的描述符信息,并做相应记录和处理
  • 主机发送设备配置请求,为从设备选择一个合适的配置

3.概念

  • 设备描述符:第一个需要获取的描述符,长度固定18字节。
  • 配置描述符:描述了设备特定的配置,提供了当前配置下设备的功能接口,供电方式,耗电等。是一个配置的集合,集合长度不固定,包含了配置描述符,接口描述符,类定义描述符,短点描述符。

三、控制传输

所有的usb设备都必须支持的传输方式,可以分为三种(每种结构都是由不同事物构成):控制写,控制读,

  • 是所有usb从设备必须支持的传输方式,固定使用端点0通讯
  • 控制传输的方向是双向的,既可以主机下传输给设备,又可以从设备上传数据
  • 多用于主设备和从设备进行信息,功能,状态等方面的获取和修改
    在这里插入图片描述

1.控制写

  • 建立阶段:由一个 setup 事物构成
  • 数据阶段:由一个/多个 out 事物构成
  • 状态阶段:由一个 in 事物构成

2.控制读

  • 建立阶段:由一个 setup 事物构成
  • 数据阶段:由一个/多个 in 事物构成
  • 状态阶段:由一个 out 事物构成

3.无数据控制

  • 建立阶段:由一个 setup 事物构成
  • 状态阶段:由一个 in 事物构成

4. 阶段特征

阶段事物特征
建立阶段Setup事物固定8字节结构数据,中间的数据包的PID为DATA0,应答包必须未ACK
数据阶段一个或多个连续的in/out事务不是必要阶段,控制读:连续的in事务,控制写:连续的out事务,事务数据包从PID-DATA1开始,然后进行1-0-1-0-… 交替翻转,应答包支持 ACK/NAK/STALL
状态阶段Setup事物数据包长度为0,数据包的PID为DATA1,执行的事物和数据阶段事物相反,没有数据阶段,执行IN事务
1.Setup Stage

控制传输中 Setup Stage 部分(Setup事务),主机发出8字节命令请求,格式如下

大小(byte)11222
字段bRequestTypebRequestwValuewIndexwlength
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
USB(Universal Serial Bus)是一种用于连接电脑和外部设备的标准接口,它有自己的通信协议。USB枚举是指在插入USB设备时,计算机系统自动检测并识别该设备的过程。 首先,当我们将USB设备插入计算机的USB端口时,计算机会发送一个复位信号给USB设备,以便设备知道计算机已经察觉到它的存在。USB设备在接收到复位信号后会执行一些初始化操作,并返回一个握手信号给计算机。 接下来,计算机会发送一个叫作Get Descriptor的命令给USB设备,这个命令的作用是要求USB设备返回一些描述该设备的信息,比如设备的厂商ID、产品ID、设备类别等。USB设备收到这个命令后会返回这些信息给计算机。 然后,计算机会发送一个Set Configuration的命令给USB设备,这个命令的目的是告诉USB设备要使用哪种配置,因为有些USB设备可以有多种不同的配置。USB设备在接收到Set Configuration命令后会根据配置来进行初始化,并返回一个确认信号给计算机。 最后,计算机会发送一些其他的命令给USB设备,比如读取和写入数据的命令,以及其他特定的设备命令,这些命令的具体内容取决于USB设备的功能和应用。 通过上述的过程,USB设备和计算机建立起了通信链接,USB设备可以向计算机提供相应的功能和服务。USB枚举过程中的各个步骤确保了设备和计算机之间的正常通信和数据传输。 总结来说,USB枚举过程是计算机通过一系列的命令向USB设备发出请求,USB设备根据这些请求进行相应的操作,并返回相应的结果给计算机,以实现设备和计算机之间的通信和数据传输。这个过程是USB协议中非常重要的一部分,保证了USB设备的插拔即用的特性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值