使用异步通讯,取反测试通过、CMD01_GET_IC_VER取得0x42,磁盘连接测试通过、CMD0H_DISK_MOUNT通过、读取U盘标识如下:$
你试着屏蔽掉读取U盘标识的代码,磁盘初始化成功之后直接打开目录
我是打开失败后才加上去 读取U盘标识的代码 来测试的
CMD0H_DISK_MOUNT 发完这个命令等待到成功信号之后什么也不要做,直接打开文件或者文件夹
...我是CMD0H_DISK_MOUNT 之后CMD01_GET_STATUS,再之后打开文件夹的
嗯 对的 返回 通过了吧? 另外查询中断函数还要按照以下修改
UINT8 Query376Interrupt( void ) { #ifdef CH376_INT_WIRE if(RI==1) //串口接收标志,串口接收到数据 RI=0; //清串口标志 return( CH376_INT_WIRE ? FALSE : TRUE ); /* 如果连接了CH376的中断引脚则直接查询中断引脚 */ #else if ( RI ) ////串口接收标志,串口接收到数据 { RI = 0; //清串口标志 return( TRUE ); } else return( FALSE ); #endif }
这个有什么区别呢?我用的是汇编语言,清除376中断输出的命令就只有CMD01_GET_STATUS吧?不清除的下面不就会误判了?而且即使是打开失败也应该有中断输出啊!让这部分代码重复执行,始终得不到中断输出。。。。
如果出错的话 什么情况都有可能发生啊 有可能等不到,你用的什么单片机啊?
sn8p单片机,只要有一次成功就好办了,问题是没有一次成功
问题找到了。 手册上说:为了区分命令码和数据,376需要单片机先通过串口发送2个同步码,然后再发送命令码,接着再发送数据或者接收数据。 刚开始理解的比较模糊,只是开始发送了2个同步码,因为是2个命令码组成的,所以需要发送2遍。。。
不过这个地方还是不明白: 手册上说“\0”CMD0H_FILE_OPEN等于初始化文件系统,这个跟CMD0H_DISK_MOUNT(磁盘初始化)有什么区别,是要磁盘初始化后再初始化文件系统?
当然是先磁盘初始化,然后在文件系统初始化,所以说先是CMD0H_DISK_MOUNT命令,在是CMD0H_FILE_OPEN命令。
是不是这个意思? 不对文件进行操作,进行其他涉及到磁盘操作之前也要CMD0H_FILE_OPEN; 如果对文件进行操作,则可以直接CMD0H_FILE_OPEN文件,不需要“\0”CMD0H_FILE_OPEN?