ch375b 主机模式 返回错误代码0x2b 请问哪里能得知具体失败代码

我写了一个程序,能够正常读取键盘数据 鼠标数据 和 莱仕达手柄数据,

但是更换了一个杂牌usb手柄后

toggle_recv();issue_token((endp_int<<4)| 0x09);中断状态代码返回0x2b ,


查手册得知 0x20~0x3f是主机操作失败状态,请问哪里能得知这些代码对应的错误信息?


另外为什么我的程序能够读取莱仕达手柄,却读取不成这个杂牌手柄?


附:

(正常)莱仕达手柄设备描述:

12 01 00 01 00 00 00 08 FF 11 41 33 06 01 00 02 00 01 


(失败)杂牌手柄设备描述:

12 01 10 01 00 00 00 08 63 25 23 05 00 01 01 02 00 01 


莱仕达配置描述:

09 02 22 00 01 01 00 80 AF 09 04 00 00 01 03 00 00 00 09 21 10 01 21 01 22 65 00 07 05 81 03 08 00 11 


杂牌手柄配置描述:

09 02 22 00 01 01 00 80 AF 09 04 00 00 01 03 00 00 00 09 21 10 01 00 01 22 63 00 07 05 81 03 08 00 08 


还请大侠高人不惜赐教,谢谢

返回0x2b 代表当前接收包为DATA1包。可能是你程序上包翻转有点小问题。请问枚举阶段通过了吗?中断状态代码0x2b是什么时候返回的呢?


可以通过Bus Hound抓取两种键盘传输的区别。结合你的程序可以仿照这个过程。



刚才的评论不知道为什么不显示,我重新再表示一下感谢,我的程序调试通过了!

我增加了下面红色的一行之后就一切顺利了,非常感谢..另外我用的是ch375b,如果通过程序判断全速还是低速设备呢?

endp6_mode=0xc0;

toggle_recv(); issue_token((endp_int<<4)| 0x09);



关于速度的配置请参考CH375DS2手册GET_DEV_RATE和SET_USB_SPEED命令。

 


我之前没有找到资料是因为手册版本太旧了,重新下载个最新的!!

感谢百忙之中为我解答的 jie 


我用的是ch375b芯片,貌似下面这个命令无法执行 总是卡在wait_int(); 应该是执行这个命令后没有产生中断?

ch375_w_cmd(0x0a);ch375_w_data(0x07);   wait_int();

是不是我的芯片版本不够?


是的  此命令不产生中断  直接读数据端口即可。返回值就是“数据速率”。


我想做一个读取鼠标动作的模块,楼主能分享一下代码吗?邮箱个人信息保护,已隐藏


已发。仅供参考。


楼主您好,我正在做读取鼠标按键信息的方案,能否分享下代码参考下呢?谢谢。个人信息保护,已隐藏


已发,请查收。


                           谢谢,已收到。

已发,请查收。

                       


                           

想做一个读取鼠标动作的模块,楼主能分享一下代码吗? 感謝   邮箱 个人信息保护,已隐藏

                       


                           


引用:

                           

想做一个读取鼠标动作的模块,楼主能分享一下代码吗? 感謝   邮箱 个人信息保护,已隐藏  剛發錯 重發一次


                       


                       


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