金牌会员
 
- 积分
- 1298
- 金钱
- 1298
- 注册时间
- 2016-2-20
- 在线时间
- 321 小时
|
1金钱
STM32做主机,键盘插上Host口没有反应,经USB逻辑分析仪抓包发现SetUp少最后的一包USB_REQ_SET_INTERFACE数据。代码中没有找到发送USB_REQ_GET_INTERFACE的函数。问题是如果想要修改代码提高兼容性,怎么改?图中可以看到键盘枚举成功与失败的区别:在发出GET_INTERFACE的指令后发出数个NAK包,然后发出STALL,再发一包SET_INTERFACE就成功了;如果在发出GET_INTERFACE的指令后发出数个NAK包再发一包ACK,键盘上传STALL包,后面的SET_INTERFACE指令不再发出,枚举失败。
usbh_hid_core.c 里面的两处代码classReqStatus = USBH_Set_Idle (pdev, pphost, 100, 0);和phost->Control.setup.b.wLength.w = 100; 把官方的默认值0改为100提高了兼容性,为什么?还可以进一步提高兼容性吗?发现鼠标有只能上下移动和左右移动的,应该修改什么地方?
|
|