各位沁恒的工程师,你们好。我现要用单片机读取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抓到的有两个设备号发命令的鼠标就可以连接,但是一个的就不行,是不是有一个双设备的概念啊? 三种情况的抓图在附件里,请帮忙分析下,多谢!