USB设备类请求处理-HID类请求详解
需积分: 45 116 浏览量
更新于2024-08-06
收藏 18.87MB PDF 举报
"LPC178x下册"
在USB设备的开发中,处理来自主机的请求是至关重要的。本文档以LPC178x微控制器为例,介绍了如何在USB设备驱动中处理HID(Human Interface Device)类请求。LPC178x是一款基于ARM Cortex-M3内核的微控制器,常用于嵌入式系统,包括USB设备应用。
在USB通信中,设备需要能够响应主机的各种请求,这些请求可以是标准请求、厂商特定请求或类请求。在LPC178x的USB设备驱动中,这些请求的处理主要集中在`__usbDevControlHandler()`函数中。该函数首先读取请求类型和请求索引,然后根据请求的类型调用相应的处理函数。
当请求类型为USB_CLASS_REQUEST时,即涉及到类相关的请求,例如HID类请求。在程序清单10.24中,我们可以看到新增加的类请求处理部分。这里通过`(*HidClassRequest[ucRequestindex])();`调用了HID类请求处理函数入口列表中的对应函数。
HID类请求处理函数入口列表如程序清单10.25所示,它包含了5个函数入口,分别对应HID类请求的不同部分:
1. `get_report`:获取报告请求,用于主机从设备获取HID报告。
2. `get_idle`:获取空闲状态请求,主机通过此请求获取设备当前的非活动时间间隔设置。
3. `get_protocol`:获取协议请求,允许主机查询设备当前使用的报告协议。
4. `__usbDevReserved`:预留的函数入口,通常不用于实际代码,可能用于未来的扩展或特定用途。
5. `__usbDevReserved`:同样为预留的函数入口。
对于HID类请求,除了`get_idle`请求需要进行实际处理外,其他未定义的请求通常回应STALL,表示设备无法处理该请求。例如,如果主机发送了一个设备未实现的`get_report`请求,设备会回应STALL,通知主机该请求无效。
在处理HID类设备时,理解并正确实现这些请求处理函数对于确保USB设备的正常工作至关重要。例如,`get_idle`请求的处理可能涉及更新设备内部的空闲计时器设置,以控制在无数据传输时设备进入低功耗模式的时间。
此外,文档中还提到了LPC178x的其他功能部件,如E2PROM存储器和外部存储器控制器(EMC)。E2PROM存储器允许设备存储非易失性数据,即使在电源断开后也能保持数据。EMC则负责管理与外部存储器如SRAM、SDRAM、Nor Flash等的交互,为系统提供扩展的内存访问能力。
LPC178x的USB设备驱动设计考虑了HID类设备的需求,提供了对不同USB请求的灵活处理机制。同时,该微控制器还集成了多种功能部件,以支持复杂的嵌入式系统应用。开发者在实现USB设备驱动时,需要对这些请求处理函数有深入的理解,并结合具体设备的硬件特性进行适配和编程。
1361 浏览量
364 浏览量
2238 浏览量
809 浏览量
304 浏览量
220 浏览量
1468 浏览量
1423 浏览量
2994 浏览量
CSDN热榜
- 粉丝: 1912
- 资源: 3901
最新资源
- Simple_scraper
- 行销导向式服务的认识PPT
- Elearning:在线学习
- gradle-4.10.1-all文件夹.rar
- ImageJ-Tools:核分割和比例定量
- android_magic_conch_shell:电视节目Spongebob Squarepants中的Magic Conch Shell的Android应用程序
- finiki:Finiki-以旧换新
- 井字游戏:井字游戏
- Qex Studio:从 BIM 模型创建预算-开源
- Autojs调用zxing实现扫码功能
- crud-surittec:CRUD Paraavaliaçãopela empresa Surittec
- opencv_python-3.4.4.19-cp35-cp35m-linux_armv7l.zip
- image-preloadr:将图像数组预加载到body元素底部的dom
- Praktyki2GG:Nowe repo bo tamtebyłosłabeD
- LinearAlgebra:线性代数简介的注释和python代码
- e-commerce:带有Commerce.js和Stripe.js的电子商务应用程序