欢迎FPGA工程师加入官方微信技术群
每次当插上鼠标或者U盘的时候,电脑是怎么知道是什么设备的呢?这里用到的就是枚举了。枚举,其实就是让HOST认识这个USB涉笔,并且为该设备准备资源,建立好主机和设备之间的数据传递机制。USB设备枚举过程可以分为8个部分:1、 获取设备描述符2、 复位3、 设置地址4、 再次获取设备描述符5、 获取配置描述符6、 获取接口、端点描述符7、 获取字符串描述符8、 选择设备配置先看一下上篇文章看的USB鼠标枚举的包吧。那样更加明显易懂。
把枚举过程和这幅图对比下,是不是一样呢?好了,接下去就一部分一部分慢慢分析吧。1、 获取设备描述符这次传输方式是控制传输,她由5个事务组成,分别是SETUP、IN、IN、IN、OUT。
首先看第一个事务即SETUP事务的data数据,根据其数据再根据usb协议中的setup协议可以知道其含义了。下面按照自己来看协议 a、80,她表示的就是设备要发送数据给主机。b、06,就是获取描述符。c、00 01,和bRequest对应,就是 DEVICE,就是设备的描述符。d、00 00,zeroe、40 00,设备描述符长度 然后看IN包,就是设备把她的设备描述符发给了主机。 2、 复位 这个没什么好讲的了。3、 设置地址
简单分析下,首先是setup事务,根据所发的数据和USB的协议可以知道05:02; 然后是一个IN事务。 4、 再次获取设备描述符这个是第2部分是一样的,就不再分析了。5、 获取配置描述符
看第一行就知道了这个是GET_DESCRIPTOR,CONFIGURATION descriptor。下面还是看下具体的事务吧。
首先还是SETUP事务了,看数据80 06就可以知道了是设备要发描述符给主机,而02就表示configuration,就是配置描述符了,
接着就是IN事务,设备给主机发送数据了。具体的数据含义看下图。
最后就是OUT事务。
6、 获取接口、端点描述符还是老方法,看SETUP事务,和上一个一样,是获取配置描述符,这里的配置描述符。
具体含义,看下面的图就明白了。7、 获取字符串描述符
这里就不多做分析了。 8、 选择设备配置这里,SETUP事务,主要是DEVICE 的 SET_CONFIGURATION。 好了,差不多USB的枚举就是这么回事了。欢迎通信工程师和FPGA工程师关注公众号
FPGA微信技术群
欢迎大家加入全国FPGA微信技术群,这里有一群热爱技术的工程师,在这里可以一起交流讨论技术!
用手指按住就可以加入FPGA全国技术群哦
FPGA IP核服务:各类优质IP核服务商,服务到位,有保障!有需求的可以直接联系群主!
FPGA技术群平台自营:Xilinx Altera 镁光、三星、海力士、ADI TI ST NXP 等品牌的优势代理分销商,欢迎大家有需求随时发型号清单,我们将在第一时间为您提供最优竞争力的报价!价格低于您原有供应商5%以上!欢迎询价-直接把需求发给群主!
FPGA技术群官方鸣谢品牌:Xilinx、 intel(Altera)、microsemi(,Actel)、LattIC e,Vantis,Quicklogic,Lucent等