CH375B读取USB鼠标数据问题

各位沁恒的工程师,你们好。我现要用单片机读取USB鼠标的数据,使用贵公司的CH375B,中间遇到一些问题硬件,希望各位帮忙分析下。硬件连接按照手册的经典电路,并行接口。软件参照本论坛下载的“CH375B芯片做主机操作鼠标、键盘的例子程序”,有修改。程序中发送控制命令的顺序为: •获取设备描述符(Get Device Description); •设置设备地址(Set Address); •第一次获取配置描述符(Get Config Description); •第二次获取配置描述符(Get Config Description); •设置配置(Set Config); •设置事务(Set Idle)(这个步骤不晓得是不是这么理解) •获取报告描述符(Get Report Description)

现在手头上有三款鼠标,一个雷柏的无线,一个联想的有线,一个杂牌的有线。用这三款鼠标连接375时分别出现以下几种问题。 问题1:连接雷柏无线时,程序死在串口发送“device”之后的get_descr_ex()中,就是没进中断,一直在等。用BusHound抓取数据完全一样。鼠标电源3V,应该跟这个没关系吧。 问题2:连接联想有线时,程序正常运行,接收数据正常,只是偶尔会出现进入中断读取数据不成功,返回值0x28,有时为0x23,还有0x00的情况,对照手册解释为“当前接收的数据包不同步,数据可能无效”,不明白什么原因。用BusHound抓取数据完全一样。 问题3:连接杂牌有线时,第一次连接未成功,死在哪里给忘了,连上电脑用BusHound抓到数据发现多出一条USTS的命令,4个字节的,手册解释为“Windows 4 byte USBD_STATUS code”,不太明白,然后再次连接375,连接成功,能收到数据但是数据不正常,格式正确数值不对。如果是因为那一条命令的原因,那么我怎么用375发这条命令。

从这些情况来看好像用BusHound抓到的有两个设备号发命令的鼠标就可以连接,但是一个的就不行,是不是有一个双设备的概念啊? 三种情况的抓图在附件里,请帮忙分析下,多谢!

晕了,附件怎么传不上。。。各位先看看吧,有需要的话我发邮箱,多谢了!


1. USB鼠标的供电 一定要保证在5V左右,否则鼠标可能不正常工作 2. 参考附件中的CH376的程序,经过修改已经兼容CH375,可以直接测试。 UploadImages/20113181045138.rar


多谢_study_,我又修改了下程序,两个有线的都可以了,数据正常,现在只有这个无线的还是那个问题,不进中断,我说的3V是发射部分用两节电池,接收器插在板子上还是5V的。我比较了下他们的情况,那两个测试成功的和这个不成功的不同就是用BusHound抓数据的时候能看到Device列有两个设备号,而那个无线鼠标只有一个,不知道什么意思,图发你邮箱了,您帮忙看下,图上有线的两款鼠标说的问题已经解决,直接无视就可以,呵呵,现在就剩雷柏无线鼠标这个了,多谢!


再次感谢_study_,程序已测,运行正常,但是无线鼠标这个还是过不了,串口数据如下:

start aa wait usb device :

然后就一直等着,鼠标型号 雷柏T1。另外一款无线鼠标接收器插上之后识别正常,串口数据如下:

start aa wait usb device : 12 01 10 01 00 00 00 08 fc 04 d8 05 10 01 01 02 00 01 09 02 3b 00 02 01 04 a0 32 09 02 3b 00 02 01 04 a0 32 09 04 00 00 01 03 01 01 05 09 21 00 01 00 01 22 41 00 07 05 81 03 08 00 0a 09 04 01 00 01 03 01 02 06 09 21 00 01 00 01 22 91 00 07 05 82 03 08 00 0a cfg 14

set idle success 05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 05 08 19 01 29 05 95 05 75 01 91 02 95 01 75 03 91 01 05 07 19 00 2a ff 00 15 00 26 ff 00 95 06 75 08 81 00 c0 set report success

set idle success 您认为可能是哪里的问题呢?


另外我自己用STM32做的一款USB鼠标,在PC上测试可以运行,然后接上板子之后出现的情况跟那款无线雷柏一样,也是进不了中断,停在wait usb device这里。用BusHound抓取的数据可以看到多出一条USTS,4个字节的,跟上面有一款的情况相似,但是那款可以运行。


该鼠标可能是全速的,将主机也设置成全速模式 试试, 键盘鼠标不一定全部是低速的,不同厂家做的都不一样


搞定没?有很多无线的鼠标其无线接收器都是键盘鼠标一起定义了。楼主是不是需要一起做设备枚举? 在PC机上看设备管理器就知道,一般的无线鼠标都有两个以上的设备。


楼主你好,我在用ch375B做一个USB手柄与单片机通讯的项目,可以加你QQ吗,很想向你请教 谢谢了


可以参考2楼的程序,把接口函数改成串口方式即可。


我也在学习中,可以发一份给我参考吗?不胜感激个人信息保护,已隐藏


yibunihao 我也正在学习呢,可是怎么测试读出鼠标信息呢?菜鸟请教呢 也可以给我一份吗?很感谢呢个人信息保护,已隐藏


怎么测试读出的信息?如何理解你的问题?


由于刚学单片机没多久呢,想用CH376S读出鼠标的信息然后去测位移,如何仿真呢?单片机读取出来的数据怎么显示在电脑上呢?


是不是用串口调试助手呢?感谢 红桃六 解答呢。


还有的疑惑是 测试程序里面 printf怎么出来呢?


只有登录才能回复,可以选择微信账号登录