我用的Atmega128單片機(jī),只有4k內(nèi)部ram,沒(méi)有外擴(kuò)ram,我想通過(guò)扇區(qū)模式通過(guò)CH375向右盤寫數(shù)據(jù),可是我看資料上說(shuō),使用扇區(qū)模式都要用到外部ram,如果我把這寫外部ram的緩沖區(qū)放到內(nèi)部ram的話,應(yīng)該修改哪些程序?謝謝
你如果想以扇區(qū)寫數(shù)據(jù)的話,那么你定義文件緩沖區(qū)和磁盤緩沖區(qū)的時(shí)候?qū)⒕彌_區(qū)定義為內(nèi)部的RAM就可以了,如果想以文件系統(tǒng)操作U盤的話,那么就去下載CH375LIB.ZIP,里面有AVR單片機(jī)ICC和GCC編譯器的庫(kù)
文件緩沖區(qū)和磁盤緩沖區(qū) 是用什么名字表示的?在那個(gè)文件里定義的?
我們提供的例子程序里面有對(duì)磁盤緩沖區(qū)和文件緩沖區(qū)的定義,你可以參考
我現(xiàn)在文件讀寫的數(shù)據(jù)的復(fù)制方式采用“內(nèi)部復(fù)制”,扇區(qū)模式,用的ATMEGA128單片機(jī),通訊波特率為9600,新建一個(gè)文件傳送320個(gè)字節(jié)的數(shù)據(jù)還需要15秒左右的時(shí)間,這個(gè)速度正常嗎?
你用的是扇區(qū)方式還是字節(jié)方式?
使用CH375FileWrite(),應(yīng)該是扇區(qū)模式呀?
幫我看下代碼吧, 定義訪問(wèn)方式: #define LIB_CFG_FILE_IO 1 /* 文件讀寫的數(shù)據(jù)的復(fù)制方式,0為"外部子程序",1為"內(nèi)部復(fù)制" */ #define LIB_CFG_INT_EN 0 /* CH375的INT#引腳連接方式,0為"查詢方式",1為"中斷方式" */ 代碼段: 先向FILE_DATA_BUF中存了320個(gè)字節(jié)的數(shù)據(jù) mCmdParam.Write.mSectorCount =1; i = CH375FileWriteX( ); /* 向文件寫入數(shù)據(jù) */ mStopIfError( i );
mCmdParam.Modify.mFileAttr = 0xff; /* 輸入?yún)?shù): 新的文件屬性,為0FFH則不修改 */ twi_ReadN(0x0030,dispTime,8,wrx1228_device_add,rdx1228_device_add);//讀取時(shí)間 mCmdParam.Modify.mFileTime =0xFFFF /* 輸入?yún)?shù): 新的文件時(shí)間,為0FFFFH則不修改,使用新建文件產(chǎn)生的默認(rèn)時(shí)間 */ mCmdParam.Modify.mFileDate =MAKE_FILE_DATE(2005,10,9); mCmdParam.Modify.mFileSize = 320; /* 輸入?yún)?shù): 如果原文件較小,那么新的文件長(zhǎng)度與原文件一樣長(zhǎng),否則被RAM所限,如果文件長(zhǎng)度大于64KB,那么NewSize必須為UINT32 */ i = CH375FileModify( ); /* 修改當(dāng)前文件的信息,修改日期和長(zhǎng)度 */ mStopIfError( i ); mCmdParam.Close.mUpdateLen = 0; /* 不要自動(dòng)計(jì)算文件長(zhǎng)度,如果自動(dòng)計(jì)算,那么該長(zhǎng)度總是512的倍數(shù) */ i = CH375FileClose( ); mStopIfError( i );