在我们的实际工作中,不管是硬件设计调试,如STM32平台的硬件,还是软件调试,如LINUX的usb驱动调试,USB都是一个必须掌握的通讯方式。USB 的整个架构是很庞大的,但对于普通的开发人员需要掌握的就很少。   学习USB通讯就得搞懂USB枚举过程。在工作中,不管是硬件还是系统,只要USB枚举过程无误的进行,USB的通讯基本上就没
1.枚举就是从设备读取各种描述符信息,主机根据读取的描述符信息来决定加载什么驱动,确定是什么样的设备以及如何通信等。2.在USB设备的枚举过程中使用了控制传输,这种传输保证数据传输的正确性。控制传输分为:建立过程(主机发起)、可选的数据过程和状态过程。3.控制传输解析:(1)主机发起建立过程,建立过程开始于一个SETUP令牌包,后面紧跟一个DATA0数据包,接着就是数据过程。(2)如果是控制读传输
文章目录1.简介2.描述符3.枚举流程3.1 USB设备请求3.2 流程4.枚举伪代码(从机)5.参考文档 1.简介  枚举就是主机获取从机的信息(各种描述符)用来加载不同的驱动,告诉主机要怎么控制、通信,主机检测到从机上线之后会进行枚举的流程,枚举USB中最重要也最复杂,前面说到USB传输有四种模式,控制传输最繁琐但能够保证枚举的正确性。2.描述符  USB1.1中标准描述符有设备描述符(D
一、USB枚举过程分析1、USB的插入检测结合智林STM32板上的USB设备接口,分析一下插入检测控制:  当12脚短接,Q1截止,Q2导通,D+上拉,windows就会认为USB接口有一个全速设备,马上复位总线,并开始枚举设备。如果23脚短接,则Q1状态取决于USB-DISCONNECT(PD2)脚的状态。CPU复位后,GPIO引脚处于浮空输入状态。所以此时,Q1导通,Q2截
转载 11月前
228阅读
USB主机在检测到USB设备插入后,就要对设备进行枚举了。为什么要枚举枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等。枚举的过程:1、  USB主机检测到USB设备插入之后,就会先对设备复位。USB设备在总线复位后其地址为0,这样主机就可以通过地址0和那些刚刚插入的设备通信。USB主机往地址为0的设备的端点0
转载 11月前
150阅读
     本系统中所谓USB设备与主机是通过检测Vcc上拉电阻的变化来确定是否有设备连接的。在D12内部集成了1.5kΩ的上拉电阻,默认状态下不与Vcc相连,程序运行时可以向D12发送连接命令使1.5kΩ电阻连接到Vcc,这样主机便检测到有设备连接。它的枚举过程分析如下。设备连接到总线后,设备从总线获得5V电源,程序首先初始化,端口,然后向D12发出USB
# Android查看枚举USB命令 在安卓开发中,USB通信是一个非常重要的功能,尤其是在需要与外部设备(如打印机、扫描仪等)进行数据交互的时候。本文将介绍如何在Android中查看和枚举USB设备的命令,并提供相关代码示例。 ## 什么是USB命令? USB(通用串行总线)命令是一组指令,用于与USB设备进行通信。这些命令可以用于发送和接收数据、控制设备操作以及查询设备状态。对于Andr
原创 16天前
9阅读
图解USB总线枚举过程1. 检测到USB设备后,对USB设备复位,使设备地址变为0x0。发80 06 01 00 00 40 00命令,读取设备描述符命令,由于不知道设备描述符的长度,暂时要求返回数据长度为0x40。2. 给这个新接上的设备分配地址。3. 设置地址成功后,对新地址发送获取设备描述符命令,此时已经知道了它的长度,直接按这个长度即可。4. 在得到设备描述符后,我们再发获取配置描述符命
(实例讲解USB枚举(配置)过程) 结合自己用BUShound抓的数据(下图),发现几乎完全一致。 中间涉及到一个USB Mass Storage协议,可以参考这个: 和这个: 系统梳理一下USB设备(U盘)的上电使用过程: 第一阶段:标准请求过程 目的:配置USB设备,就是让host知道你到底是什么设备,这个通过接口描述符中的binterfaceclass获得,然后给设备分配一个地址方便后
实现Android源码枚举的步骤如下所示: | 步骤 | 操作 | | ---- | ---- | | 第一步 | 克隆Android源码仓库 | | 第二步 | 编译Android源码 | | 第三步 | 配置编译环境 | | 第四步 | 枚举源码文件 | 下面将详细介绍每一步需要做的操作以及相应的代码: **第一步:克隆Android源码仓库** 在任意目录下打开命令行终端,执行以下命
原创 8月前
28阅读
USB枚举详细过程剖析(转)从驱动开发网看到一篇《USB枚举详细过程分析》,依据自己的理解和经验对原文稍加改动。本文仅供参考,一些顺序并不是固定的。 本文描述的是Windows系统的USB枚举过程,但对嵌入式系统自行开发的USB主机驱动程序也有参考价值。 USB枚举详细过程剖析 1.主机集线器检测到新设备 主机集线器监视着每个端口的信号电压,当有新设备接入时
转载 11月前
81阅读
从硬件到软件,从电气特性到传输事务的建立,下面的思维导图是实例通过数据分析仪得到的流程。对调试USB底层驱动有很好的指导作用。先看USB设备状态,对于全速设备,电气上,主机监测到D+ 上拉,则认为已连接,开始加电,第三步后开始软件方面的枚举过程。 连 接 加 电 缺 省 编 址 配 置 挂 起 说 明不 __ ____ ____ ____ ____ __设备尚未连接至接口.其他特性无关是 不 __
一 . 枚举详细过程USB主机在检测到USB设备插入后,就要对设备进行枚举了。为什么要枚举呢?枚举就是主机host从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB枚举过程,只要枚举成功了,那么就已经成功大半了。    在说枚举之前,先大概说一下USB的一种传输模式——控制
转载 2月前
46阅读
  USB主机在检测到USB设备插入后,就要对设备进行枚举了。枚举就是从设备读取一些信息,知道设备是什么样的设备,如何进行通信,这样主机就可以根据这些信息来加载合适的驱动程序。调试USB设备,很重要的一点就是USB枚举过程,只要枚举成功了,那么就已经成功大半了。   控制传输在USB中是非常重要的,它要保证数据的正确性,在设备的枚举过程中都是使用控制传输。控制传输分为三个过程:①建立过
转载 2023-06-03 21:06:12
233阅读
附一个很好的枚举过程的详细流程:◆ 用户将一个USB设备插入USB端口,主机为端口供电,设备此时处于上电状态。 ◆ 主机检测设备。 ◆ 集线器使用中断通道将事件报告给主机。 ◆ 主机发送Get_Port_Status(读端口状态)请求,以获取更多的设备信息。 ◆ 集线器检测设备是低速运行还是高速运行,并将此信息送给主机,这是对Get_Port_Status请求的响应。 ◆ 主机发送Set_Port
转载 7月前
38阅读
目录一、概述二、USB 设备状态三、USB 枚举流程四、总结 一、概述USB 枚举,在有些资料中,认为是插入USB后,USB 设备被分配到新的设备地址,就可以认为枚举结束,这可能是更准确的定义,但为了更好的说明,也可以把插入后的整个交互过程都称为枚举,也就是设备能被主机正确识别,可以被上位机使用了。二、USB 设备状态USB 枚举完成之前,USB 设备要经过一系列的状态变化,才能够最终完成枚举
在Linux操作系统中,USB设备的管理和识别是一个很重要的功能。特别是对于那些需要连接外部设备进行数据传输或者操作的用户来说,保证USB设备的正常使用是至关重要的。在Linux系统中,使用命令行工具来进行USB设备的管理和枚举是一种常见的做法。 枚举USB设备是指系统通过扫描和识别USB设备,从而确定其在系统中的存在和属性。在Linux系统中,常用的命令行工具包括lsusb和usb-devic
在Linux操作系统中,USB设备的枚举是一个非常重要的过程,它是指系统在插入USB设备时,自动识别并分配相应的资源给该设备的过程。Linux操作系统对USB设备的枚举过程进行了精心设计,确保了系统和USB设备之间的良好交互。 首先,在Linux操作系统中,USB设备的枚举是通过USB核心驱动程序来实现的。这些驱动程序包含在内核中,负责对USB设备进行检测、识别和通信。当插入一个USB设备时,系
原创 6月前
115阅读
枚举之前,是设备插入,具体过程如下:    不论此时设备是否插入USB端口(USB HUB),主机都会轮回查询各个USB端口,主机检测到D+与D-之间有电压差,就认为有新的设备接入,主机等待100ms后发出复位请求。设备接收到复位请求后将产生一个外部中断信号枚举过程:    主机这时候只是知道有新的设备插入了,但是不知道插进来的是什么东西,枚举过程就是让主
转载 8月前
61阅读
在说枚举过程之前,先把一些必须了解的说明白一.USB包结构和分类     包的共同特点是,都是以同步域开始,接着是PID,最后以EOP结束,而设备端则靠SEI(串行接口引擎,硬件上实现)来进行这些底层的处理,包括CRC的校验之类的东东。    8位的PID,PID0~PID3,用于表示包,高四位进行取反,进行校验    各种包的如下:    令牌类:OUT,
转载 2022-01-05 11:47:56
751阅读
  • 1
  • 2
  • 3
  • 4
  • 5