我用ch375a做主机和USB接口的鼠标通信,发setup包请求设备描述符时总是返回2CH。 以下是我的原程序(试验性质的) 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
;==========以上是设置375为主机模式,可以成功完成==============
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 ;复位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 ;等待复位后设备再次连接上来 LCALL UART_SEND ;15H
;=================USB设备已经正常连接,也可以成功=================
; 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 ;同步标志 MOV DPTR,#USB1_DAT_ADDR MOVX @DPTR,A MOV A,#0DH ;事务属性 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 ;此时得到的中断状态总是2CH
LCALL UART_SEND SJMP $ 当我用此程序和处于设备状态的ch375通信时,可以得到14H。请大家帮我找找原因,已经郁闷了好几天了!谢谢了。