ch375的软件流程

我已经申请了贵公司的ch375芯片,按照说明书上的电路已经进行了焊接 我要实现的功能是:从计算机下传一个数据(我需要的数据只有八种000,001,010,011,100,101,110,111),单片机依据数据的不同作出不同的动作,我现在不太了解ch375的工作流程,请帮忙 还有命令 具体是如何写入的 谢谢 我用的晶振都是11.0592M的[Emot]1[/Emot]

操作流程是这样的: 1,首先给375设置模式2,这个时候,USB插到计算机上面会找到设备 2,接下来就是等待中断。 3,当有中断来之后,首先发送0X22的命令,在读取数据端口,看下返回的状态码是多少,这个时候如果计算机通过端点2发送数据下来的话,这个时候,你读取到的状态码为02h,这个时候你发送0X27的命令读取数据,在读取数据长度,接着在根据长度读取数据,读取完成之后退出中断函数。 4,相同的,在读取的中断状态为0AH的话,你需要发解锁命令23h命令,但是注意,在上传数据成功中断之前,你应该要通过端点2往372里面写数据。


楼上是沁恒的技术人员马?我写的程序您能不能看看,帮忙!!!


是技术人员,你把程序帖出来看下


375的晶振一定要用12M,11.0592是不可以的,我们的说明书有说明的!


;主程序的例子 ORG 0000H ;复位后单片机入口 LJMP START ORG 0003H ;CH375中断 LJMP CH375_INTER START: LCALL REST ;初始化 SETB EA ;允许中断 WAIT_REQUEST:NOP SJMP WAIT_REQUEST ;主循环

;**************************************************************************** ; ; 初始化子程序 ; USE: ACC, R7, DPTR REST: LCALL CH375_INIT RET CH375_INIT: MOV DPTR,#CH375_CMD_PORT ;命令口地址 MOV A,#CMD_SET_USB_MODE MOVX @DPTR,A ;设置USB工作模式 nop ;如果时钟频率低于16MHz则无需该指令延时 DEC DPL ;数据口地址 MOV A,#02H MOVX @DPTR,A ;设置为使用内置固件的USB设备方式 NOP ;如果时钟频率低于16MHz则无需该指令延时 NOP ;如果时钟频率低于16MHz则无需该指令延时 CH375_INIT_WT: MOVX A,@DPTR ;返回操作状态 XRL A,#CMD_RET_SUCCESS JNZ CH375_INIT_WT ;等待操作成功,通常需要等待10uS-20uS ; 下述三条指令用于启用中断 CLR IT0 ;置外部信号为低电平触发 SETB PX0 ;置高优先级 CLR IE0 ;清中断标志 SETB EX0 ;允许CH375中断 RET CH375_INTER:PUSH PSW ;现场保护 PUSH ACC PUSH DPL PUSH DPH PUSH 01H ;R1 PUSH 02H ;R2 MOV DPTR,#CH375_CMD_PORT ;命令口地址 MOV A,#CMD_GET_STATUS MOVX @DPTR,A ;获取中断状态并取消中断请求 NOP ;如果时钟频率低于16MHz则无需该指令延时 NOP ;如果时钟频率低于16MHz则无需该指令延时 MOV DPTR,#CH375_DAT_PORT ;数据口地址 MOVX A,@DPTR ;返回操作状态 CLR IE0 ;清中断标志,对应于INT0中断 LJMP CH375_DOWN_OK ;USB批量数据接收成功,USB端点2的OUT

CH375_INT_4:MOV DPTR,#CH375_CMD_PORT ;命令口地址 MOV A,#CMD_UNLOCK_USB MOVX @DPTR,A ;释放当前USB缓冲区 SJMP CH375_INT_RET CH375_INT_RET: POP 02H ;R2 POP 01H ;R1 POP DPH POP DPL POP ACC POP PSW ;恢复寄存器 RETI ;中断返回 ; USB批量数据接收成功 CH375_DOWN_OK: MOV DPTR,#CH375_CMD_PORT ;命令口地址 MOV A,#CMD_RD_USB_DATA MOVX @DPTR,A ;从当前USB中断的端点缓冲区读取数据块,并释放缓冲区 NOP ;如果时钟频率低于16MHz则无需该指令延时 NOP ;如果时钟频率低于16MHz则无需该指令延时 MOV DPTR,#CH375_DAT_PORT ;数据口地址 MOVX A,@DPTR ;首先读取后续数据长度 MOV R2,A JZ CH375_INT_RET ;长度为0,没有数据则直接退出 MOV RECV_LEN,A MOV R1,#RECV_BUFFER ;接收缓冲区 CH375_INT_RECV: MOVX A,@DPTR ;接收数据 MOV @R1,A INC R1 DJNZ R2,CH375_INT_RECV ;继续接收数据直至结束 ; CALL PROCESS ;分析下传数据并准备应答 LJMP CH375_INT_RET

; ;**************************************************************************** ; 您看一下 这是我把您的东西删删减减得到的 不知道对不对 我自己的动作程序还没写


只有登录才能回复,可以选择微信账号登录