CH552 USB中斷傳輸 建立SETUP失敗

使用CH552芯片,希望模擬鍵鼠設備與PC建立通信。


使用例程運行正常,所以希望拓展一下模擬設備功能。

現(xiàn)在想在USB初始化開始,進行SETUP事務時,先接受PC的設備描述符請求,進入USB中斷。此時假設不提前準備好描述符數(shù)據(jù),而是先向其他設備請求,一段時間后通過其他通道接受到描述符數(shù)據(jù),再將數(shù)據(jù)發(fā)往PC。


嘗試了將描述符的處理過程從例程的USB中斷處理中提取出來,作為一個獨立的函數(shù),另設標志位,在請求到來時,對標志位變更,然后根據(jù)標志位變化,在主循環(huán)實現(xiàn)對相關描述符數(shù)據(jù)的發(fā)送準備。

測試結果無法完成SETUP事務。


請問這個過程如何修改CH552例程實現(xiàn)?目前的例程只能在一個中斷內(nèi)完成數(shù)據(jù)的傳輸,要求提前準備好數(shù)據(jù)。若是設備主動發(fā)送數(shù)據(jù),才有鍵鼠點擊移動事件的例程。那么如何在不是設備主動發(fā)起數(shù)據(jù)發(fā)送的情況下, 不在請求到來的當次中斷內(nèi)返回數(shù)據(jù),而在數(shù)據(jù)準備完成后再發(fā)送呢?

您好,根據(jù)您的描述。您可以在CH552獲取并準備好描述符數(shù)據(jù)后,再以此為條件開始初始化并使能USB外設。USB通訊時,如果主機在一段時間內(nèi)沒有收到設備的響應,會認為設備失效,并斷開與設備的鏈接。


超時的話應該有一個判定的時間吧,請問如果我在超時時間內(nèi)能獲取完整數(shù)據(jù),這時應該如何從設備向PC發(fā)送剛剛收集到的數(shù)據(jù)呢?


您好,在數(shù)據(jù)準備好之前,枚舉失敗可以先將USB關閉,再重新打開USB,當數(shù)據(jù)準備好,枚舉就能正常通過了。


我其實是希望模擬一個類似透傳的過程。因為CH552芯片的XDATA空間并不足夠讓我存儲一些特殊設備的完整的各類描述符。

有沒有邊和USB建立SETUP事務,一邊從另一個設備處獲取描述符,從而實現(xiàn)中轉的方式呢?流程如:收到請求-轉發(fā)請求-收到描述符-轉發(fā)描述符。

CH552/554示例代碼內(nèi)有在中斷外發(fā)送鍵鼠按鍵移動數(shù)據(jù)的方式。但沒有提供中斷外對PC的請求進行回復的示例,請問這種方式有什么可以實現(xiàn)的方式嘛?


USB2.0中本身就有類似流控的NAK、ACK響應應答機制。

image.png

建議可以參考相關資料了解一下USB2.0底層包應答機制。

另外USB2.0,所有數(shù)據(jù)收發(fā),設備都是被動的,不存在所謂“中斷外對PC的請求進行回復”這種概念。

收到請求-轉發(fā)請求-收到描述符-轉發(fā)描述符”這種功能的開發(fā)較為復雜,建議先將只做設備、只做主機研究透徹再進行后續(xù)開發(fā),否則遇到問題將很難處理。



另外的,你的需求可能是要獲取到鍵鼠數(shù)據(jù),然后對數(shù)據(jù)進行一定修改再上報給電腦,類似射擊游戲輔助器之類。

可以考慮直接使用CH9350:http://www.findthetime.net/downloads/CH9350DS_PDF.html

避免涉及USB底層開發(fā)。


您好,感謝您之前在我關于552芯片描述符轉發(fā)問題上的答復!

我放棄了中斷外實現(xiàn)的想法,現(xiàn)在我在嘗試在IN包的回復內(nèi)實現(xiàn)數(shù)據(jù)發(fā)送。

請問一下CH552/554芯片,如何在中斷中應答NAK而不回復數(shù)據(jù)呢?

ex:

我嘗試了在中斷中添加延時操作,在延時較長的情況下,對于描述符的請求,設備對請求回復ACK后,會在數(shù)據(jù)階段的IN報文應答NAK,并在延時結束后回復數(shù)據(jù),通信正常

那么有沒有什么方式可以控制NAK的回復,在未能準備好數(shù)據(jù)的情況下首先對請求回復ACK表示收到,對IN報文也回復NAK,準備好數(shù)據(jù)再通過IN發(fā)送數(shù)據(jù)?

目前嘗試了將示例代碼中斷中的setup事務處理修改,首次不回復數(shù)據(jù),只保留ack應答,在in中斷的處理中進行回復NAK。

出現(xiàn)的問題是邏輯分析儀顯示會返回一個長度為0的報文,而不是純粹的NAK。從而似乎直接跳過了數(shù)據(jù)階段,進入狀態(tài)階段。

對于主機的請求,請問有辦法軟件主動控制NAK和ACK應答而不回復數(shù)據(jù)嗎?



參考一下鏈接

http://www.findthetime.net/bbs/thread-86976-1.html


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频