请教大侠:能不能把 “CH375(主)-操作- CH372(从)”设计中CH375(主)的汇编样板程序贴出来,万分感谢!
我自己用汇编编了一段简单的数据发送程序,想看一下CH375发送数据给CH372是否成功。通过测试发现CH375和CH372设置模式已成功(D+=3.2V,D-=-0.01V),但传输数据未成功,不知问题在哪,请帮我检查一下,谢谢! 我的CH375程序如下: CMD_RET_SUCCESS EQU 51H CMD_SET_USB_MODE EQU 15H CMD_WR_USB_DATA7 EQU 2BH CMD_GET_STATUS EQU 22H CMD_UNLOCK_USB EQU 23H CMD_RESET_ALL EQU 05H SEND_LEN EQU 30H SEND_BUFFER EQU 40H CMD_RD_USB_DATA EQU 28H CH375_CMD_PORT EQU 0BDF1H CH375_DAT_PORT EQU 0BCF0H USB_INT_SUCCESS EQU 14H CMD_SET_ENDP6 EQU 1CH CMD_SET_ENDP7 EQU 1DH CMD_ISSUE_TOKEN EQU 4FH CMD_CLR_STALL EQU 41H FLAG_JL_F BIT 1H ;************************************************************************************************* org 0 ljmp MAIN ORG 0003H LJMP INTER ORG 0030H ;********************************************************************************************** MAIN: lcall delay50ms LCALL INITIAL setb p1.0 CLR FLAG_JL_F MOV SEND_LEN,#2 ;发送数据长度为2字节 MOV 40H,#55H MOV 41H,#05H
CLR IT0 ;置外部信号为低电平触发 SETB PX0 ;置高优先级 CLR IE0 ;清中断标志 SETB EX0 ;允许CH375中断 SETB EA HERE: JB P1.0,HERE ;通过硬件将P1.0置低 lcall wr_ch375 SJMP $ ;************************************************************************************************
wr_ch375: MOV A,SEND_LEN mov r3,SEND_LEN MOV DPTR,#CH375_CMD_PORT MOV A,#CMD_WR_USB_DATA7 MOVX @DPTR,A MOV DPTR,#CH375_DAT_PORT MOV A,SEND_LEN MOVX @DPTR,A MOV R1,#SEND_BUFFER CH375_INT_SEND: MOV A,@R1 MOVX @DPTR,A INC R1 DJNZ R3,CH375_INT_SEND
JNB FLAG_JL_F,XXX_JI XXX_OU: MOV DPTR,#CH375_CMD_PORT ;发送数据奇数次 MOV A,#CMD_SET_ENDP7 MOVX @DPTR,A MOV DPTR,#CH375_DAT_PORT MOV A,#0C0H MOVX @DPTR,A CLR FLAG_JL_F NOP NOP NOP NOP SJMP ISSUE_TOKEN XXX_JI: MOV DPTR,#CH375_CMD_PORT ;发送数据偶数次 MOV A,#CMD_SET_ENDP7 MOVX @DPTR,A
MOV DPTR,#CH375_DAT_PORT MOV A,#80H MOVX @DPTR,A SETB FLAG_JL_F NOP NOP NOP NOP
ISSUE_TOKEN: MOV DPTR,#CH375_CMD_PORT MOV A,#CMD_ISSUE_TOKEN MOVX @DPTR,A MOV DPTR,#CH375_DAT_PORT MOV A,#21H MOVX @DPTR,A NOP
RET ;************************************************************************************************
INITIAL: MOV DPTR,#CH375_CMD_PORT MOV A,#CMD_SET_USB_MODE MOVX @DPTR,A ;设置USB工作模式 DEC DPL MOV A,#06H MOVX @DPTR,A 设置为使用内置固件的USB-host CH375_INIT_WT: MOVX A,@DPTR XRL A,#USB_INT_SUCCESS JNZ CH375_INIT_WT RET ;*************************************************************************************************
INTER: PUSH PSW ;现场保护 PUSH ACC PUSH DPL PUSH DPH CLR IE0 clr ex0 MOV DPTR,#CH375_CMD_PORT MOV A,#CMD_GET_STATUS MOVX @DPTR,A MOV DPTR,#CH375_DAT_PORT MOVX A,@DPTR CJNE A,#USB_INT_SUCCESS,NEXT_1 LJMP CH375_INT_RET ;?中断返回前是否要释放当前USB缓冲区??
next_1: MOV DPTR,#CH375_CMD_PORT ;操作错误处理 MOV A,#CMD_CLR_STALL MOVX @DPTR,A MOV DPTR,#CH375_DAT_PORT MOV A,#02H MOVX @DPTR,A
CH375_INT_RET: setb ex0 POP DPH POP DPL POP ACC POP PSW RETI ;中断返回 ;************************************************************************************************************************* delay50ms: mov r7,#100 ;original=50 dly_1: mov r6,#0ffh djnz r6,$ djnz r7,dly_1 ret ;----------------------------------------------------------------- END
有大侠帮我检查一下吗?检查一下发送数据的流程是否正确? 万分感谢!!!
你做主机的CH375要用外部固件来写,也就是说你要获取描述符
谢谢大侠!我刚才在程序中把设置ch375-HOST模式(设为#06H)后要读反馈成功(XRL A,#USB_INT_SUCCESS )的程序去掉发现发送数据成功了。
我现在有几个问题请教大侠: 1.MCU在完成设置CH375模式后是否要等待读取“设置模式成功”的反馈? 2.MCU发送一组数据给CH375完成后该怎样处理,是否有什么反馈要处理(比如:CH375发送一个“下传成功”的反馈信号给MCU)? 3.MCU从CH375接收一组数据后是否要发送一个反馈信号(如“上传成功”)给CH375芯片?
万分感谢大侠的指教!
1.会返回SUCCESS,你要读去返回状态 2,发送完一组数据会返回下传成功,你要读取状态 3.是的
你可以到我们网站上下载CH375HST.ZIP的压缩包,里面有详细的流程说明
谢谢hcn大侠