我的系統(tǒng)采集模擬量,在插入u盤后,mega128把4M字節(jié)的flash中的數(shù)據(jù),存儲到u盤的*.txt文件中,我用的是你們提供的庫和頭文件進行u盤寫(僅寫),下面是我理解的一些東西和一些不理解的東西,請大家?guī)臀铱纯矗x謝。有問號的地方都是不太明白的^_^,請高手幫忙解釋一下,謝謝 初始化的一些東西: #define DISK_BASE_BUF_ADDR 0x0200 //在u盤寫過程中,先把某個扇區(qū)的全部讀出,然后把要修改的東西摻和進去,然后再寫??問題1 #define DISK_BASE_BUF_LEN 2048 //好象這個數(shù)越大支持的u盤越多,一般u盤是512字節(jié) #define FILE_DATA_BUF_ADDR 0x0A00 //數(shù)據(jù)先寫到這里??然后通過寫子程序?qū)懙絬盤??問題2 #define FILE_DATA_BUF_LEN 512 //一次讀寫的最大數(shù)據(jù)量 #define LIB_CFG_FILE_IO 1 /* 文件讀寫的數(shù)據(jù)的復(fù)制方式,0為"外部子程序",1為"內(nèi)部復(fù)制" */區(qū)別是什么????問題3 #define LIB_CFG_INT_EN 0 /* CH375的INT#引腳連接方式,0為"查詢方式",1為"中斷方式" */這個完全理解^_^ 程序: CH375_PORT_INIT( );//我采用io模擬的讀寫時序,按照電路初始化自己的電路為輸出或輸入,這個完全理解^_^ CH375LibInit( ); /* 初始化CH375程序庫和CH375芯片,操作成功返回0 */理解 while ( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */理解 mDelaymS( 200 ); /* 延時,可選操作,有的USB存儲器需要幾十毫秒的延時 */理解 if ( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準備好 有的u盤需要,有的不要*/理解 if ( DISK_BASE_BUF_LEN < CH375vSectorSize ) /* 檢查磁盤數(shù)據(jù)緩沖區(qū)是否足夠大,CH375vSectorSize是U盤的實際扇區(qū)大小 */理解 strcpy( (char *)mCmdParam.Create.mPathName, "\\newfile.txt"); /* 新文件名,在根目錄下 */理解 CH375FileCreate( ); /* 新建文件并打開,如果文件已經(jīng)存在則先刪除后再新建 */理解
下面的程序基本上都讀不懂了,我就按照我自己的想的說了,說錯了大家別笑話?。?! 部分程序省略 SecCount = (NewSize+CH375vSectorSize-1)/CH375vSectorSize;/*計算文件的扇區(qū)數(shù),因為FILE_DATA_BUF_LEN是512字節(jié),所以 如果CH375vSectorSize也是512字節(jié)的話,每次SecCount都是得1的,對么???*/問題4 mCmdParam.Write.mSectorCount = SecCount; /* 告訴ch375一共要進行幾個扇區(qū)的讀寫 */
CH375FileWrite( ); /* 向文件寫入數(shù)據(jù) */
mCmdParam.Modify.mFileAttr = 0xff; /* 新的文件屬性,為0FFH則不修改 */ mCmdParam.Modify.mFileTime = 0xffff; /* 新的文件時間,為0FFFFH則不修改,使用新建文件產(chǎn)生的默認時間 */ mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2004, 5, 18 ); /* 輸入?yún)?shù): 新的文件日期: 2004.05.18 */ mCmdParam.Modify.mFileSize = NewSize; /* 文件的大小 */ ch375_i_temp = CH375FileModify( ); /* 修改當前文件的信息,修改日期和長度 */ 修改這個工作是要自己做的?。???文件屬性可以不修改,時間也可以不修改,但是日期必須自己輸入么?文件的大小就是文件一共有多少個字節(jié)吧?問題5 mCmdParam.Close.mUpdateLen = 0; /* 不要自動計算文件長度,如果自動計算,那么該長度總是CH375vSectorSize的倍數(shù) */ 是CH375vSectorSize的倍數(shù)無所謂,不自動計算我該怎么算呢?還是讓它得1好了,讓他自動計算,上面不是已經(jīng)輸入文件NewSize了么?怎么這里還要計算文件長度?????問題6 CH375FileClose( );//終于要完事了,^_^ while ( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤拔出 */