作者MaxHaru (懂得放手..才是王道)
看板Electronics
標題[問題] 關於USB Data Packet的問題.
時間Sun Jan 10 23:43:57 2016
請教版上的各位,
最新在學習有關USB2.0的東西,
但有個部份不是很清楚, 看過SPEC也沒印象有提到這部份,
還請各位賜教,
就是在Data Packet中, Host/Device是如何知道對方這次總供要傳幾個byte的資料.
在Endpoint descriptor中, 只有提到最大data payload,
但實際資料傳送時, 應該會有小於這個數字的資料傳輸吧,
此外, 在data packet的最後還有CRC的計算,
如果不能知道正確的的資料數, 應該沒辦法正確的算出CRC的值吧
甚至也有將CRC誤認為data或將data誤認為CRC的問題,
Ex: 在DATA0 Packet的format
-------------------------------------------------
|SYNC(8b)|PID(8b)|Data(n*8b)|CRC(16b)|EOP(3b/8b)|
-------------------------------------------------
是在packet中有information可以知道data的n是多少嗎?
還是說這只能事先定義(如何完成?)呢?
還請各位幫忙小弟解惑..感謝不盡
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.232.60
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1452440639.A.F19.html
1F:推 yudofu: setup的時候會通知要傳多少size,除了最後一個payload之外 01/11 20:58
2F:→ yudofu: 都要按照endpoint的max size傳好、傳滿,所以最後一個該有 01/11 21:00
3F:→ yudofu: 多大的size就可以計算出來了 01/11 21:01
4F:→ MaxHaru: 感謝, 但是否Endpoint0才有Setup呢? 01/12 00:14
5F:→ MaxHaru: 其他像Interrupt Endpoint,好像沒有setup,又要如何得知? 01/12 00:15
6F:推 kuoll: ep0才有setup host會透過ep0詢問其他ep的max packet size 01/16 16:38