用51軟件模擬SPI控制CH374,扇區(qū)讀寫, #if DISK_BASE_BUF_LEN == 0 pDISK_BASE_BUF = &buffer[0]; /* 不在.H文件中定義CH374的專用緩沖區(qū),而是用緩沖區(qū)指針指向其它應(yīng)用程序的緩沖區(qū)便于合用以節(jié)約RAM */ #endif 因為RAM較少,buffer[512]共用, MAIN函數(shù)里先用W25_Read(0x8000+512,buffer,256);從FLASH里讀256字節(jié)到buffer。然后調(diào)用CH374庫文件檢測U盤,新建文件 printf( "Create\n" ); strcpy( mCmdParam.Create.mPathName, "\\NEWFILE.TXT" ); /* 新文件名,在根目錄下 */ i = CH374FileCreate( ); /* 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 */ mStopIfError( i ); printf( "Write\n" ); mCmdParam.WriteX.mSectorCount = 1; /* 寫入所有扇區(qū)的數(shù)據(jù) */ for(count=0;count<256;count++) {printf( "%02x", (UINT16)buffer[count] );} mCmdParam.WriteX.mDataBuffer = &buffer[0]; /* 指向文件數(shù)據(jù)緩沖區(qū)的起始地址 */ i = CH374FileWriteX( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i ); mCmdParam.WriteX.mDataBuffer = &buffer[0]; 指向buffer,但是我這里打印出來的數(shù)據(jù)和先前從FLASH里讀的數(shù)據(jù)不一樣,調(diào)用CH374FileWriteX( ); 返回正確,生成的文件是U盤其它文件的內(nèi)容。請問是怎么回事? 從現(xiàn)象看buffer[]的內(nèi)容被改變了,應(yīng)該如何處理呢?[Emot]8[/Emot]
查看: 1587
回復(fù): 2
CH374用SPI方式新建文件問題
熱門產(chǎn)品 :
CH32X035: 32位USB+USB PD單片機
你是DISk_BASE_BUF也用的buffer緩沖區(qū)嗎? 這樣的話就是共用緩沖區(qū)模式。你重新建立一個小的緩沖區(qū),你先用字節(jié)方式將這個緩沖區(qū)的數(shù)據(jù)寫到文件,寫完后關(guān)閉,看數(shù)據(jù)是否正確。
DISK_BASE_BUF_LEN = 0;沒有 定義DISK_BASE_BUF
請勿發(fā)布廣告和違法內(nèi)容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯(lián)系方式,以便更好更快服務(wù)您
只有登錄才能回復(fù),可以選擇微信賬號登錄