蔡玉杰 发表于 前天 09:08

HID键盘,控制状态灯,usb_out_ep1触发

在使用hid键盘例程的时候,发现经过测试,usb_out_ep1函数无法通过PC端切换numLock等状态来触发,但是经过检查,发现desc等配置无误。更换多个例程仍然有该问题。

国芯人工智能 发表于 前天 09:12

尊敬的用户:

您好!感谢您对国芯人工智能产品的关注与支持。关于您在使用HID键盘例程时遇到的“usboutep1无法通过PC端切换NumLock等状态灯”的问题,我们已收到并高度重视。以下为针对该问题的专业分析及建议。

首先,HID(Human Interface Device)协议中,状态灯(如NumLock、CapsLock、ScrollLock)通常通过HID报告中的特定字段进行控制。在标准HID设备中,这些状态信息一般通过HID报告描述符(Report Descriptor)定义,并由主机(如PC)通过控制传输(Control Transfer)发送命令来改变状态灯的状态。

在USB通信中,usboutep1通常用于接收来自主机的数据。若该端点未能正确响应主机发送的状态变更指令,则可能导致状态灯无法正常切换。

根据您的描述,已确认HID描述符配置无误,说明问题可能出现在以下方面:

1. HID报告结构不匹配
   检查HID报告描述符是否正确定义了状态灯字段。例如,NumLock状态应位于特定的输入报告中,且需确保其位宽和位置符合HID规范。若报告结构未正确映射,即使主机发送了状态变更数据,设备也无法识别。

2. USB OUT端点处理逻辑缺失或错误
   usboutep1需要具备接收主机发送的HID控制命令的能力。若未正确实现该端点的数据处理逻辑,或未将接收到的数据映射到对应的HID报告字段,则状态变更指令将被忽略。

3. HID报告更新机制未触发
   在HID设备中,状态灯的变化通常通过发送一个完整的HID报告来实现。若未在接收到状态变更后主动发送更新后的报告,状态灯可能不会发生变化。请检查是否在处理完主机指令后调用了usbhidsendreport()等相关函数。

4. 固件版本兼容性问题
   若您使用的是第三方例程或较旧版本的固件,可能存在兼容性或功能限制。建议参考官方提供的HID键盘示例代码,确保使用最新版SDK及驱动。

5. PC端驱动或系统设置问题
   有时,PC端的驱动程序或操作系统设置可能影响HID设备的响应。建议尝试在其他PC上测试,或更新相关驱动程序,以排除外部因素干扰。

综上所述,建议您按照以下步骤进行排查与修复:
核对HID报告描述符是否完整且符合规范;
确保usboutep1能够正确接收并解析主机发送的HID控制指令;
验证是否在接收到状态变更后,及时更新并发送HID报告;
使用官方推荐的例程进行对比测试,确认是否存在代码逻辑差异;
如仍无法解决,建议提供相关代码片段及HID描述符内容,以便进一步分析。

如需进一步协助,欢迎联系国芯人工智能技术支持团队,我们将竭诚为您服务。

祝工作顺利!

国芯人工智能技术团队
2025年4月

[本文内容由国芯人工智能辅助生成,仅供参考]

ercircle 发表于 前天 09:20


都测试了哪些例程?试下擎天柱例程19,这个测过的

看下这个测试视频:


https://www.stcaimcu.com/forum.php?mod=redirect&goto=findpost&ptid=12839&pid=131887
页: [1]
查看完整版本: HID键盘,控制状态灯,usb_out_ep1触发