CH374用SPI方式新建文件问题

用51软件模拟SPI控制CH374,扇区读写, #if DISK_BASE_BUF_LEN == 0 pDISK_BASE_BUF = &buffer[0]; /* 不在.H文件中定义CH374的专用缓冲区,而是用缓冲区指针指向其它应用程序的缓冲区便于合用以节约RAM */ #endif 因为RAM较少,buffer[512]共用, MAIN函数里先用W25_Read(0x8000+512,buffer,256);从FLASH里读256字节到buffer。然后调用CH374库文件检测U盘,新建文件 printf( "Create\n" ); strcpy( mCmdParam.Create.mPathName, "\\NEWFILE.TXT" ); /* 新文件名,在根目录下 */ i = CH374FileCreate( ); /* 新建文件并打开,如果文件已经存在则先删除后再新建 */ mStopIfError( i ); printf( "Write\n" ); mCmdParam.WriteX.mSectorCount = 1; /* 写入所有扇区的数据 */ for(count=0;count<256;count++) {printf( "%02x", (UINT16)buffer[count] );} mCmdParam.WriteX.mDataBuffer = &buffer[0]; /* 指向文件数据缓冲区的起始地址 */ i = CH374FileWriteX( ); /* 向文件写入数据 */ mStopIfError( i ); mCmdParam.WriteX.mDataBuffer = &buffer[0]; 指向buffer,但是我这里打印出来的数据和先前从FLASH里读的数据不一样,调用CH374FileWriteX( ); 返回正确,生成的文件是U盘其它文件的内容。请问是怎么回事? 从现象看buffer[]的内容被改变了,应该如何处理呢?[Emot]8[/Emot]

你是DISk_BASE_BUF也用的buffer缓冲区吗? 这样的话就是共用缓冲区模式。你重新建立一个小的缓冲区,你先用字节方式将这个缓冲区的数据写到文件,写完后关闭,看数据是否正确。


DISK_BASE_BUF_LEN = 0;没有 定义DISK_BASE_BUF


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