ch375請(qǐng)求設(shè)備描述符時(shí)總是超時(shí),請(qǐng)大家?guī)兔Γ?

我用ch375a做主機(jī)和USB接口的鼠標(biāo)通信,發(fā)setup包請(qǐng)求設(shè)備描述符時(shí)總是返回2CH。 以下是我的原程序(試驗(yàn)性質(zhì)的) START: MOV SP,#STACK CLR EA ;禁止所有中斷 LCALL INIT_UART LCALL INIT_VARIABLE START1: mov a,#reset_all mov dptr,#usb1_cmd_addr movx @dptr,a lcall delay_40ms lcall delay_40ms start11: MOV A,#06H MOV DPTR,#USB1_CMD_ADDR ;CHECK EXIST MOVX @DPTR,A MOV A,#55H MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A MOVX A,@DPTR LCALL UART_SEND ;AAH

MOV DPTR,#USB1_CMD_ADDR ;SET USB MODE MOV A,#SET_USB_MODE MOVX @DPTR,A MOV A,#05H ;MODE 05H MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A START2: MOV A,#20H LCALL DELAY_A MOV DPTR,#USB1_DAT_ADDR MOVX A,@DPTR LCALL UART_SEND CJNE A,#CMD_RET_SUCCESS,START2 ;51H

;==========以上是設(shè)置375為主機(jī)模式,可以成功完成==============

START4: LCALL DELAY_40MS MOV C,INTO1 ;HOST WAIT DEVICE PLUG JC START4 LCALL GET_INT_STAT1 CJNE A,#USB_INT_CONNECT,START4 LCALL UART_SEND ;15H MOV DPTR,#USB1_CMD_ADDR ;復(fù)位USB總線 MOV A,#SET_USB_MODE MOVX @DPTR,A MOV A,#07H ;MODE 07 MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A LCALL DELAY_40MS MOV DPTR,#USB1_CMD_ADDR MOV A,#SET_USB_MODE MOVX @DPTR,A MOV A,#05H ;MODE 05 MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A START5: MOV C,INTO1 JC START5 LCALL GET_INT_STAT1 CJNE A,#USB_INT_CONNECT,START5 MOV USB1_CONNECT,#15H ;等待復(fù)位后設(shè)備再次連接上來(lái) LCALL UART_SEND ;15H

;=================USB設(shè)備已經(jīng)正常連接,也可以成功=================

; MOV A,#GET_DESCR ; MOV DPTR,#0200H ; MOVX @DPTR,A ; MOV A,#01H ; MOV DPTR,#0000H ; MOVX @DPTR,A

MOV A,#WR_USB_DATA7 ;GET DEVICE DESCRIPTOR MOV DPTR,#USB1_CMD_ADDR MOVX @DPTR,A MOV A,#08H ;8 BYTE MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A MOV A,#80H ;80 MOVX @DPTR,A MOV A,#06H ;06 MOVX @DPTR,A MOV A,#00H ;00 MOVX @DPTR,A MOV A,#01H ;01 MOVX @DPTR,A MOV A,#00H ;00 MOVX @DPTR,A MOV A,#00H ;00 MOVX @DPTR,A MOV A,#12H ;12 MOVX @DPTR,A MOV A,#00H ;00 MOVX @DPTR,A MOV A,#ISSUE_TKN_X MOV DPTR,#USB1_CMD_ADDR MOVX @DPTR,A MOV A,#00H ;同步標(biāo)志 MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A MOV A,#0DH ;事務(wù)屬性 MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A START7: MOV C,INTO1 JC START7 LCALL GET_INT_STAT1   ??; LCALL UART_SEND CJNE A,#USB_INT_SUCCESS,START8?。淮藭r(shí)得到的中斷狀態(tài)總是2CH

LCALL UART_SEND SJMP $ 當(dāng)我用此程序和處于設(shè)備狀態(tài)的ch375通信時(shí),可以得到14H。請(qǐng)大家?guī)臀艺艺以颍呀?jīng)郁悶了好幾天了!謝謝了。

請(qǐng)問(wèn)你的單片機(jī)的晶振是多少???


12M的。


模式要設(shè)置為0X06 MOV DPTR,#USB1_CMD_ADDR ;SET USB MODE MOV A,#SET_USB_MODE MOVX @DPTR,A MOV A,#05H ;MODE 06H 試下看看,


謝謝,馬上去試。


hcn你好: 按照你的提示,已經(jīng)試過(guò)了。仍然沒(méi)有解決。我現(xiàn)在不明白的是:為什么設(shè)備端為ch375就可以成功,設(shè)備端不是ch375就總是超時(shí)。我的結(jié)論是:只要是涉及到USB總線上的數(shù)據(jù)傳輸,就會(huì)超時(shí)。我曾經(jīng)嘗試發(fā)送CLR_stall和auto_setup,得到的結(jié)果也是超時(shí)(返回20h或2ch,設(shè)備不同返回的數(shù)據(jù)不同)。 請(qǐng)你把你懷疑的地方列舉出來(lái),無(wú)論是硬件上還是軟件上,我去一一試驗(yàn)。謝謝了。


還有一個(gè)問(wèn)題就是你和USB鼠標(biāo)和鍵盤通信的話,由于USB鼠標(biāo)和鍵盤是低速設(shè)備(你可以接到計(jì)算機(jī)上面看下是不是低速設(shè)備),那么,用375做主機(jī)來(lái)獲取描述符的話,需要將主頻降為1。5M,同時(shí),將375和USB口的UD+和UD-的硬件連線顛倒下在試試,下面是降主頻的程序,放在設(shè)置模式之后: MOV A,#0x04;CMD_SET_SYS_FREQ MOV DPTR,#USB1_CMD_ADDR MOVX @DPTR ,A MOV A,#0X01; MOV DPTR,,#USB1_DAT_ADDR MOVX @DPTR,A


應(yīng)該不是速度的問(wèn)題,因?yàn)槲也迳?.0的優(yōu)盤,也會(huì)提示超時(shí)。 剛才按照提示,將主頻降為1.5m。出現(xiàn)兩種不同的情況: 1如果在設(shè)備插上后不復(fù)位USB總線,仍然提示超時(shí)(2C或20) 2如果設(shè)備插上后復(fù)位USB總線,則用GET_DESCR()命令375沒(méi)有任何反應(yīng)(不產(chǎn)生中斷),好像是375沒(méi)有收到我的命令。若用ISSUE_TOKEN命令,應(yīng)該是返回超時(shí)(我記得不是太清楚了) 再把D+和D-顛倒,同時(shí)主頻為1.5M,現(xiàn)象和上述一樣。

請(qǐng)問(wèn)是不是我的硬件的問(wèn)題?


如果是硬件的問(wèn)題,那為什么讓我的硬件做設(shè)備就能正常呢?


如果實(shí)在找不到原因,明天發(fā)給你們?cè)韴D和我的程序。


那你這樣,你在你的寫命令之后加點(diǎn)延時(shí)試下看,因?yàn)?75在命令和數(shù)據(jù)之間需要2US的延時(shí),數(shù)據(jù)與數(shù)據(jù)之間1US的延時(shí),也就是: MOV A,#0x04;CMD_SET_SYS_FREQ MOV DPTR,#USB1_CMD_ADDR MOVX @DPTR ,A NOP NOP MOV A,#0X01; MOV DPTR,,#USB1_DAT_ADDR MOVX @DPTR,A NOP 你也可以將你的原理圖發(fā)過(guò)來(lái)看下,還有就是你要檢查下你的中斷線連接是否正確以及375的晶振是否是12M還有就是UD+和UD-有沒(méi)有接錯(cuò)


謝謝hcn了,應(yīng)該是我硬件設(shè)計(jì)(時(shí)鐘)有些問(wèn)題。我在時(shí)鐘線了加了個(gè)15p的退耦電容后,高速設(shè)備(USB2.0的優(yōu)盤)可以正常了。但是低速設(shè)備(速度1.5m,如鍵盤鼠標(biāo)等)仍然不可以。 請(qǐng)問(wèn)ch375可以支持低速設(shè)備嗎?我查閱ch375的pdf文檔,沒(méi)有提是否支持低速設(shè)備。 如不支持,我只能改用ch374,重新設(shè)計(jì)硬件了。


上面和你說(shuō)了,在你的程序里面加上我說(shuō)的那段程序在將USB口的UD+,UD-和375的UD+,UD-反接就可以了


昨天按照提示,將D+和D-反接,并新找了兩個(gè)USB設(shè)備。發(fā)現(xiàn)兩個(gè)新設(shè)備可以通了。但原來(lái)的設(shè)備接上還是不通。請(qǐng)問(wèn)hcn,應(yīng)該是我程序在某個(gè)地方做的不對(duì)吧?


你把你的程序發(fā)到:tech@wch.cn,或者你看下你的那個(gè)設(shè)備是低速的設(shè)備嗎??


昨天把程序發(fā)過(guò)去了,也忘了在此留言了,不知道收到?jīng)]有


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

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