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

2019-12-26 18:53发布

usb收到GetReport后,我在准备数据,然后返回了一个USB_NOT_READY。
怎么样可以当我数据准备好的时候,直接把数据发送,不需要再等待下一个GetReport呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
hyper320
1楼-- · 2019-12-28 15:56
nak意思就是device暫時沒空,是一個很重要的同步機制,不可能你回了之後電腦就不理妳,最好還是用協議分析儀看下你和pc溝通的過程是哪裡出問題!!
hyper320
2楼-- · 2019-12-28 16:14
電腦端的協議分析軟體看不到細部的東西,最好是硬體的usb協議分析儀來查,很容易就看出是哪裡出問題了!!
overheat
3楼-- · 2019-12-28 19:55
 精彩回答 2  元偷偷看……
hyper320
4楼-- · 2019-12-29 01:51
全速的便宜,可以接個全速的hub降速來觀察
sujieww
5楼-- · 2019-12-29 04:24
hyper320 发表于 2017-8-3 00:51
nak意思就是device暫時沒空,是一個很重要的同步機制,不可能你回了之後電腦就不理妳,最好還是用協議分析儀看 ...

应该是我说的不对。
是回NAK后,电脑就只会在5s后再一次发送getreport了。
我现在的程序,只能在获得getreport后才能返回数据。
那我如何在回NAK后,准备好数据了,直接发送数据给电脑,而不想等到电脑给我下一个getreport?
hyper320
6楼-- · 2019-12-29 08:56
sujieww 发表于 2017-8-4 10:05
应该是我说的不对。
是回NAK后,电脑就只会在5s后再一次发送getreport了。
我现在的程序,只能在获得getr ...

usb協議是底層的系統在執行的,你說的情況不可能會發生,除非usb底層出問題,因為這是屬於usb協議的部份,如果你發"NAK"是在GET_REPORT的 "IN"封包回應的,依照USB協議,驅動會找機會再發"IN"封包,但不太可能5秒後才重發,所以要你找個協議分析儀來妳的程序哪裡出問題,有可能電腦已經發出N的封包只是你看不到,電腦端的協議軟體也看不到的,一般來說,電腦出問題的機率不大,99.99%是你的裝置程序出問題!

一周热门 更多>