我用CH375_WR_CMD_PORT( CMD_SET_USB_MODE );CH375_WR_DAT_PORT( 6 );设置时总是返回 USB_INT_CONNECT,而不是返回CMD_RET_SUCCESS.请问到底应该返回什么?
设置模式命令返回的是操作状态,而不是中断状态,也就是返回CMD_RET_SUCCESS,模式设置成功后,你插上U盘就自动检测到U盘连接,返回中断状态USB_INT_CONNECT。 你可以设置模式之后20uS返回操作状态,你可以设置模式之后就等待读取操作状态,
CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); CH375_WR_DAT_PORT( mode ); for( i=0; i!=100; i++ ) { /* 等待设置模式操作完成,不超过30uS */ if ( CH375_RD_DAT_PORT()==CMD_RET_SUCCESS ) return( TRUE ); /* 成功 */ }
返回2个状态给你,先是返回0X55(操作成功),接着在返回0X15(设备连接-在你设备插上的前提下),你可以不用看设置模式的状态。实际在操作的过程中,只要测试命令通过了,那么你在设置模式的时候可以不用判断其返回的状态是什么,只需要检测设备连接就可以了。
谢谢楼上两位的指点.试了试,好象CH375_WR_CMD_PORT( CMD_SET_USB_MODE )只有在插盘以前才返回CMD_RET_SUCCESS,是不是这样?
如果你U盘先插上的话,其实是你设置好模式之后,先返回CMD_RET_SUCCESS,再返回USB_INT_CONNECT的。 模式设置成功之后,375会自动检测U盘的连接,检测到连接上的话,就会产生中断通知单片机,此时的中断状态就是连接与否的中断状态:USB_INT_CONNECT或USB_INT_DISCONNECT。
谢谢luoye268268的解释,你能告诉我CMD_RET_SUCCESS的持续时间吗?因为只要u盘事先插上, 我就收不到CMD_RET_SUCCESS,然后写扇区就失败,而在CMD_USB_SET_MODE后插上u盘就能收到 CMD_RET_SUCCESS,并且写扇区成功.
你在设置模式之前,如果使用CHECK_EXIST命令测试硬件返回成功的话,那你设置模式时就不用读取返回的操作状态CMD_RET_SUCCESS了。
谢谢luoye268268的提示,不过无法解决我的问题.好在我改用ch374后没有这些问题了.