计算机上的usb设备是什么东西,电脑是如何识别你插上了USB设备

news/2025/3/15 1:16:01/

描述

每次当插上鼠标或者U盘的时候,电脑是怎么知道是什么设备的呢?这里用到的就是枚举了。枚举,其实就是让HOST认识这个USB涉笔,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。 USB设备枚举过程可以分为8个部分:1、  获取设备描述符2、  复位3、  设置地址4、  再次获取设备描述符5、  获取配置描述符6、  获取接口、端点描述符7、  获取字符串描述符8、  选择设备配置

先看一下上篇文章看的USB鼠标枚举的包吧。那样更加明显易懂。

15344e6e0ca4722eda546badaf7a68f7.png

1、  获取设备描述符

143ce559da7b6a553032a68e8b42d2b0.png

这次传输方式是控制传输,她由5个事务组成,分别是SETUP、IN、IN、IN、OUT。

首先看第一个事务即SETUP事务的data数据,根据其数据再根据usb协议中的setup协议可以知道其含义了。下面按照自己来看协议

3125d558f112cb0b1253a1aa6e68f546.png

72da87b41633b66e3190f0ddab8283ee.png

2e2daee1152dca581770d8953c445848.png

af27ec182b2fc9acb6c022aa6450d544.png

2、  复位

a180fc3cf17a41bb61376741c84741de.png

3、  设置地址

619843cd056b9485a782f1c466ec80ff.png

f93dbe09bfe70863a8101e1c9c34e097.png

bf422c8310a88af99ed3ec59b296c5b1.png4、  再次获取设备描述符这个是第2部分是一样的,就不再分析了。

5、  获取配置描述符

17b840323033366bd0de953f53691cca.png

看第一行就知道了这个是GET_DESCRIPTOR,CONFIGURATION descriptor。下面还是看下具体的事务吧。

首先还是SETUP事务了,看数据80 06就可以知道了是设备要发描述符给主机,而02就表示configuration,就是配置描述符了,

接着就是IN事务,设备给主机发送数据了。具体的数据含义看下图。

最后就是OUT事务。

b05d2a711437cbe7a7d25b380aada58f.png

6、  获取接口、端点描述符

cd00b6a4d0f9f51fc455352411cf9efa.png

还是老方法,看SETUP事务,和上一个一样,是获取配置描述符,这里的配置描述符。

具体含义,看下面的图就明白了。

68bd0ab2357481985ad362d70e2b81de.png

dfc75ef1ca016e43bafef4f60c2c29be.png

d9872b4cf7af4d827d047e64e2c20051.png

213009deddabb9cbf9471332fa2c1416.png

7、  获取字符串描述符

156648164507d78ed183222201029b2f.png

493c5860f574181d85130f9489980c03.png

1b7e47376928f698be436df80bd44ef4.png

这里就不多做分析了。  8、  选择设备配置

df99385b01e4d7a46a4dfa3b946ea116.png

这里,SETUP事务,主要是DEVICE 的 SET_CONFIGURATION。 好了,差不多USB的枚举就是这么回事了。

打开APP精彩内容

点击阅读全文


http://www.ppmy.cn/news/810143.html

相关文章

电脑无法通过USB方式访问手机存储

本人电脑是win10系统,偶尔将安卓手机连接到电脑,USB用途选择“文件传输"或者连接方式选择“媒体设备(MTP)”之后,发现电脑无法显示手机图标,而且找不到盘符或移动盘的标志,通过驱动精灵、驱…

手机无法被计算机识别,解决手机无法被PC识别的问题

相信很多Windows电脑用户都遇到过类似问题:当用数据线将手机和PC相连后却无法被Windows系统识别,无论重启PC还是手机都无效。此时,我们该如何解决? 手机端的设置问题 如果你的Android手机突然无法被PC识别后,请先检查手…

手机连接电脑不读手机的终极解决方案

解决方案 首先在开发者选项里面把USB设置关闭没有开发者选项的自己百度关闭USB选项后,重新用数据线连接电脑如果还说无法识别的USB设备,请重新用数据线连接电脑,基本两三次就会成功如果你是开发者的话,再去打开USB设备就可以调试…

手机无法被计算机识别,关于手机无法被电脑识别?

相信很多Windows电脑用户都遇到过类似问题:当用数据线将手机和PC相连后却无法被Windows系统识别,无论重启PC还是手机都无效。此时,我们该如何解决? 手机端的设置问题 如果你的Android手机突然无法被PC识别后,请先检查手…

手机计算机无法使用,用数据线把手机连接电脑,电脑无法识别,怎么回事?

面丶丶具 回答数:3 | 被采纳数:38 2017-12-26 17:20:03 首先,先试下其他USB设备在此接口上是否正常。 如果还是无法识别,有可能是系统问题。尝试更新一下驱动程序,或者进入BIOS看看USB2.0是否开启,并改为…

fastadmin数据内容admin_id权限

/*** 是否开启数据限制* 支持auth/personal* 表示按权限判断/仅限个人* 默认为禁用,若启用请务必保证表中存在admin_id字段*/protected $dataLimit true;/*** 数据限制字段*/protected $dataLimitField admin_id;

精彩回顾 | 模型与数据驱动工业数智化——Modelica暨装备数字化研讨会(2023)圆满召开

2023年6月30日,以“模型与数据驱动工业数智化”为主题的Modelica暨装备数字化研讨会(2023)在江苏省苏州市隆重召开。会议由苏州同元软控信息技术有限公司(简称“同元软控”)与哈尔滨工业大学计算学部等单位联合主办&am…

FREERTOS使用Delay函数

//初始化延迟函数 //SYSTICK的时钟固定为AHB时钟,基础例程里面SYSTICK时钟频率为AHB/8 //这里为了兼容FreeRTOS,所以将SYSTICK的时钟频率改为AHB的频率! //SYSCLK:系统时钟频率 void delay_init() {u32 reload;SysTick_CLKSourceConfig(SysTi…