STM32 USB中斷傳輸和批量傳輸的區別在哪

[STM32F1] STM32 USB中斷傳輸和批量傳輸的區別在哪 

[複製連接] 
1811|1
   
電梯直達 跳轉到指定樓層
樓主
 
    樓主  2016-8-12 09:34 只看該做者 |退出氣泡模式 |只看大圖 回帖獎勵
我如今搞STM32 USB。原來用的中斷傳輸,如今改爲批量傳輸。
首先改了設備描述符和配置描述符。枚舉成功。
而後,又改了下面的地方。
<ignore_js_op> 
就是把中斷端點改爲批量端點,但是運行不正常。
請問高手,關於批量傳輸,初始化的地方還有哪兒與中斷傳輸不同?謝謝!
我對照着STM32官網的CDC例程也沒找到哪兒不一樣。

滿意回覆

+5

STARM 查看完整內容php

批量傳輸是一種可靠的單向傳輸,但延遲沒有保證,它儘可能利用能夠利用的帶寬來完成傳輸,適合數據量比較大的傳輸。 中斷傳輸是一種輪詢的傳輸方式,是一種單向的 ...
 
 
 
 
   
沙發
 
  2016-8-12 14:19 只看該做者
批量傳輸是一種可靠的單向傳輸,但延遲沒有保證,它儘可能利用能夠利用的帶寬來完成傳輸,適合數據量比較大的傳輸。

中斷傳輸是一種輪詢的傳輸方式,是一種單向的傳輸,HOST 經過固定的間隔對中斷端點進行查詢,如有數據傳輸或能夠接收數據則返回數據或發送數據,不然返回NAK,表示還沒有準備好。中斷傳輸的延遲有保證,但並不是實時傳輸,它是一種延遲有限的可靠傳輸,支持錯誤重傳。html

中斷端點的輪詢間隔由在端點描述符中定義,全速端點的輪詢間隔能夠是1~255mS,低速端點爲10~255mS,高速端點爲(2^interval-1)*125uS,其中interval 取1到16 之間的值。函數

他們之間的區別也僅在於事務傳輸發生的端點不同、支持的最大包長度不同、優先級不同等這樣一些對用戶來講透明的東西。post

批量傳輸和中斷傳輸在數據處理上是徹底同樣的,不一樣的地方就在於事務的調度上,以及端點最大包長以及是否支持批量端點等。
 
http://blog.chinaunix.net/uid-28320320-id-3415354.html
 
USB是共享總線,若是在USB HUB上有多個設備同時進行大數據量傳輸。例如設備A在傳輸4MB的數據,那麼設備B在設備A數據傳輸期間有可能得不到響應。如何保證設備B在其它設備傳輸數據時也能及時獲得響應?設備B能夠設立中斷傳輸端口,這樣Host Controller會每隔必定的時間間隔(例如1ms),保證向設備B發出IN令牌,使得B有機會發出數據。
因此中斷傳輸的數據量不能太大,在USB 1.1中最多隻能16 bytes.
USB 2.0的協議做了一些修改,中斷傳輸與Bulk傳輸的區別不大,數據量的限制也沒有了。不過,中斷傳輸的上述機制仍是在的。
若是USB的host controller老是被一個設備獨佔,那也就沒有中斷傳輸與Bulk傳輸的區別了。
相關文章
相關標籤/搜索