自学内容网 自学内容网

USB枚举过程记录和个人认识以及设备程序的框架简述

主机和从机认识

参考

主机

在这里插入图片描述
在这里插入图片描述

从机

在这里插入图片描述

从usb设备连接usb口整个过程概述

参考参考1
枚举过程简单说就是usb设备插入电脑接口后建立最初的识别设备通信的过程
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
参考
在这里插入图片描述

参考下面的分析是从开始对默认地址第一次发送Get_Descriptors开始的
在这里插入图片描述

主机和设备断开或连接以及高速还是全速设备检测过程

参考
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设备程序框架

参考
主要由几层条件判断:
第一层:USB产生中断后,进入中断,判断中断来源:数据传输完成、复位、还是挂起
第二层:主要考虑数据传输完成中断,通过状态寄存器判断数据对象是那种数据包(setup,in,out)和那个端点,setup对应的是0端点。需要注意的是数据的真正传输还是通过IN/OUT包在判断setup中的处理只是设置,并没有上传主机
参考
在这里插入图片描述
以上面枚举过程来说,usb中断里主要处理的事情就是对Get_Descriptor命令的各种条件判断,进而知道返回的数据应该是什么。
前面的GET_PORT_STATUS为了得到设备,端口或接口信息,从机返回值是两个字节
注意第一次的Get_Descriptor命令只是读取前8个字节就足够了,只是为了得到传输的全部字节数量,
然后设备被复位,主机发送set_address命令,设备返回ack后,主机和从机就会以新地址进行通信。
第三层:接下来是多个Get_Descriptor,通过命令中的第三个字节知道是想要得到那种描述符。同时各种标准请求命令(set_address,set_configuration等)的处理
在这里插入图片描述
下面是HID类设备描述符类型,可判断是否是要把HID报表描述符上传
在这里插入图片描述
最后就是在主函数中设置中断和初始化,枚举完成后,数据正常通信的一般都是IN端点的数据上传。只有主机发送请求命令,设备才能上传数据。主机会在每个时间周期(ms)内发送请求命令

在这里插入图片描述

模拟主机控制设备的流程

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_43794311/article/details/140628386

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!