ez-usb中pid為何需要data0和data1兩個
forward
因為usb構架對錯誤的校正是非常嚴謹的。就如前面所提的,ack握手是給主機乙個訊號:外圍器件正確
的接收到了主機所傳送的資料。但是握手資料報自身會不會在傳輸中被混淆呢?為了能夠檢測這個錯誤
,主機和外圍裝置兩邊都各自維護乙個與資料報傳輸相關的校驗位,當資料到達目的地時,內部校驗位
就會與data0或者data1來進行比較。當主機或者外圍裝置傳送資料時,它們互動的傳送data0和data1。
主機和外圍裝置就可以通過對資料pid與內部校驗位狀態的比較來確定錯誤的握手資料報。
綜上得出乙個結論:ack訊號只是在收到data0或data1資料報後的乙個回應,如果data0或者data1無法
到達目標自然目標就認為不存在這次資料傳輸,這樣容易產生書籍。因此通過data0和data1的交替傳輸
,如果檢測到兩個data0或者兩個data1那麼就表明資料報傳輸錯誤或者被遺漏。
根據我做firmware的經驗,data0/data1除了區分相鄰的2個包以外,沒有用處。之所以要有data0和data1,就是為了防止把某個包認成另外乙個,造成資料出錯。
也可以進行容錯處理,或保持主機和裝置雙方之間的資料的同步。比如,裝置接收到乙個錯誤的包,他不改變自己的pid,主機只有接收到確認的包才改變自己的pid.
data0 ,data1主要是用於資料的檢錯,它是資料報的前導字段,在資料傳輸過程中,依次是「data0,data1...」。
是usb的資料報型別中的pid名稱 令牌:in,out,sof,setup 資料:data0,data1,data2,mdata 握手:ack,nak,stall,nyet 特殊型別:pre,err,split,pin
為何需要核函式
生存?還是毀滅?哈姆雷特 可分?還是不可分?支援向量機 之前一直在討論的線性分類器,器如其名 汗,這是什麼說法啊 只能對線性可分的樣本做處理。如果提供的樣本線性不可分,結果很簡單,線性分類器的求解程式會無限迴圈,永遠也解不出來。這必然使得它的適用範圍大大縮小,而它的很多優點我們實在不原意放棄,怎麼辦...
為何需要呼叫「super viewDidLoad」
super didreceivememorywarning void viewdidload 在上面的 中,什麼需要呼叫父類相應的方法呢?以viewdidload為例,父類 super 中的 viewdidload 會幫助你做一些初始化的工作,比如 a是父類,b繼承a,b 在viewdidload ...
為何需要驗證集?
在神經網路中有很多引數,有些引數,比如權重是可以通過訓練集學習更新的 但是有些引數是在訓練開始之前人為設定的,比如學習率 或初始學習率 層的大小等這類引數,我們可以稱之為超引數。這樣的引數一次訓練只能設定一次,很顯然為了找到乙個合適的數值,需要不斷調整其設定值,重複訓練模型,觀察其結果。那為什麼不直...