使用CH375B的USB-HOST模式连接游戏手柄

2019-08-12 16:52发布

平台:ATMEGA128A,11.0592Mhz,在IAR上调试通过。
连接线:
// AVR-->CH375
// PA0~PA7: D0~D7, PG1: RD#, PG0: WR#, PD3: INT#, PC0: A0, PD6: CS#, PD7: RST  
使用串口0输出按键状态

352707558060499067.jpg

调试中抓取各种描述符:

设备描述符:
设备描述符.jpg

配置描述符:
配置描述符.jpg

接口描述符:
接口描述符.jpg

端点描述符:
端点描述符.jpg

HID描述符:
HID描述符.jpg

HID报告描述符:先从串口输出,然后用这个工具手工翻译这个101字节的数据……
HID报告描述符.png

枚举成功后,每隔1秒读取键值(按键有变化):
7F 7F 81 7F 7F 0F 00 C0
7F 7F 81 7F 7F 0F 00 C0
7F 7F 7F 7F 7F 0F 00 C0
7F 7F 80 7F 7F 0F 00 C0
7F 7F 81 7F 7F 0F 00 C0
7F 7F 80 7F 7F 1F 00 C0
7F 7F 80 7F 7F 2F 00 C0
7F 7F 80 7F 7F 4F 00 C0
7F 7F 81 7F 7F 8F 00 C0
7F 7F 7F 7F 7F 0F 08 C0
7F 7F 80 7F 7F 0F 02 C0
7F 7F 81 7F 7F 0F 01 C0
7F 7F 80 7F 7F 0F 04 C0
7F 7F 80 7F 7F 0F 08 C0
7F FF 80 7F 7F 0F 00 C0
7F 00 80 7F 7F 0F 00 C0
00 7F 00 7F 7F 0F 00 C0
FF 7F FF 7F 7F 0F 00 C0
7F 7F 81 7F 7F 2F 00 C0
7F 7F 8A 7F 7F 8F 00 C0
7F 7F 8A 7F 7F 8F 00 C0
7F 7F 81 7F 7F 0F 00 C0
7F 7F 80 7F 7F 0F 00 C0
7F 7F 7F 7F 7F 0F 00 C0


心得:CH375B本身具备64字节的缓冲区,集成一些简化命令,方便一次获取设备描述符和配置描述符(包括接口和端点),但对于HID报告描述符需要自己处理。调试的难点在于对USB协议的理解,建议参看《圈圈教你玩USB(第2版)》和《HID设备类定义中文版》,请自行学习,我不解释,我也不懂。

吐槽:CH375B的接口速度是us级,我本来用AVR的外部总线控制的,但是很不稳定,现在用并口模拟时序好多了。


源代码:仅供参考学习……
SRC.rar (15.83 KB, 下载次数: 272) 2017-2-2 13:14 上传 点击文件名下载附件



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。