你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

USB的识别过程

[复制链接]
尉缭1 发布时间:2013-8-20 09:07
 现在很多的主控上都带有USB的功能,但是对于初学者来说,这方面应用还是比较棘手,因为USB的不但固件程序需要编写,PC端的驱动也要编写,而且驱动写好了还要写个上位机才能看出效果。这样调试起来十分困难,建议从USB的键盘,鼠标开始做,了解清楚了,再做自己的协议就比较简单了。 
USB的概念历史啥的这里就不说了。我们先不管具体的数据包格式,这一节先从整个包的层面上简单的说,过程是这样的, 
(1)设备插入,主机会轮回查询各个USB端口,主机检测到D+与D-之间有电压差,就认为有新的设置接入。主机等待100ms后发出复位请求。设备接到复位请求后将产生一个外部中断信号。 
(2)枚举过程,主机这时候只是知道有新的设备插入了,但是不知道插进来个什么东西,所以就开始询问它是什么设备,怎么用,负荷能力怎么样。这时候就进入了枚举过程。因为刚刚插入的设备没有分配地址,就用默认地址0,首先发送一个Get_descriptor(获取设备描述符)指令包,设备接到包后就开始解析包(其实就是你在固件程序里判断处理),然后按固定格式返回自己设备的设备描述符,这一步主要是主机知道你的USB设备的基础属性,比如支持的传输数据长度,电流负荷,支持的USB版本,以及以后方便电脑找驱动的PID和VID。
(3)这时候主机知道设备(你做的设备,简称设备吧)的数据长度还有电流大小后,下一步就是给设备分配一个属于设备的地址。 
(4)给设备一个地址后就开始询问设备的具体配置。首先发送一个试探性的设备配置请求Get_configuration(要求固定返回9个设备配置字),设备接到后就开始发送9字节的设备配置字,其中包括设备的配置字的总长度,这样主机就知道设备的配置到底有多长,然后再发一次设备配置请求,这时设备就开始上传所有的配置字。这时侯主机就已经很明白设备的工作方式就各种特性,然后就可以正常工作了。 
(5)如果设备在前面的某些配置(以后章节详细说明)要求要说明自己的名字什么的,这里还要上传字符串描述符。 
(6)如果是鼠标或者键盘还要上传报告描述符。  
(7)争创数据传输,这个时侯设备已经被主机正式接受并且注册了,你可以通过自己写的测驱动或通用驱动与电脑进行通讯了。
收藏 评论1 发布时间:2013-8-20 09:07

举报

1个回答
sfd123-302670 回答时间:2020-5-12 16:57:44
如果从设备虚拟了多个串口,主机在哪个步骤完成识别的?

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版