老丁帶你學USB-解疑2:USB協議中的ACK、NAK、STALL三種返回包含義

三種返回確認信息

ACK 、NAK 、STALL

【ACK 包】

ACK(確認) 表示 主機和設備已經收到數據,沒有出現錯誤。設備必須在Setup 事務的交換包中返回ACK,設備也必須在OUT事務的交換中返回ACK。

主機在IN事務的交換包中返回ACK。

【NAK 包】(NAK包只能從設備發向主機)

NAK(未確認) 表示設備正忙或沒有數據要返回。如果主機在設備太忙而不能接受數據時發送數據,

則設備在交換包中發出NAK。如果主機在設備沒有數據可發送時向設備請求數據,則設備在數據包

中發出NAK。在上述兩種情況的任何一種下,NAK表示一個暫時的狀況,而主機會在以後重試。

【STALL包】

不支持的控制請求,控制請求失敗或終端失敗

當一個設備接收到一個終端不支持的控制傳輸請求,那麼這個設備返回一個STALL 給主機。設備

在它支持這個請求但是由於某些原因不能採取請求的動作時,也會發出STALL給主機。

STALL 的另一個用途是在終端暫停特性設置的情況下來響應傳輸請求,表示終端根本不能發送

或接收數據。規範稱這個類型的延遲爲功能延遲。

批量和中斷終端必須支持功能延遲。

在接收到一個功能STALL後,主機停止所有與設備懸而未決的請求,並且不會恢復通信直到它

已經發送一個成功的請求來清除設備的暫停特性。

主機絕不會發送STALL

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章