HI STM32F4作为HOST,Device为HID协议但不是标准的鼠标键盘(只有IN 和 OUT EP),这个外设需要HOST发送命令后,才会上传数据,具体流程: ① Host->Dev(发送命令) ② Dev准备数据 ③ Host读取数据 使用官方的USB HOST库,版本V3.2.2,搭建工程鼠标和键盘正常工作,自己修改加了一个自定义支持的HID类型,主要是注册了OUT 和 IN 端口。 然后修改了USBH_HID_Process 支持发送数据,问题: 在HID类 USBH_HID_Process 中加入了 SEND状态机,通过USBH_InterruptSendData发送数据,发送成功。但是通过USBH_InterruptReceiveData不成功,分两种情况都不成功: 1、注释掉SOF定期轮询,只发调用一次USBH_InterruptReceiveData,收不到数据。 2、打开SOF定期读数据,会收到一次NACK,一次64字节(数据长度正确)的数据包(但是不能触发接收完成中断),下一次SOF再次触发USBH_InterruptReceiveData会导致HardFault_Handler。 这个HID外设用Libusb读取成功。 |
一般来讲,首先看看增加端点后FIFO分配是否调整好。其次 看看枚举是否真正通过,SOF信号是否正常,最后再看通讯是否能工作。 因为这种通讯是异步通许,所以最好通过USB分析去确认是否真正完成 |