2012-04-26 51 views
0

我在設備模式下使用Synopsys OTG內核。使用專用於該端點的週期性FIFO編程同步IN高速端點(USB 2.0),以實現每個微幀的最大傳輸(3個1024字節的數據包)。它工作99 +%的時間。但偶爾轉移被截斷。例如,前1024個字節將通過DATA0 PID(而不是正確的DATA2 PID)進入總線,剩餘的2048個字節將不會被髮送。由於我已正確編寫了包計數,多重計數,最大包大小和傳輸大小,所以我不確定是什麼導致了這一點。Synopsys USB OTG控制器(2.65a)偶爾會在USB設備模式下截斷同步IN

顯然這是一個非常具體的問題,我沒有太多的希望得到答案,但我認爲在黑暗中拍攝是值得一試。提前致謝。

回答

1

等時傳輸不保證數據包傳輸。所以如果主機控制器有其他主動傳輸,它將靜靜地放棄同步數據包。如果您需要有保證的包裝運輸,您應該使用批量轉運(但不能保證交貨時間)。

同步是理想的應用程序,如聲音或視頻流,你需要恆定的交貨時間,但一些幀的損失是好的。

該規範對總線進行了限制,允許在全速總線上分配不超過90%的幀用於定期傳輸(中斷和同步)。在高速巴士上,這個限制可以減少到不超過80%的微幀可以分配給定期傳輸。 (c)http://www.beyondlogic.org/usbnutshell/usb4.shtml