USB前言
USB 中文全称:通用串行总线,英文全称: Universal Serial Bus.
USB2.0 知识点
USB物理连接
USB2.0 通常使用四根线(D+,D-,Vbus,GND),其中 D+ D- 是差分信号线.Vbus 是电源线.GND 为地线.
差分信号可以有效抑制信号干扰,传输可靠性较好.
USB2.0设备的速度分为三种:低速(1.5Mbps);全速(12Mbps);高速(480Mbps).低速设备的识别通过在 D- 上拉一个1.5k 3.3 的电阻即可.全速设备的识别通过在 D+ 上拉一个 1.5k 3.3v 的电阻即可.高速设备的识别复杂一点,在 D+ 上拉 1.5k 3.3v 电阻的基础上,起初以全速设备进行握手交互,确认可以识别成高速设备,然后断开 1.5k 上拉电阻.
一个 USB 系统最多能挂载的设备
一个USB系统使用7位来表示USB的地址,2的7次方,故共有128个地址,但是0地址被用于了设备枚举阶段的通信,所以理论上一个 USB 系统最多支持挂载 127 个设备.但是由于现实中还存在 USB HUB ,USB HUB 同样需要耗费一个地址,所以实际使用上支持的USB设备数是小于 127 个的.USB协议规定使用 USB HUB 最多支持5级,第5级只能是usb设备.
USB数据传输的类型共有4种
- 控制传输:对时间延迟,速率无要求,但是需保证数据的正确性.主要用于USB主机与设备之间的配置信息交互,枚举之类的操作.使用者也可以使用控制传输传输自定义数据.
- 批量传输:对时间延迟,速率无要求,优先级最低,但会尽量利用可以利用的带宽完成数据传输.只能用于高速全速USB设备.U盘之类的设备.
- 中断传输:要求时间延迟低,速率无要求,优先级较高.适合鼠标,键盘,游戏手柄.
- 同步传输:要求时间延迟低,速率有要求,但是对数据正确性要求不高.只能用于全速高速USB设备.适合音频视频等设备.
USB设备状态标志
连接标志 | 上电标志 | 默认标志 | 地址标志 | 配置标志 | 挂起标志 | 状态标志说明 |
---|---|---|---|---|---|---|
N | - | - | - | - | - | 设备尚未连接主机 |
Y | N | - | - | - | - | 设备连接主机,但是没有上电. |
Y | Y | N | - | - | - | 设备连接到主机并上电,但是没有复位. |
Y | Y | Y | N | - | - | 设备连接到主机并上电完成复位,但是没有分配唯一的地址,默认使用0地址. |
Y | Y | Y | Y | N | - | 设备连接到主机并上电完成复位和获得唯一地址,但是没有进行配置. |
Y | Y | Y | Y | - | N | 设备连接到主机并上电完成复位和获得唯一地址,已经配置成功.此时主机可以使用该设备的提供的所有功能,也就是可以使用了. |
Y | Y | - | - | - | Y | 只要连接并上电了,都可以进入该状态. |
- 连接状态标志:仅仅指USB设备与主机物理连接上.
- 上电状态标志:指USB设备获取到电源.
- 默认状态标志:USB设备在上电状态被复位后进入的状态,只有在这个状态下才能响应主机发送过来的请求.
- 地址状态标志:在默认状态下,主机会分配给USB设备一个唯一的地址,在获得地址后,即进入地址状态.
- 配置状态标志:主机配置USB设备相关的配置,只有全部配置后,USB设备就能被主机使用了.
- 挂起状态标志:USB协议的低功耗机制,当USB总线上3ms没有活动,设备就会自动进入挂起状态,进入挂起状态后,USB设备会维持内部状态,如设备的地址与配置选项.
USB设备的枚举
USB枚举过程就是:主机获取从机设备参数并配置的过程.
枚举过程:
- USB主机检测到USB设备插入后,会对USB设备进行复位操作.进入默认状态.通过0地址进行通信.主机发送获取设备信息的请求;设备在收到请求后,会将设备描述符发送给主机;主机在确认收到设备描述符的数据包后会返回一个长度为0的数据确认包到USB设备.最后进入地址状态.
- USB主机在获取到设备描述符并发送确认信号后,会对USB设备进行第二次复位;USB主机向设备发送设置地址的请求,请求中包含地址.USB设备收到输入令牌后,设备会返回一个长度为0的状态数据包,如果主机收到这个状态数据包,就会发送ACK包给设备,设备收到ACK后,就会启动使用新的地址.之后的访问都通过这个新的非0地址来进行通信.
- 给设备设置完地址后,主机会再一次从设备获取设备描述符.(较上一次描述符内容更为完整),获取设备描述符后,主机会从设备获取设备配置符,主机再根据设备配置描述符中描述的配置长度获取配置的的数据集合.
- 有些设备还有字符串描述符,主机会根据需求,在枚举基本完成后向设备获取字符串描述符.
USB设备的挂起
USB设备的挂起分为两个阶段:挂起事件的产生;进入挂起状态;当USB设备检测到USB总线空闲状态持续3ms以上后,USB设备的控制器就会产生挂起事件,收到挂起事件后7ms内,设备必须进入实际的挂起状态也就是进入低功耗模式.在设备挂起后,任何的非空闲信号都可以唤醒设备.
USB 设备描述符
描述符相当于 USB 设备的名片,包含设备的所有的属性与可配置信息.如设备的 类;接口信息;端点信息等;主机获得设备的描述符后,就知道了该设备的类型与用途,通信等参数.主机可以通过获取到的这些信息对自己进行配置.
标准的 USB 设备有 6 种常用的描述符:
- 设备描述符 :
- 配置描述符 :
- 字符串描述符 :
- 接口描述符 :
- 端点描述符 :
- 设备限定描述符 :
- 接口关联描述符(特殊,不常用) : 用于将一组有关的描述符关联起来共同描述一个特定的功能.
USB主机
在USB系统中只允许一个USB主机的存在,主机是设备连接的起点,配置并控制与USB设备间的数据传输.
USB主机提供以下五个功能:
- 检测USB设备的连接与断开.
- 管理USB主机与设备间的标准控制数据流.
- 管理USB主机与设备间的数据流.
- 收集USB总线状态和活动信息.
- 控制USB主控制器和USB设备间的物理电气接口,包含电源供应.