求助 375 问题

调试时 U盘的 设备描述符 可以读出 键盘 鼠标的 设备描述符 读不出 请高手指点下

U盘 摄像头的 设备描述符 都可以读出


使375进入低速模式 和不设置有没有关系


如果是使375B进入低速模式 就查询不到中断了


操作鼠标键盘 要将CH375切换到低速模式,设备连接之后 D-应该在3.3V左右,D+在0V左右。


恩 谢谢!

但是还是读取不到数据


搜索帖子: 常用USB源程序下载 时间选择所有时间 里面有CH375操作鼠标键盘的程序,可以参考一下。 注意时序,延时函数根据硬件修改。


好的 谢谢!


// get_descr(0x01);//获取设备描述符 // printf("device\n"); Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0001; Request.Req.wIndex=0x0000; Request.Req.wLength=0x1200; if(get_descr_ex()==1) { for(i=0;i!=data_buf[0];i++) printf("%02x ",(unsigned int)data_buf); printf("\n"); } else printf("get device descr failed\n");

set_addr(5);//设置地址

// get_descr(0x02);//获取配置描述符 printf("config\n"); Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0002; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0900; if(get_descr_ex()==1) { for(i=0;i!=data_buf[0];i++) printf("%02x ",(unsigned int)data_buf); printf("\n"); if(data_buf[4]!=0x01)flag_interface_2=1;//有多个接口 } else printf("get config descr failed\n");

printf("config 2\n"); if(data_buf[2]>0x09) { flag_config_2=1; Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0002; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0000|((unsigned int)data_buf[2]<<8); if(get_descr_ex()==1) { for(i=0;i!=data_buf[2];i++) printf("%02x ",(unsigned int)data_buf); printf("\n"); flag_config_2=0; } else printf("get device descr again failed\n"); }

程序中的

Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0001; Request.Req.wIndex=0x0000; Request.Req.wLength=0x1200;

是什么意思


程序中的

Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0001; Request.Req.wIndex=0x0000; Request.Req.wLength=0x1200;

是什么意思

程序中的

Request.Req.bmRequestType=0x80; Request.Req.bRequest=0x06; Request.Req.wValue=0x0002; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0900;

是什么意思


这是USB标准请求,获取配置描述符,在USB1.1协议中有说明,最好先把这个规范看一下


恩 好的 谢谢


为什么 鼠标可以读到数据 键盘不能 并且返回的数据也不对 请高手指点


哪一步获取不到数据,请说清楚一点呢!枚举部分成功没有


枚举部分可以


unsigned char get_int_in() { tog ? toggle_recv1(0xc0) : toggle_recv1(0x80); issue_token(( endp_int << 4 ) | DEF_USB_PID_IN); endp = endp_int; return (wait_interrupt()); } unsigned char get_int_in1() { tog1 ? toggle_recv1(0xc0) : toggle_recv1(0x80); issue_token(( endp_int1 << 4 ) | DEF_USB_PID_IN); endp = endp_int1; return (wait_interrupt()); }


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