版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、USB HID设备开发简介与实例分析目录1.USB简介22.USB通信机制与设备介绍32.1USB通信机制32.2USB设备及枚举43.HID设备53.1HID设备简介53.2HID设备报表描述符63.3HID设备的访问74.总线数据分析软件84.1Bus Hound84.2USBlyzer105.实例分析101. USB简介USB是通用串行总线(Universal Serial Bus)的缩写,已有20多年历史。主要是为了简化PC与外设的连接,增加易用性。USB具有即插即用特性,即热插拔。如下图的标准USB接口,电源与地线会突出,在连接时电源与地先接通,然后中间两根信号线再接通,这样防止烧坏
2、芯片。 常见的USB接口:随着智能手机的兴起,Micro-B型USB接口大量使用,并随之产生了Type-C接口,该接口不分正反面随意插拔,传输速度有明显提升,如下图。USB协议类型:随着外设的发展,对接口速度要求越来越高,从USB产生到现在已经经历了5个版本,如下表。2. USB通信机制与设备介绍1.12.1 USB通信机制USB是主从结构的系统。主机叫Host,从机叫Device。通常主机具有一个或多个USB主控制器(host controller)和根集线器(root hub),USB集线器可以对原有的USB接口在数量上进行扩展,但不能扩展出更多的带宽。USB是主从结构,所有的通信都由主机
3、发起。在USB设备连接主机时,主机能检测到接口电平的变化,进而识别出插入的是什么速度类型的设备。USB有四种传输类型:控制传输:USB设备接入主机时,通过控制传输获取设备描述符进行设备识别批量传输:传输大量数据,如打印机和扫描仪中断传输:数据少量但实时性高,如鼠标和键盘等时传输:数据的建立、传送和接收是连续且实时的,对传输延迟非常敏感,如语音传输控制传输:在设备的枚举过程中使用控制传输(Control Transaction),分为三个阶段:建立过程,可选的数据过程及状态过程。建立过程(SETUP)是由USB主机发起的,开始发一个SETUP令牌包,后面跟一个DATA0数据包,接着就是数据过程;
4、如果控制读传输,那么数据过程就是输入数据,如果控制写传输,那么数据过程就是输出数据。如果在建立过程中指定数据长度为0,则没有数据过程,因此称为可选的数据过程。接着就是状态过程,跟数据过程的传输方向相反,如果是控制读传输,则状态过程是一个输出数据包,如果是控制写传输,则状态过程是一个输入数据包。状态过程是用来确认所有的数据是否都正确传输。2.2 USB设备及枚举一个USB设备只有一个设备描述符,设备描述符中决定了该设备有多少种配置,每种配置都有一个配置描述符;在每个配置描述符中又定义了多少接口,每个接口都有一个接口描述符,在接口描述符里又定义了该接口有多少个端点,每个端点有一个端点描述符,端点描
5、述符中定义了端点的大小、类型等。USB的描述符之间的关系是一层一层的。主机获取描述符时,首先获取设备描述符,接着再获取配置描述符,然后根据配置集合的长度,将配置描述符、接口描述符、特殊描述符、端点描述符一次性读回。字符串描述符(非必需)是单独获取的。USB设备描述符示例:(定义设备类型,VID,PID,数据包大小等) 主机枚举出的设备描述符如下(USBlyzer抓包软件):每个USB设备有一个设备地址,USB主机依靠该设备地址访问USB设备。每个设备分出一些端点,如EP0、EP1.。等,有了设备地址和端点地址,USB主机就能准确地对端点发送和读取数据了。USB设备的枚举过程:USB设备一插入U
6、SB主机接口后,主机就加载合适的驱动。Ø USB主机检测到USB设备插入后,会先对设备进行复位。USB设备在总线复位后其设备地址为0,主机通过地址0和跟接入的设备通信。USB主机往地址为0的设备的端点0(EP0)发送获取设备描述符的标准请求(standard request)(建立过程)。设备收到该请求后,会按照主机请求的参数,将设备描述符返回给主机(数据过程)。主机在成功获取到一个数据包的设备描述符并确认无误后,就会返回一个0长度的确认数据包(状态过程)。 控制读传输Ø 主机对设备又一次复位,进入到设置地址阶段。USB主机往地址为0的设备的端点0发出设置地址的请求(控制传
7、输的建立过程),新的设备地址包含在建立过程的数据包中。设备地址由USB主机负责管理和分配,USB设备在收到这个建立过程后,就直接进入到状态过程,设备等待主机请求状态返回(一个输入令牌包),设备收到输入令牌包后,设备就返回0长度的状态数据包。如果主机确认该状态数据包已正确收到,就发送答应包ACK给设备,设备在收到这个ACK后 就启用新的设备地址了。以后主机就通过这个新分配的设备地址来访问USB设备。 控制写传输Ø 主机再次获取设备描述符,使用新的设备地址,获取全部18字节设备描述符Ø 主机获取配置描述符,获取配置集合3. HID设备3.1 HID设备简介HID(Human I
8、nterface Device, 人机接口设备)是USB设备中常用的设备类型,是直接与人交互的USB设备,如键盘鼠标和游戏杆等。HID设备成本较低。另外HID设备并不一定要有人机交互功能,只要符合HID类别规范的设备都是HID设备。由于Windows系统内置HID设备驱动程序,因此HID设备接入到Windows系统时,不需要额外安装驱动。HID设备的内部描述符结构如下:在接口描述符中,包含了HID描述符,HID描述符中包含报表描述符和可选的实体描述符。HID设备连接到主机后,主机通过发送Get_Descriptor请求读取HID描述符和报表描述符。交换的数据储存在称为报表(Report)的结构
9、内,主机通过控制传输和中断传输请求报表来传送和接收数据。HID设备必须有一个中断输入端点来传送数据到主机,中断输出端点则不是必需的。3.2 HID设备报表描述符报表描述符(Report Descriptor)是HID设备中的一个描述符。HID设备是通过报表来给传送数据的,报表有输入报表、输出报表和特征报表三种。输入报表是USB设备发送给主机的,例如USB鼠标将鼠标移动和鼠标点击等信息返回给电脑,键盘将按键数据返回给电脑等;输出报表是主机发送给USB设备的,例如键盘上的数字键盘锁定灯和大写字母锁定灯等;特征报表是非标准输入输出设备使用的报表,可以在任何方向传递。报表是一个数据包,里面包含的是所要
10、传送的数据。输入报表是通过中断输入端点输入的,而输出报表有点区别,当没有中断输出端点时,可以通过控制输出端点0发送,当有中断输出端点时,通过中断输出端点发出。而报表描述符,是描述一个报表以及报表里面的数据是用来干什么用的。通过它,USB 主机可以分析出报表里面的数据所表示的意思。它通过控制输入端点0返回,主机使用获取报表描述符命令来获取报表描述符,注意这个请求发送到接口的,而不是到设备。一个报表描述符可以描述多个报表,不同的报表通过报表ID来识别,报表ID在报表最前面,即第一个字节。当报表描述符中没有规定报表ID时,报表中就没有ID字段,开始就是数据。下图为USBlyzer获取的HID报表描述
11、符,包含了输入、输出和特征三种报表。关于报表描述符,详细参考HID Usage Tables Version 1.12文档。3.3 HID设备的访问在HID设备枚举成功后,主机可以对HID设备发起访问,访问通过Set_Report或Get_Report两种方式,Set_Report是主机用来传递数据到设备(输出报表或特征报表可使用),Get_Report是主机用来从设备获取数据(输入报表或特征报表可使用)。如主机发送64字节数据到HID设备,使用Set_Report控制传输(21 09 00 03 00 00 40 00),其后再接64字节数据。4. 总线数据分析软件4.1 Bus Hound
12、设置要抓包的USB设备(一般勾选自动选择插入的设备)自动选择新插入的USB设备设备树切换到Capture界面中查看原始数据:4.2 USBlyzer是一款分析能力更强的USB总线抓包工具。设置自动捕捉热插拔设备:设备属性设备列表数据分析区原始数据区5. 实例分析单片机固件升级:主芯片为SONix SN32F247,内置USB控制器及收发器,全速2.0接口,支持7个端点,EP0EP6,7个端点可共享512字节RAM。此外,该芯片内置Bootloader,进入该模式下可开始USB固件升级。其中EP0使用固定的64字节RAM,用来控制传输,实现主机获取各种描述符,由于HID设备只需要接收主机发送的升
13、级包,不需要上传数据,因此不使用中断输入管道。HID设备报表描述符:/*/HID_UsagePage(HID_USAGE_PAGE_CONSUMER),/ usage page (consumer)HID_Usage(HID_USAGE_PAGE_UNDEFINED),/ usage (consumer control)HID_LogicalMin(0x80),/ logical minimum (-128)HID_LogicalMax(0x7F),/ logical maximum (+127)HID_ReportCount(64),/ report count (64)HID_Report
14、Size(8),/ report size (8)HID_Feature(HID_Data|HID_Variable|HID_Absolute),/ feature (data, variable, absolute)/以上定义了64字节,最小-128,最大127,用来接收升级包,每次64字节/*/根据USB通信协议,在HID设备接入PC后,首先设备被枚举,当主机发起请求设备描述符(Get Descriptor)时,会触发设备的 EP0 SETUP事件中断,在中断处理时上传设备描述符,同样地上传配置描述符、接口描述符、端点描述符,这些属于USB设备的标准请求。在主机与设备通信握手时,主要工作由
15、内置的USB控制器处理了,用户只需要在产生应答(ACK)或总线忙(NAK)时清除相应的中断标志即可。 其余的中断事件有:复位ResetEvent、挂起SuspendEvent、恢复ResumeEvent、EP0端点建立通信EP0SetupEvent、 EP0端点接收数据EP0OUTEvent、EP0端点发送数据EP0INEvent。HID设备枚举成功后,主机可以发送升级的固件包,将固件包按64字节大小分块,一次传输64字节(Set Report控制传输)。由于DF60主芯片内部只有8KB SRAM,不能一次性存储整个固件包,因此每接收完16块数据(16*64字节=1024字节)后写入到Flash中,分多次将整个包写入到Flash,完成后设置PC指针指向Flash中的第一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业企业安全奖惩制度
- 餐饮部用水用电奖惩制度
- 医院发论文奖惩制度
- 营销岗位职责及奖惩制度
- 学生帮扶计划奖惩制度
- 电销团队电话量奖惩制度
- 棉花装卸队内部奖惩制度
- 学校爱国卫生奖惩制度
- 村计划生育自治奖惩制度
- 消防安全检查奖惩制度
- DL∕T 547-2020 电力系统光纤通信运行管理规程
- JCT2166-2013 夹层玻璃用聚乙烯醇缩丁醛(PVB)胶片
- 建筑材料说课公开课一等奖市赛课获奖课件
- 湖南2023年长沙银行理财经理社会招聘(37)考试参考题库含答案详解
- 充电桩合作框架协议
- 薄膜的物理气相沉积
- 新一代大学英语提高篇视听说教程2答案
- 再生水厂退水管线出水口及钢模围堰施工方案
- 二十世纪西方文论课件
- GB/T 245-2016金属材料管卷边试验方法
- 第一章-管理导论-(《管理学》课件)
评论
0/150
提交评论