375做usb host能读u盘的设备描述符,但为什么不能读鼠标的?

我用 ch375hst的例程usbprint的ch375prt.c,来读取我的usb鼠标,设置模式和复位都正确,但在枚举函数init_print()中运行 status=get_descr(1); /* 获取设备描述符 */ 总是返回0x20或0x28,好像文档说是超时! 而同样的程序同一块板子,插入u盘运行却可以正确读出设备描述符和配置描述符,why?

难道375操作hid设备有问题吗?

我的鼠标确实没问题,pc中能使用的[Emot]11[/Emot]

这样说吧,你的USB鼠标是低速设备还是全速设备.如果为低速设备CH375在晶振12M时是不支持的.你要将CH375的输入频率降到1.5M,然后再将D+,D-线交换就可以了.不过这时候要注意,原来12M时数据口命令口延时也都要相应的加长.


D+,D-要交换,是不是因为上拉和下拉的原因啊??


硬件上我是不是只要把12m的晶振换成1.5M的晶振,然后把D+,D-交换就行了?


是的,单要确信你的鼠标是低速设备.


与我要开发的usb host相配套的usb device是 pdiusbd11做的HID设备,它的晶振却是 12M的(D11必须用12M晶振),d11和PC的usb通讯一切正常,并且d11应该是个fullspeed的usb1.1的设备啊。为什么375枚举它时会超时呢? 如果晶振换成1.5m,与d11可能不能通讯吧?


有的USB设备通电后过一会才能工作,有的要在复位后才能工作,然后再读取描述符,另外我们用CH372+MCS51做过HID-MOUSE设备,能接计算机也能接CH375,都没有问题。看来你还要是检查硬件方面的连接和干扰问题。一般来说,做USB产品首先要测的就是连接计算机,而计算机容错性比CH375好,即使是不太理想的设计都能通过


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