请教一个stm usb 控制传输的问题

2019-12-26 18:53发布

usb收到GetReport后,我在准备数据,然后返回了一个USB_NOT_READY。
怎么样可以当我数据准备好的时候,直接把数据发送,不需要再等待下一个GetReport呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
21条回答
hyper320
2019-12-29 12:25
還有一個重要觀念,USB是主從協議,你的裝置屬於從端,主端主動與從端連絡,從端才能收發數據,而USB協議早就考慮到主從兩邊效率快慢的問題,所以才有"NAK"封包,"NAK"就是來處理裝置端暫時沒有準備好數據,例如,FLASH燒錄,當FLASH在清除時需要時間,而電腦端並不知道你要處理多久,而裝置端等待FLASH清除時也無法收取電腦端的數據,這時就可回應"NAK",電腦端會等待一段時間再發送封包傳送數據,而裝置端的作法就是在FLASH清除完成前,設置USB寄存器相關端點回應NAK,這是硬體自動處理的,軟體並不需要干預,等FLASH清除完成可以接收數據時,裝置再把相關的端點可接收標誌位設定,等電腦傳來數據,裝置的硬件會自動接收並設定已接收標誌位來通知軟件接收!

一周热门 更多>