里飞网

 找回密码
 立即注册
查看: 6463|回复: 0
打印 上一主题 下一主题

华大F460之USB HID custom通信调试记录

[复制链接]

45

主题

317

帖子

2846

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2846
跳转到指定楼层
楼主
发表于 2021-8-7 18:26:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
华大F460之USB HID custom通信调试记录

之前搞过STM32的USB HID custom通信,华大F460是支持USB的,加上有例程,以为很快就可以搞定;但是想不到期间遇到了不少麻烦,这些记录说一说。

首先工程使用之前跑通的进行删减,调试能够正常跑了之后,按照例程加入HID custom内容,编译通过后烧录到板子,电脑一点反应都没有,打开设备管理器,插拔USB,一点变化都没有。这时是焊了2块板子的,换了板子后一样没有任何反应。首先还是怀疑硬件有问题,是不是IO没有接对DM,DP有没有接反。对比了后没看出哪里问题,期间问了2个群友,没有用过华大F460,给不了什么建议,网上搜了华大的USB问题,有一个网友贴子反馈了华大F460 HID custom例程下载后没有任何反应,直接下载例一样没有反应。和华大技术反馈后,没有怎么回复,后面给了一个F460带AMetal的例程,这例程真是一个大杂锅,看的头痛,不了了之。

第二天,网上各种搜索一遍,还是无果。还是仔细看了前面网友的贴子回复,说是VBUS脚需要接出来,DP脚要上拉。一看原理图VBUS脚接了一个BEEP,再吐嘈板子那么多空脚,一个调试串口都不接出来一个。


首先VBUS断开BEEP,VBUS连接3.3V,没有反应;接5V,还是没有反应;DP脚接上拉3.3V,插电脑终于有反应了,虽然是识别不到驱动,至少有反应了,手册也找到了说明。

但是电脑始终识别不到驱动,unknown device,和STM32的详细对比,一直找不到问题。

第三天,一次想想下载例程试试,居然成功了。各种对比工程,没有发现问题,打印发现死在HardFault_Handler。再次对比工程,只有优化等级不同了,我原来使用2级优化,例程使用0级优化。修改0级优化后,居然好了,也能识别正常了。但是收发数据还是不正常,之前就发现报告描述和之前的不一样,修改过后通迅正常了。贴一下。

  1. #define CUSTOM_HID_REPORT_DESC_SIZE         52

  2. __USB_ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc[CUSTOM_HID_REPORT_DESC_SIZE] __USB_ALIGN_END =

  3. {
  4. /* USER CODE BEGIN 0 */
  5. 0x06,0xA0,0xFF,//用法页(FFA0h, vendor defined)

  6. 0x09, 0x01,//用法(vendor defined)

  7. 0xA1, 0x01,//集合(Application)

  8. 0x09, 0x02 ,//用法(vendor defined)

  9. 0xA1, 0x00,//集合(Physical)

  10. 0x06,0xA1,0xFF,//用法页(vendor defined)

  11. //输入报告

  12. 0x09, 0x03 ,//用法(vendor defined)

  13. 0x09, 0x04,//用法(vendor defined)

  14. 0x15, 0x80,//逻辑最小值(0x80 or -128)

  15. 0x25, 0x7F,//逻辑最大值(0x7F or 127)

  16. 0x35, 0x00,//物理最小值(0)

  17. 0x45, 0xFF,//物理最大值(255)

  18. 0x75, 0x08,//报告长度Report size (8位)

  19. 0x95, 0x40,//报告数值(64 fields)

  20. 0x81, 0x02,//输入(data, variable, absolute)

  21. //输出报告

  22. 0x09, 0x05,//用法(vendor defined)

  23. 0x09, 0x06,//用法(vendor defined)

  24. 0x15, 0x80,//逻辑最小值(0x80 or -128)

  25. 0x25, 0x7F,//逻辑最大值(0x7F or 127)

  26. 0x35, 0x00,//物理最小值(0)

  27. 0x45, 0xFF,//物理最大值(255)

  28. 0x75, 0x08,//报告长度(8位)

  29. 0x95, 0x40,//报告数值(64 fields)

  30. 0x91, 0x02,//输出(data, variable, absolute)

  31. 0xC0,//集合结束(Physical)
  32.   /* USER CODE END 0 */
  33.   0xC0    /*     END_COLLECTION                     */
  34. }
复制代码


特此做一个记录分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|里飞网  

GMT+8, 2024-12-26 19:25 , Processed in 0.065532 second(s), 5 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表