1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想通过hid直接实现与电脑的数据交互,尝试在tusb_hid例程上做修改,目前测试工具可以识别到键盘,鼠标外的第三个报告描述符,但是无法实现通信,想知道是在哪里配置出现了问题。
下面是我在例程上做出修改的地方: const uint8_t hid_report_descriptor[] = { TUD_HID_REPORT_DESC_KEYBOARD(HID_REPORT_ID(HID_ITF_PROTOCOL_KEYBOARD) ), TUD_HID_REPORT_DESC_MOUSE(HID_REPORT_ID(HID_ITF_PROTOCOL_MOUSE) ), TUD_HID_REPORT_DESC_GENERIC_INOUT(63,HID_REPORT_ID(3)), //添加第三个描述符 }; static const uint8_t hid_configuration_descriptor[] = { // Configuration number, interface count, string index, total length, attribute, power in mA TUD_CONFIG_DESCRIPTOR(1, 1, 0, TUSB_DESC_TOTAL_LEN, TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP, 100), // Interface number, string index, boot protocol, report descriptor len, EP In address, size & polling interval //TUD_HID_DESCRIPTOR(0, 4, false, sizeof(hid_report_descriptor), 0x81, 16, 10), TUD_HID_INOUT_DESCRIPTOR(0,0,HID_ITF_PROTOCOL_NONE,sizeof(hid_report_descriptor), 0x01, 0x81, 64, 10), }; //数据发送函数 void hid_data_send(uint8_t data[], uint8_t length) { uint8_t reportData[63] = {0}; if (tud_hid_ready()) { tud_hid_report(3,reportData,63); } } 下图是使用调试工具的连接结果 |
|
相关推荐
1个回答
|
|
根据您的描述,您已经成功地在ESP32-S3上实现了键盘和鼠标的HID通信,并且已经添加了第三个报告描述符。但是,您无法实现与电脑的数据交互。为了解决这个问题,我们可以按照以下步骤进行排查和修改:
1. 确保您的ESP32-S3设备已经正确连接到电脑,并且电脑已经识别到了该设备。 2. 检查您的代码中是否正确配置了HID设备的端点。在tusb_config.h文件中,确保以下宏定义已经设置为合适的值: - CFG_TUD_HID_EP_BUFSIZE:设置为足够的缓冲区大小,以满足您的数据传输需求。 - CFG_TUD_HID_EP_IN_SW:设置为1,以使用软件控制的输入端点。 3. 在您的代码中,确保您已经正确地初始化了HID设备。在tusb_init()函数中,添加以下代码: ```c hid_gamepad_init(); ``` 4. 在您的代码中,确保您已经正确地实现了HID报告描述符。根据您的描述,您已经添加了第三个报告描述符,但是请确保它与您的实际设备和需求相匹配。例如,如果您的设备是一个游戏手柄,您需要使用TUD_HID_REPORT_DESC_GAMEPAD宏定义。 5. 在您的代码中,确保您已经正确地实现了数据传输函数。例如,如果您使用的是TUD_HID_REPORT_DESC_GENERIC_INOUT宏定义,您需要实现以下函数: ```c bool tud_hid_n_report_complete(uint8_t itf, uint8_t report_id, uint8_t const *buffer, uint16_t bufsize); ``` 在这个函数中,您可以处理从电脑接收到的数据。 6. 在您的代码中,确保您已经正确地实现了数据发送函数。例如,如果您使用的是TUD_HID_REPORT_DESC_GENERIC_INOUT宏定义,您需要实现以下函数: ```c void tud_hid_n_incoming_report(uint8_t itf, uint8_t report_id, uint8_t const *buffer, uint16_t bufsize); ``` 在这个函数中,您可以处理要发送到电脑的数据。 7. 最后,确保您的电脑已经正确地安装了所需的驱动程序。在某些情况下,电脑可能需要特定的驱动程序才能与您的ESP32-S3设备进行通信。 通过以上步骤,您应该能够找到问题所在并解决无法实现通信的问题。如果问题仍然存在,请检查您的硬件连接和电源供应,以确保设备正常工作。 |
|
|
|
只有小组成员才能发言,加入小组>>
1143 浏览 1 评论
578浏览 6评论
479浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
463浏览 5评论
464浏览 4评论
440浏览 4评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 08:57 , Processed in 0.605752 second(s), Total 44, Slave 38 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号