[求助]CH376讀寫SD卡,打開文件老是返回0x44

我用的硬件串口讀寫SD卡,波特率9600,mInitCH376Host( )正常,CH376DiskConnect( )沒有使用屏蔽掉了,CH376DiskMount( )正常,CH376ReadBlock( buf )讀取的數(shù)據(jù)不正確,全是0,數(shù)據(jù)長度也不對,CH376FileOpenPath( SrcName )打開文件老是返回0x44,如果單步執(zhí)行,有時候可以成功,有時會失敗,但是全速就不行,全是回復0x44,單步執(zhí)行如果成功了,但是到下一步的CopyAndConvertFile( SrcName, TarName )又會出現(xiàn)問題,最好的一次就是創(chuàng)建了"\\NEWFILE.TXT",但是"\\C51\\CH376HFT.C"中的數(shù)據(jù)沒變化。請教這到底改怎么調試啊?


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634

首先確保你CH376DiskMount( )正確通過,返回值應該是0x14.然后你執(zhí)行一下s = CH376FileOpenPath("\\NEWFILE.TXT") 看一下返回值是多少?有沒有創(chuàng)建成功?


我用的exam1,改成的sd卡,CH376DiskMount( )正確通過,返回值是0x14,接著是CH376ReadBlock( buf ),讀取到的數(shù)據(jù)長度是0x14,可是我的文件里就寫了7個字符--abcdefg,然后在執(zhí)行CH376FileOpenPath( SrcName ),就不對了,如果我單步調試有時候會正確,但是大部分是錯誤的,唯一的一次正確就是創(chuàng)建了"\\NEWFILE.TXT"


CH376ReadBlock( buf )是用來讀取INQUIRY命令的返回數(shù)據(jù),可以不操作。你可以先調用CH376FileCreatePath創(chuàng)建一個文件看看返回值是多少?


我剛才試了一下,用CH376FileCreatePath創(chuàng)建一個文件,返回值有時候是0x44,有時候是0x14,用CH376FileCreate創(chuàng)建一個文件,無論返回值是0x44還是0xFA還是0x14,都能創(chuàng)建成功,包括.C和.TXT文件,這是怎么回事啊?


CH376FileCreate和CH376FileCreatePath用法類似只是后者支持多級目錄下創(chuàng)建。返回0x44和0xFA都是不正確的而且沒有0x44這種錯誤碼。


那現(xiàn)在怎么無論返回值是0x44還是0xFA還是0x14,都能創(chuàng)建成功啊,我試了好幾次的,確實有文件,名字都不同


那說明你讀取的中斷狀態(tài)不正確,感覺你的硬件不是很穩(wěn)定。你可以測試命令的時候,發(fā)個0x55看一下返回值,然后再發(fā)個0xAA看一下返回值。


發(fā)送0x65,返回0x9A,發(fā)送0x9A,返回0x65,都重復了3次,沒有錯誤,出現(xiàn)錯誤的地方還是CH376FileOpenPath這個函數(shù),很難返回成功,偶爾會出現(xiàn),CH376FileOpenPath下面調用一個CH376SetFileName函數(shù),這個函數(shù)如果我進去執(zhí)行(就是單步調試進去)基本就會成功,如果全速運行,大部分是不成功的,我感覺是不是程序那里有問題,但是我又不清楚,查詢中斷我是用的INT#腳接的單片機的一個管腳檢測外部中斷來判斷的。


你是使用什么單片機?單步執(zhí)行和全速執(zhí)行的區(qū)別在于執(zhí)行的時間,你可以在讀寫子函數(shù)加一些延時,另外,檢測一下執(zhí)行創(chuàng)建命令有沒有中斷產(chǎn)生(INT低電平)?


單片機用的STM32的,72M時鐘


我調用CH376FileCreatePath( "\\C51\\CH376HFT.C")總是返回0x10,請問是什么回事呢?CH376FileCreatePath( "\\NEWFILE.TXT")就沒問題,能夠創(chuàng)建成功。


創(chuàng)建指定目錄下的文件需要存在那個目錄,否則會返回錯誤。如果創(chuàng)建成功會返回0x14


那我想創(chuàng)建"\\C51\\CH376HFT.C"需要怎么操作?直接調用CH376FileCreatePath( "\\C51\\CH376HFT.C")不行么?我看CH376FileCreatePath( )里面有判斷多目錄的語句啊?還是我需要先CH376FileCreatePath( "\\C51")然后再CH376FileCreatePath( "\\C51\\CH376HFT.C")?謝謝指點!


你可以這樣試一下,在電腦上創(chuàng)建一個C51文件夾,然后、再調用CH376FileCreatePath( "\\C51\\CH376HFT.C") 如果你想通過CH376創(chuàng)建,先調用CH376DirCreate創(chuàng)建一個C51文件夾,然后再調用CH376FileCreatePath( "\\C51\\CH376HFT.C")。


非常感謝,按照這兩種方法都能創(chuàng)建成功,但是第二種方法:先調用CH376DirCreate創(chuàng)建一個C51文件夾,然后再調用CH376FileCreatePath( "\\C51\\CH376HFT.C")不行,如果先調用CH376DirCreate創(chuàng)建一個C51文件夾,然后再調用CH376FileCreatePath( "CH376HFT.C")才可以。 但是接下來我寫數(shù)據(jù)時又出現(xiàn)問題了,如果我調用CH376ByteWrite( adsd, 10, NULL ),寫進去的數(shù)據(jù)不正確,比如我adsd中的數(shù)據(jù)是0123456789,但是文件里面就有一個句號:.,如果我調用CH376ByteWrite( adsd, 1, NULL ),然后在調用CH376ByteWrite( adsd, 10, NULL )寫進去的數(shù)據(jù)正確,但是我看例程中都是只調用一次CH376ByteWrite就行了啊,我這是什么情況啊?我也不敢就這么用了,請指教啊。


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频