用官方的stm32枚举设备操作鼠标,一直bus reset erroe

printf ( "Device Connect\n" );                         

//开始枚举操作

res = CH375BusReset();                   /* 总线复位 */

if( res != USB_INT_SUCCESS ) printf("Bus Reset Erro\n");

delay_ms( 50 );       

用官方提供的stm32枚举设备操作鼠标,一直都是bus reset erroe,请教是哪里出的问题?

测试数据通信,正确返回0x9a,是不是说明通信没有问题?

用的是CH375B

是不是模式设置后等待返回值时间不够?看一下模式设置后读到的值是否为51H。


f( CH375CheckConnect() == USBD_CONNECT )          /* 刚检测到一个设备接入,需要枚举 */

{

printf ( "Device Connect\n" );                         

//开始枚举操作

res = CH375BusReset();                   /* 总线复位 */

if( res != USB_INT_SUCCESS ) printf("Bus Reset Erro\n");

delay_ms( 50 );                          /* 等待设备稳定 */

初始化设置模式后返回值正确,检测接入设备后设置模式返回值是0xff


按照此结构组织代码:

 set_usb_mode( 5 );  /* 设置USB主机模式, 如果设备端是CH37X, 那么5和6均可 */
 printf("wait connect...\n");
 for(;;)
 { 
  while ( wait_interrupt()!=USB_INT_CONNECT );  /* 等待设备端连接上来 */
  mDelayms(200);

  s = Get_freq(); 
  set_usb_mode( 7 );    /* 总线复位 */
  mDelayms(30);
  set_usb_mode( 6 );
  if( s&0x10 ) Set_freq();  /* 切换使375B进入低速模式 */
  mDelayms(100);

//开始枚举
}


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