《USB技术应用与开发》第二讲:连接和枚举
一、主设备与从设备
1.1主设备
1.1.1主设备结构
USB通讯的两端分别称为:HOST(主设备/USB主机)和Device(从设备/USB设备),常见的主设备就是计算机。 下图是一个标准的USB主机结构:
(1)功能层:客户软件,负责和USB设备的功能单元进行通讯,用于实现其特殊功能,如传输文件、播放声音等等。一般都是专用的,根据设备的不同而不同,需要开发人员自行编写。它分为USB设备驱动程序和界面应用程序两个部分。
①驱动程序:对接USB系统软件,告知USB收发的数据内容,启动一次USB数据传输。
②界面应用程序:是最上层的软件,和驱动程序直接对接,提供可视化操作,可以看到向USB设备发送的原始数据以及从USB设备接收的最终数据。
(2)USB设备层:直接和客户软件对接的USB系统软件,负责和USB逻辑设备进行配置通讯,配置主机资源,设置USB参数,根据带宽安排传输单位队列等工作,这一部分工作主要由操作系统执行,开发人员不必关心。
(3)USB总线接口层:一般包括USB主机控制器和根集线器两个部分。
①主机控制器:用于负责完成主机和USB设备之间数据的实际传输。
②根集线器:实现了主机控制和其他USB设备的连接。
1.1.2主设备功能
USB主机一般具有以下功能:
- 检测USB设备的插拔动作
- 管理主从通讯之间的控制流
- 管理主从通讯之间的数据流
- 记录主机状态和设备动作信息
- 控制主控制器和USB设备间的电气接口
以上的结构特征是按照计算机的USB分成结构来描述的,但是在一些单线程运行的嵌入式平台,如单片机,一般不会用到这么复杂的分层交互方式,而且这些平台所连接的USB设备类别往往比较固定,功能单一,完全可以将它的通讯流程进行简单化。
后面的实例中以单线程运行的主机功能进行讲解。
1.2USB设备
1.2.1USB设备分类
集线器的第四个特诊扩展:当不同的速度标准的USB设备同时连接到集线器上,上行端口固定已支持最高速度的标准通讯;而下行端口会和连接的USB设备所支持的速度相匹配。
功能设备补充第三个特征:USB主机只要为该功能设备分配一个USB地址。
1.2.2USB设备内部架构
其中,配置和接口是抽象概念,用来描述USB功能,而端点是实际的物理单元,可以用于进行实际的数据传输。
在使用USB设备之前必须由主机指明采用哪个配置、哪个接口。
USB设备会通过各种的描述符来说明其设备架构中的各种概念属性,有设别描述符、配置描述符、接口描述符、端点描述符、字符串描述符等。
(1)设备
一个设备只会有一个设备描述符,如果是高速设备,它既支持高速传输,又有全速传输,那必须还要支持限定描述符,用于指出另一传输速率下的设备总体信息。
(2)配置
使用USB之前必须选择一个合适的配置,虽然只有一个配置,但是当前只会有一个配置生效,比如高速设备,即支持高速传输又支持全速传输,则必须还要支持其他的速率配置描述符,用于指出另一传输速率下的设备配置信息。
(3)接口
接口属性是用来说明功能特性的,比如一个USB声卡设备,他可以有两个接口,一个是麦克风接口,一个是耳机输入接口,而且多个接口是可以共存的,有几个接口就会有几个接口描述符。
(4)端点
端点是实际的物理单元,USB设备传输就是在USB主机和USB设备的各个端点之间进行的,有多少个端点,就会有多少个端点描述符。
1.3USB主机与设备连接通讯构成的系统
1.3.1星型总线拓扑结构
在USB系统中,一般USB主机通过集线器(HUB)进行 USB设备扩展,以层次性的星型拓扑结构进行物理连接,如下图所示。
主机(Host)是控制器的中心起点,通过集线器(Hub)进行拓展,最多可以支持七层,包括跟层,这种拓扑结构可以支持最多127个USB设备,分配127个地址。每一个USB集线器都是一个USB设备,可以得到一个地址。
在七层设备中除了根集线器以外最多可以支持5层集线器相连,即一个USB功能设备最多可以通过这五个集线器连接到USB主机上。
第六层的设备Hub中既含有集线器又包含设备,这种设备被称为复合设备。
1.3.2通讯软件协议特征
其中第2条中的“帧”用于低速和全速,“微帧”用于高速。
二、连接与检测
在USB接口优势中有一个很明显的特征:支持热插拔。当USB主机连接到USB设备后,他不但能自动检测到设备的连接和拔出动作,而且还会知道所连接设备当前的通讯速度。
2.1连接
2.1.1低速设备
下图中一个低速设备和USB主机连接的一个示意图,已经写的非常详细了,不在赘述。
没有连接就是上节所讲的SE0状态,此时USB主机检测到SE0状态至少维持2.5个毫秒,就认为没有设备连接。
有连接设备时,设备上D-上拉电阻与主机上D-下拉电阻构成分压,所以在D-上会出现3V左右的电压,D+上仍然是 0V,就是上节所讲的差分零。该状态至少维持2.5个毫秒,就认为有设备连接,并且当前设备是一个低速设备。
2.1.2全速设备
连接后的状态就是差分1,其他不再赘述。
2.1.3高速设备
高速连接比较特别,因为分为高速主机和高速设备,他们之间时一个双向检测,
USB高速设备与主机的连接及速度检测过程
本章节介绍高速设备与主机的连接。高速设备和主机需双向检测速度。高速设备先以全速设备身份与主机相连,主机输出复位信号,设备发切普 k 信号表明高速身份,主机回 k 阶序列表明高速身份,之后设备切换电阻进入高速模式,二者据此决定通讯速度,过程由控制器主动完成 。
USB 主机与设备插拔识别、速度检测及总线状态总结
本章节总结USB主机和UFC设备插拔识别及速度检测结果,介绍设备断开、连接及不同速度设备检测的电频信号判断。还插入总线状态知识点,包括正常工作(有周期性soft包)、总线复位(用于驱动低震低负到0伏,连接或出错时出现)、总线挂起(总线上空闲超3毫秒,主机停止传输,设备可选择进入挂起) 。
介绍总线上的动作变化,包括从无连接到总线连接(主机检测设备过程略)、从总线正常活动到总线挂起(无传输包且维持 3 毫秒以上)、从总线挂起到正常活动(即唤醒,分主机唤醒设备和设备唤醒主机,以 k 状态信号开始并持续一段时间),之后主设备正常工作,主机控制器下游端口发 soft 包 。
USB通讯之枚举传输阶段介绍
本章节介绍 USB 通讯环节,分为枚举传输和用户数据通讯两阶段。重点讲述枚举过程,这是设备连接主机后必经历的,主机会借此了解设备信息并启用配置功能。还提到主机检测到设备连接后,会预留 10100 毫秒到 200 毫秒让设备稳定,以防供电后内部未完成上定过程致传输失败 。
USB设备主机枚举流程及相关描述符介绍
本章节介绍主机对USB设备的枚举步骤,从第四步主机控制器输出复位信号,到第十步主机分析设备信息、加载驱动并设置设备配置。还阐述了枚举中重要的描述符,如设备描述符、配置描述符等,指出它们的作用、长度及获取方式,枚举结束主机识别设备功能结构以进行后续操作 。
USB控制传输的结构、数据包规律及实际通讯讲解
本章节介绍控制传输。控制传输是 USB 设备都需支持的传输,在主机枚举设备中常用。它有控制写、控制读、无数据控制三种结构,各有建立、数据、状态阶段(无数据控制无数据阶段)。还讲解了各阶段的事务构成、数据包类型及交替规律,最后以控制写为例展示实际物理通讯过程
控制传输的阶段结构及特征
本章节介绍控制读控制度,其获取设备描述符分三个阶段,建立阶段 set up 事务发控制请求,数据阶段设备上传数据有三个in 事务,状态阶段 out 事务结束且数据包长为 0。还提到无数据的控制传输仅建立、状态两阶段。总结指出控制传输有三种结构,必有的是建立和状态阶段,数据阶段部分结构才有。
收起
各阶段特征总结,重点讲建立转阶段及数据阶段特点本章节说话人1总结各阶段特征。建立转阶段有固定8字节结构,数据包 PRD 为data 0,应答包为 ACK。数据阶段在控制读和写中,由 in 或 out 事物组成,数据包从 data 1 开始 E0 交替翻转,应答包有三种状态。状态阶段数据包长度为 0,PID 为 data,无数据阶段则启动固定 8 字节 setup 事务。
收起
控制传输setup建立阶段8字节命令请求结构解析本章节详细介绍控制传输 setup 建立阶段的固定 8字节命令请求结构。第一个字节表明请求特性,含传输方向、请求类型、请求对象;第二个字节是主机请求码;第三个字节作请求码参数;第四个字节指明接口号和端点号;最后一个字节表明数据阶段最大字节大小,无数据传输阶段写0,设备应用时需解析此 8字节。
收起
回顾知识点,包括认识 USB 主机和设备的内部分层结构,以及主机连接设备用到的 USB Hub;讲解了主机和设备的连接检测过程;介绍了枚举过程及主机枚举设备的步骤;还学习了控制传输的结构和请求包定义。最后表示如有疑问可留言到指定邮箱。
明天11号写好
二、连接与检测
三、枚举过程
四、控制传输
本文参考:《USB技术应用与开发》第二讲:连接和枚举_哔哩哔哩_bilibili
USB协议分析 - __小火车 - 博客园(其实还没有参考到,但是写的非常好,插一个眼)