CH375问题

怎么写的50楼已经把程序贴出来了,现在的问题是程序重新启动了,关键要把这个问题检查一下.前面一直在给你说仔细检查一下RAM看是否有问题.你重点查一下.我们只能起到辅助作用,没有你的硬件实验也无法做.


怎么检查?我用的KEIL


我看了,RAM 没有溢出


首先你看看资料这款MCU的RAM是多少. 然后看看KEIL编译好后所用的data xdata是多少.这些都是51MCU最基础的.RAM分配有问题很有可能导致这个现象.但是还有其他可能性导致程序重新启动的.


我的RAM是2K,data xdata一共 不到1K


我把命令改了就好了,ExecCommandBuf( CMD_ByteWrite, 1, &DATA_BUF ); ,改成这个就没重启


这样修改成功的话还是表明可能RAM有点问题,这样是按照字节写,写一个字节,指针就指向了DATA_BUF[0],修改为 ExecCommandBuf( CMD_ByteWrite, 255, &DATA_BUF );看看 这个命令速度上会慢很多.


这里的255代表什么呢?是一个一个字节的写,写255个吗?


你既然选择用这个模块了,好好看看说明书.


对于CMD_ByteWrite,写入U盘的数据事先存放在mCmdParam.ByteWrite.mByteBuffer,长度由mCmdParam.ByteWrite.mByteCount决定,最大长度不可以超过MAX_BYTE_IO,CH375HM.PDF中有各个命令的详细解释。


我刚才看了你给我说的这个PDF文件了,若我一个数组长度100,该怎样把数组里的数据放到mCmdParam.ByteWrite.mByteBuffer中呢,给指导一下吧,谢谢


该怎样把数据复制到mCmdParam.ByteWrite.mByteBuffer中呢?


我改了改,不是RAM的问题


我记得刚开始用你们这个东西时,ExecCommandBuf这个函数我是直接复制的你们的,那会也会重启,后来我改了一下,就不重启了 } while ( -- i ); } CH375HM_INDEX_WR( PARA_CMD_LEN_ADDR ); CH375HM_DATA_WR( len | PARA_CMD_BIT_ACT ); // 向索引地址PARA_CMD_LEN_ADDR写入后续参数的长度,最高位通知模块,说明命令包已经写入,请求开始执行命令 CurrentBuf = bufstart; // 外部RAM缓冲区起始地址,仅用于FileRead或者FileWrite命令 while ( 1 ) { // 处理数据传输,直到操作完成才退出 SDA_PCFCAT=0; SDA_PCFCAT=1; while ( CH375HM_INT_WIRE ) // 等待模块完成操作产生低电平中断,最佳检测方式是对模块的INT#信号进行下降沿边沿检测 { SDA_PCFCAT=0; SDA_PCFCAT=1; if (1==InquireKey(CANCEL)) //就是这里改动了 { KEYNO=CANCELNO; break; // 等待模块完成操作产生低电平中断,最佳检测方式是对模块的INT#信号进行下降沿边沿检测/ } } do { // 如果不需要扇区方式读写,那么可以查询模块的命令码单元代替查询模块INT#引脚 CH375HM_INDEX_WR( PARA_COMMAND_ADDR ); } while ( CH375HM_DATA_RD( ) ); 现在我的检测U盘那里都没有重启,就是在写入数据时会重新启动?


我感觉不是RAM的问题,因为我今天试了好多次,如果我把新建TXT文件memcpy( mCmdParam.Create.mPathName, str1, MAX_PATH_LEN ); ExecCommand( CMD_FileCreate, MAX_PATH_LEN ); 这两句屏蔽,就不重启了,麻烦你们给指导指导吧


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