CH375B外置固件模式程序調(diào)試新問題

這幾天一直在調(diào)試CH375B的外置固件模式程序,內(nèi)置固件模式已經(jīng)調(diào)試好了(說明硬件沒有問題)。

外置固件模式程序調(diào)試中發(fā)現(xiàn),在0地址狀態(tài)時發(fā)送了設(shè)備描述符的前8個字節(jié)給PC,按USB協(xié)議規(guī)定,之后PC會發(fā)一個新的工作地址給USB設(shè)備,即應(yīng)該進入USB_INT_EP0_SETUP中斷狀態(tài)下的DEF_USB_SET_ADDRESS,但是調(diào)試中發(fā)現(xiàn)是進入了USB_INT_EP0_IN,之后就再沒有中斷了,請問在此時USB_INT_EP0_IN中斷應(yīng)該處理些什么呢? case USB_INT_EP0_IN: if(mVarSetupRequest==DEF_USB_GET_DESCR){ //描述符上傳 mCh375DesUp(); mCh375Ep0Up(); } else if(mVarSetupRequest==DEF_USB_SET_ADDRESS){ //設(shè)置地址 CH375_WR_CMD_PORT(CMD_SET_USB_ADDR); CH375_WR_DAT_PORT(VarUsbAddress); //設(shè)置USB地址,設(shè)置下次事務(wù)的USB地址 } CH375_WR_CMD_PORT (CMD_UNLOCK_USB); //釋放緩沖區(qū) break;

這是貴公司例程中的程序

實際上按照USB的協(xié)議里面首先是上傳9個字節(jié)的設(shè)備描述符告訴計算機端點0的大小是多大,在接著是設(shè)置地址,完了之后在獲取完整的設(shè)備描述符。在你USB_INT_EP0_IN上傳的時候,首先你需要將數(shù)據(jù)寫到端點0上傳緩沖區(qū)里面去,啟動發(fā)送,等待上傳完成,當(dāng)上傳完成之后,首先發(fā)送解鎖的命令(USB_UNLOCK),完了之后在將數(shù)據(jù)寫到端點0上傳緩沖區(qū)里面去就可以了。


我最想知道的是:什么時候可以進入USB_INT_EP0_SETUP中斷狀態(tài)下的DEF_USB_SET_ADDRESS狀態(tài),能進入USB_INT_EP0_IN狀態(tài),說明設(shè)備描述符的前8個字節(jié)應(yīng)該是成功上傳到了PC,在USB_INT_EP0_IN狀態(tài)中已經(jīng)執(zhí)行了USB_UNLOCK,但是在第二次進入USB_INT_EP0_SETUP中斷時讀取的EP08字節(jié)還是上傳的設(shè)備描述符的前8個字節(jié),感覺是這8個字節(jié)沒有被釋放


PC通常是先獲取部分設(shè)備描述符(目的是獲取設(shè)備描述符的總長度,以及控制端點的大?。?,然后就會給設(shè)備設(shè)置地址,即進入USB_INT_EP0_SETUP中斷狀態(tài)下的DEF_USB_SET_ADDRESS狀態(tài)。 按照貼1中,設(shè)置地址后具體出現(xiàn)了什么情況?是出現(xiàn)無法識別的設(shè)備,還是其他


目前的情況是無法進入DEF_USB_SET_ADDRESS狀態(tài),我覺得應(yīng)該是第二次進入USB_INT_EP0_SETUP后可以進入DEF_USB_SET_ADDRESS狀態(tài),可現(xiàn)在第二次進入后bmReuestType,bRequest等8個字節(jié)都是設(shè)備描述符的前8個字節(jié),正常的話應(yīng)該是bmReuestType=0x00,bRequest=0x05.

另外我發(fā)現(xiàn)例程中設(shè)備描述符的USB版本號是 ,0x10 //USB規(guī)范版本信息 ,0x01 這是USB1.1嗎?


(1)如果先前上傳的設(shè)備描述符內(nèi)容及流程正確的話,那么第二次USB_INT_EP0_SETUP應(yīng)該是設(shè)置地址。程序是否被修改過? (2)是指USB1.1


我用的是2407的DSP,程序結(jié)構(gòu)基本按照例程,但有些小修改,目前程序只編寫了部分,但按照USB協(xié)議流程,第二次進入USB_INT_EP0_SETUP應(yīng)該是響應(yīng)DEF_USB_SET_ADDRESS了。

感覺是EP0的8個字節(jié)沒有被釋放,一直被設(shè)備描述符的前8個字節(jié)占據(jù)了


我們MCS-51的示例是經(jīng)過測試的,流程絕對是沒問題的。 既然移植,有了改動,應(yīng)該還是程序原因,可以把程序貼出來看看


在進入DEF_USB_SET_ADDRESS這個中斷的后,由于沒有數(shù)據(jù)階段.進入狀態(tài)階段CH372上傳了零長度的數(shù)據(jù)包作為ACK,這時候就會進入USB_INT_EP0_IN,在USB_INT_EP0_IN中去設(shè)置CH372的地址是因為這樣做比較保險,PC正常的接受到ACK應(yīng)答了.一定要上傳0長度的數(shù)據(jù),否則進入不了USB_INT_EP0_IN


好的,謝謝大家,我覺得還是程序改動的問題,會仔細檢查的


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

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