用issue_token命令執(zhí)行基本控制傳輸,要求取設備的HID報告描述符, 控制傳輸?shù)慕㈦A段可以完成, 數(shù)據階段中用issue_token命令向設備端發(fā)送in包也成功, 但此后我用rd_usb_data取數(shù)據時,無論數(shù)據的數(shù)量或數(shù)據本身都是錯誤的。 數(shù)據同步方面,建立階段的同步屬性設的是80h,數(shù)據階段設的是c0h。 請大俠幫忙!
那你發(fā)送下去的端點號以及發(fā)送令牌的中斷傳輸是成功的嗎?
應該都是成功的 建立階段:當我發(fā)送issue_token后,讀中斷狀態(tài)得到的是14H 數(shù)據階段:發(fā)送issue_token后,讀中斷狀態(tài)得到的也是14H
DATA階段:issue_token(( 0 << 4 ) | DEF_USB_PID_IN)操作成功,應該能讀取到數(shù)據。 UploadImages/20077301095455.rar這是獲取的完整程序,你可以參考一下。
忙活了2天多,發(fā)現(xiàn)好像不是數(shù)據是否正確的問題,而是覺得ch375對rd_usb_data命令沒有反映,或者說反應錯誤,原因如下: 1 如果我發(fā)送完rd_usb_data命令后立即去讀,讀到的數(shù)據是14H(好像讀到的是上一次的中斷狀態(tài)字節(jié)) 2 如果我發(fā)送完rd_usb_data命令后給一個大于大約10微秒的延時,讀到的數(shù)據是00H(好像是返回了一個空包給ch375) 我根據上述兩個現(xiàn)象得到了兩個結論,不知道對不對?
再問兩個問題: 1 用ch375做設備,主機給ch375發(fā)送usb總線復位命令,那總線復位子程序該做些什么工作呢?做完這些工作后又該做什么工作呢? 2 ch375做設備時,有USB_INT_BUS_RESET1~USB_INT_BUS_RESET4四個中斷狀態(tài),中斷原因都是檢測到總線復位,請問這四個中斷狀態(tài)有什么不同嗎?
1,總線復位并沒有說是把設備給復位了啊,實際總線復位,USB總線進行了停發(fā)SOF包等操作。在總線復位完成之后的話,那么,主機會繼續(xù)檢測設備連接,當檢測的設備連接時候,主機就會發(fā)送獲取設備描述符的控制傳輸?shù)拿?,設備接收到這個命令之后,將設備本身的描述符傳給主機,然后主機受到之后,設置設備的地址,接下來就是獲取配置描述符,完成之后就設置配置。 2,/* USB_INT_BUS_RESET 0x0000XX11B */ /* USB總線復位 */ 只要返回的狀態(tài)符合上面的說明的,就是總線復位,沒什么區(qū)別
我的硬件連接到計算機后,計算機總是發(fā)USB總線復位命令,發(fā)送12次后提示設備出錯。 按照上面的解釋,應該是計算機沒有檢測到設備已經連接上,所以它會才重復地發(fā)復位命令。 如果我的理解正確,那么應該通過什么途徑重新把設備連接上呢,重新設置工作模式嗎? 我試過了,沒成功!
還有,4樓的問題怎么沒有回答?
實際上是這樣的,在你測試命令通過之后,設置模式為0X02,這樣的話,372的UD+對地電壓為3。3V左右,UD-對地電壓為0V左右,這樣的話,在接到計算機的話,計算機就會提示你安裝驅動,如果你計算機都沒找到硬件的話,那么計算機隨便發(fā)什么命令都是沒有意義的