USB百科
+ -

USB的通讯过程

2021-05-22 3364 3

USB2.0采用两根信号线负责与总线上的设备交换数据(分别为D+,D-)。这些电缆形成了所有设备必须共享的惟一的一条传输通路。 RS-232有一条Tx线用来传输一个方向的数据,一条Rx线用来传输另一个方向的数据。与RS-232不同,USB的一对电线只传输一个不同的信号,不 同方向的信号要按顺序来传输。

详见 USB引脚接线定义

  因为所有的传输共享一个数据通道,所以每一个事务必须包括事务的源和目的地址。每个设备有一个由 主机分配的惟一的地址,所有的数据都是流向主机或从主机获取。每个事务都是以主机发送数据块开始的,这个数据块包括接收设备的地址以及设备中被称为终端的 一个特殊位置。一个设备发送的每个数据是为了响应从主机接到的请求而发送的接收到的数据或状态信息。  

  USB通信分为两类,根据它们被用于原始配置还是应用中。在配置通信中主机通知设备,设备收到通知后准备好交换数据。大部分这类通信发生在上电或连接时主机检测到外设的时候。应用通信出现在主机的应用程序与一个检测到的外设交换数据的时候。这些是实现设备应用的通信。例如,对鼠标来说,应用通信是发送点击动作给主机,主机端应用程序接收到这个动作后执行相应动作。

USB配置通信

  在检测过程中,设备的固件对主机的一系列标准请求做出响应。设备必须识别出每一个请求,返回被请求的信息。

  在PC上,Windows执行检测工作,所以不涉及用户编程的问题。然而,为了完成检测工作,Windows必须有两个可用的文件:一个识别这个设备驱动程序的文件名和位置的INF文件和设备驱动程序本身,如果您的项目符合某种通用设备类,则操作系统可能已经提供了此类设备的所需的这两个文件,而不需要开发人员自己提供。

  根据设备以及设备将被如何使用,设备驱动可能是如下两者之一;Wlndows自带的或芯片或外设厂商提供的。INF文件是一个文本文件,通常你可以对驱动提供考提供例子,稍加修改就可以得到了。

USB应用通信

  在主机已经与设备交换了检测信息并且设备驱动已经被分配并载入后,应用通信过程可以非常顺利地进行下去了。在主机上,应用程序可以使用标准Windows API功能来读和写设备。在外设上,传输数据通常需要把要发送的数据放在USB控制器的传输缓冲器中,当一个硬件中断发出数据已经到达的信号时从接收缓冲器中读取接收到的数据,并且在完成传输时确保外设准备好下一次传输。

USB主机与设备建立通信的过程

  主机端的USB集线器监视着它的每个端口的信号线的电压,当USB设备插入主机时,信号线的电平会发生变化,此时主机知道有新设备插入了。

  当主机检测到设备的插入后会首选重启这个设备,接着主机发出Get_Port_Status请求来验证设备是否已经重启,设备重启后主机通过检测根信号线的电平状态判断设备的速度。

  主机发送第一次Get_Descriptor(wValue字段的高字节为0x01,表示设备描述符)请求取得设备描述符设备描述符提供了设备的多种信息,包括:设备通讯终端0的最大包的大小,设备支持的配置号以及有关这个设备的其它信息,主机通过对这些信息的分析以确定接下来的通信动作。

  设备描述符里规定了设备一个或多个配置描述符,主机再次或多次发出Get_Descriptor(wValue字段的高字节为0x02,表示配置描述符)指令来读取这些配置描述符,第一次只读出配置描述符的前9个字节,这9个字节里包含了配置描述符和它的所有从属描述符(接口描述符端点描述符)的总长度,然后主机根据这个长度读出设备的所有配置描述符(当然包括其所有从属描述符)。

  在读取完配置描述符后,若之间读取的设置描述中指定了相关字符串描述符(用来描述厂商、产品和设备序列号信息的)的索引,主机将发出若干次Get_Descriptor(wValue字段的高字节为0x03,表示字符串描述符)命令来获得这些字符串描述,此时主机将会弹出窗口,展示发现新设备的信息,产商、产品描述、型号等。

  在主机已经从它的描述符中知道了能够知道的所有信息后,便开始为这个设备安装驱动程序。

  加载了USB设备驱动以后,主机发送Set_Configuration命令请求为该设备选择一个合适的配置。

  至此,USB枚举过程结束,设备可以正常使用了。

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USB 设置特性请求SetFeature
ID请求码说明3SET_FEATURE用来启用或激活命令接收者的某些特性SetFeature请求用于设置或使能USB设备、接口或端点的特性值,和CLEAR_FEATURE请求相对应。SetFeature请求同样没有数据阶段。bmRequestType(1)b......
USB音箱 工作抓包分析
USB音响打开Length Phase Data -------- ----- ------------------------------ -------------- CTL ......
USB传输过程中的延迟
USB传输过程中的延迟可分为包间延迟、USB线缆上的延迟和USB集线器延迟。在数据传输时,USB主机和USB设备能够计算整个数据传输时间,这个数据传输的时间由发送方发数据信息包结束时开始计算,直到接收到接收方的应答信号为止。USB包间延迟USB数据传输的包间延迟只存在于一个USB数据流管理中的各......
USB3.2超高速兼容USB2.0数据收发的双总线架构
超高速USB体系和以前的USB版本的功能一致,都是通过USB线缆将USB主机USB外设相连,进行数据交互的。所与连接到该条USB总线上的所有设备在主机控制器协调下,共享带宽。USB总线允许外部设备被接入(attached),配置,使用或移除。USB3.2是双总线架构,其中一条总线用于向后兼容USB2......
USB超高速3.0协议与USB2.0协议的差异
超高速在框架层级是向后兼容 USB 2.0 的。然而, USB 2.0 和超高速协议还是有一些根本性的差异:USB 2.0 使用三部分事务交易(令牌,数据和握手),而超高速对这相同的三部分的使用是不相同的。对于输(OUTs),令牌被列入数据包;而对于输入(INs),令牌则被握手所取代。USB 2.0......
linux下UsbMon-WireShark之USB协议抓取分析
usbmon配置使用usbmon抓包分的,是需要 内核开启CONFIG_USB_MON=m, 重新编译内核, 编译ko :make ARCH=arm64 CROSS_COMPILE=aarch64-himix100-linux- CONFIG_USB_MON=m M=./drivers/usb/ ......
USB 2.0 协议中J、K、SE0状态的定义
USB 2.0协议中经常会看到以下术语:Chirp K、KJ序列、SE0。这里的状态是根据低速、全速/高速下设备D+和D-上不同的电平信号来决定的。1、J态、K态、SE0,SE1信号转换状态状态Low speed (D+ pull-up)Low speed (D− pull-up)......
USB 设置描述符SetDescriptor
ID请求码说明7SET_DESCRIPTOR修改设备中有关的描述符,或者增加新的描述符SetDescriptoret用于设置USB的描述符,在SetDescriptor请求的数据阶段,主机将向USB设备发送指定的描述符类型 。bmRequestType(1)bRequest(1)wValue(2)w......
USB3.0硬件编码格式-8B/10B编码
1.编码技术基础理论 在高速的串行数据传输中,传送的数据被编码成自同步的数据流,就是将数据和时钟组合成单一的信号进行传送,使得接收方能容易准确地将数据和时钟分离,而且要达到令人满意的误码率,其关键技术在于串行传输中数据的编码方法。 目前, 高速接口正在被广泛应用于包括 SATA、 SAS、 高速......
USB超高速 超高速端点伴随描述符
在接口中描述的每个超高速端点都紧跟着一个超高速端点伴侣描述符( EndpointCompanion descriptor)。这个描述符包含只给超高速端点定义的附加端点特性。这个描述符总是 作 为 配 置 描 述 符 信 息 的 一 部 分 在GetDescriptor(Configuration) ......
为什么我的USB设备如U盘从一个端口换到另一个端口会重新安装驱动?
在 Windows 2000和更高版本的操作系统中,当 USB 设备从一个端口移到另一个端口时,将创建一个新的物理设备对象 (PDO)。 如果硬件报告了唯一的 USB 序列号,则不会创建新的 PDO。若要重复使用同一 PDO 并确保设备不会改变,无论设备是否已重新插入相同的端口或新端口,硬件供应商必......
USB-UAC麦克风 音频控制接口
音频控制接口描述符描述了设备的结构(拓扑结构),并通过特定类请求对音频的控制。UAC麦克风 音频控制接口描述符偏移地址字段长度值描述0bLength10x09接口描术符的长度1bDescriptorType10x04描述符的类型接口描述符2bInterfaceNumber10x00接口ID号3bA......
USB与其它总线相比的优点是什么
USB 的设备可以接在 PC 上的任意的 USB 接口上. 而使用 Hub 还可以扩展使更多的USB设备连接到系统中 USB的Hub 有一个上行的端口(到host) 有多个的下行端口(连接其它的设备). 从而可以使整个的系统可以扩展的连接 127 个外设. 其中 Hub 也算外设.对于US 系统来说......
USB音箱 UAC设备描述符分析
这里看到,USB规范采用的是USB1.1版本,不过字符串中又显示的是”USB2.0 Device”,所以这里就有点迷~关于设备描述符各字段的详细解释,详见USB规范中设备描述符一节。从bDeviceClass,bDeviceSubClass和bDeviceSubClass都被置为0来看,这是一个典......
站内大事
2018年9月,开始筹建,初始为个人博客。2019年11月,网站进行版本更新,并修改站名为字节流,使用新的域名www.bytekits.com【域名已经作废】, 交将原来个人博客的技术文章重新编辑并入。2019年11月,增加【C/C++技巧】,此为本人原来在公司内部的技术培训内容。2019年11月,......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!