隐者-423522 发表于 2016-8-23 18:05:50

USB UM1021 USB主机HID



参考的UM1021手册,用的STM32_USB-Host-Device_Lib \USB_Host_Examples\HID例程。
插键盘使用,USBH_Process() 循环间隔小于3ms,按键盘,读到的字符正常。
当主循环加入延时后,USBH_Process() 循环间隔大于3ms,按键盘不能读到字符了。
大家有什么招可以解决 主循环时间间隔长,而USB-HID需要读取正确的键盘输入字符呢?


我估计原因是 《STM32F10xxx参考手册》 26.5.2 设备状态 描述的
挂起状态
OTG_FS控制器持续的检测USB线上的活动。在检测到3ms的USB空闲状态后,将产生早期挂起中断(OTG_FS_GINTSTS寄存器的ESUSP位),在3ms后产生挂起中断(OTG_FS_GINTSTS寄存器的USBSUSP位)确认挂起。设备状态寄存器的设备挂起位(OTG_FS_DSTS寄存器的SUSPSTS位)将自动置位,OTG_FS控制器进入挂起状态。





asssdz-382474 发表于 2016-8-24 02:12:18

:):):):):)

隐者-423522 发表于 2016-8-26 08:47:40

网上写着要 周期性地发送SOF包,设备才不会挂起

隐者-423522 发表于 2016-8-26 14:37:32

观察HID_State状态发现USBH_HID_Handle函数,在时间间隔>3ms和<3ms时运行不同的条件。
正常运行: HID_SYNC ,后面循环 HID_GET_DATA , HID_POLL ,HID_POLL ,HID_POLL ,HID_POLL ,
而>3ms运行: HID_SYNC ,后面循环 HID_GET_DATA , HID_POLL ,HID_GET_DATA , HID_POLL ,

cloudmr 发表于 2018-3-24 14:24:01

:):):):):):):)
页: [1]
查看完整版本: USB UM1021 USB主机HID