請(qǐng)問調(diào)用 CH375 文件級(jí)庫函數(shù)的時(shí)候,是否只需要將頭文件 CH375HF?.H 和 CH375HF?.LIB 文件添加入工程項(xiàng)目文件列表和文件夾中,并在程序中聲明 #include "CH375HF?.H" 即可?(我嘗試過同時(shí)聲明 #include "CH375HF?.LIB",但編譯時(shí)報(bào)錯(cuò),我使用的是 Code Warrior IDE 編譯器 ) 在編譯之后,只有有具體程序命令的子函數(shù)程序,如 xWriteCH375Cmd( ),TEST_CH375_PORT( ),等被識(shí)別(函數(shù)名的顏色發(fā)生改變),而文件級(jí)子程序函數(shù),如 CH375FileOpen( ),CH375FileCreate( ),CH375DiskConnect( ),等未被識(shí)別(函數(shù)名的顏色無變化),但編譯并不提示錯(cuò)誤。 請(qǐng)問在此情況下,文件級(jí)子程序庫函數(shù)是否能夠正常運(yùn)行?如果不能,請(qǐng)問應(yīng)該如何正確調(diào)用文件級(jí)庫函數(shù)? 我在調(diào)用 CH375FileOpen( ) 庫函數(shù)時(shí),有的 U 盤運(yùn)行時(shí),會(huì)停在頭文件 CH375HFQ.H 中的 xQueryInterrupt( )的 while(CH375_INT_WIRE) 命令行不再運(yùn)行,有的 U 盤則完成 CH375FileOpen( ) 函數(shù)后,返回錯(cuò)誤代碼 0x1F,(兩種情況下,狀態(tài)參數(shù)CH375DiskStatus 都等于 0x10)。請(qǐng)問這有可能是什么原因造成的?
具體的庫的鏈接你可以參考:http://www.findthetime.net/bbs/View.asp?S=101&I=1511,只要按照我們上面的說明的話,庫就可以正常的運(yùn)行,如果FILE-OPEN()出現(xiàn)問題的話,那么你前面的DISK-READY()函數(shù)返回什么樣的狀態(tài),以及你可以檢測(cè)到U盤的鏈接嗎?
Disk_Ready ( ) 返回值為 0x00,U 盤初始化程序 mInitDisk( ) 的返回值也是 0x00,可以檢測(cè)到 U 盤.
我使用的幾種 U 盤具體信息如下: WinHex 14.1 SR-6 2007-08-21, 10:19:56
驅(qū)動(dòng)器G: 文件系統(tǒng): FAT16 名稱: MINIKING 總計(jì)容量: 57,544,704 字節(jié) = 54.9 MB 總計(jì)扇區(qū)數(shù): 112,392 可用扇區(qū): 111,920 第一數(shù)據(jù)扇區(qū): 472 字節(jié)/扇區(qū): 512 字節(jié)/簇: 1,024 剩余簇: 55,960 = 100% 空閑 總計(jì)簇: 55,960 FAT1 = FAT2
驅(qū)動(dòng)器G: 文件系統(tǒng): FAT16 名稱: KingSton 總計(jì)容量: 526,385,664 字節(jié) = 502 MB 總計(jì)扇區(qū)數(shù): 1,028,097 可用扇區(qū): 1,027,552 第一數(shù)據(jù)扇區(qū): 536 字節(jié)/扇區(qū): 512 字節(jié)/簇: 8,192 剩余簇: 64,222 = 100% 空閑 總計(jì)簇: 64,222 FAT1 = FAT2
驅(qū)動(dòng)器G: 文件系統(tǒng): FAT16 名稱: 超速王 總計(jì)容量: 131,842,048 字節(jié) = 126 MB 總計(jì)扇區(qū)數(shù): 257,504 可用扇區(qū): 256,968 第一數(shù)據(jù)扇區(qū): 536 字節(jié)/扇區(qū): 512 字節(jié)/簇: 2,048 剩余簇: 19,544 = 30% 空閑 總計(jì)簇: 64,242 FAT1 = FAT2
驅(qū)動(dòng)器G: 文件系統(tǒng): FAT16 名稱: 金星 MP3 總計(jì)容量: 124,631,552 字節(jié) = 119 MB 總計(jì)扇區(qū)數(shù): 243,421 可用扇區(qū): 242,908 第一數(shù)據(jù)扇區(qū): 512 字節(jié)/扇區(qū): 512 字節(jié)/簇: 2,048 剩余簇: 60,726 = 100% 空閑 總計(jì)簇: 60,727 FAT1 = FAT2
請(qǐng)問 CH375A 是否支持這幾種類型的 U 盤?如果能夠支持,為什么我在調(diào)用 CH375FileOpen( ) 庫函數(shù)時(shí),"超速王" U 盤運(yùn)行時(shí),會(huì)停在頭文件 CH375HFQ.H 中的 xQueryInterrupt( )的 while(CH375_INT_WIRE) 命令行不再運(yùn)行,其他 U 盤則完成 CH375FileOpen( ) 函數(shù)后,返回錯(cuò)誤代碼 0x1F ?
請(qǐng)問有沒有人知道上述類型的 U 盤是否能夠被 CH375 所支持啊? 如果能夠支持的話,導(dǎo)致 CH375FileOpen( ) 庫函數(shù)返回錯(cuò)誤代碼 0x1F 的原因可能是什么??? 謝謝!非常感謝!
從U盤參數(shù)上看,375都能夠支持 在CH375FileOpne()之前的CH375LibInit()和CH375DiskRead()通過沒? 若沒,那么錯(cuò)誤代碼是多少?
CH375LibInit() 通過了,CH375DiskReady( )也通過了,返回值均為 0x00 .
這兩步能正常通過,打開文件CH375FileOpen( )返回錯(cuò)誤代碼 0x1F的話,可能與定義的磁盤緩沖區(qū)有關(guān),你檢查一下512字節(jié)的磁盤緩沖區(qū)定義是否正常,還有可能與速度有關(guān),三個(gè)讀寫子函數(shù)速度太慢的話,也可能會(huì)出現(xiàn)這種情況。
我定義的磁盤緩沖區(qū)如下: #define DISK_BASE_BUF_ADDR 0x0900 #define FILE_DATA_BUF_ADDR 0x0B00 #define FILE_DATA_BUF_LEN 0x0400 運(yùn)行完 CH375FileOpen( ) 之后,DISK_BASE_BUF[512] 中,[0]=0x00,[1]=0x00,[2]=0x05,....[507]=0xac,[508]=0xcb,[509]=0xd8,[510]=0x55,[511]=0xaa,應(yīng)該讀取的是 #0 扇區(qū)中的數(shù)據(jù).FILE_DATA_BUF[1024]中也顯示有數(shù)據(jù)被讀入( 但不知道數(shù)據(jù)的來源和具體意義 ). 我用的是 MOTO 的 MC9S12DJ64 單片機(jī),采用 16 M 晶振 ,1uS 延時(shí)定義如下: void mDelay1uS( ) // 至少延時(shí)1uS,根據(jù)單片機(jī)主頻調(diào)整 { asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP"); asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP");asm("NOP"); } xWriteCH375Cmd( ) 中起始和結(jié)束處各延時(shí)2uS,xWriteCH375Data( ) 結(jié)束處延時(shí)2uS,xReadCH375Data( )起始處延時(shí)2uS. 請(qǐng)問以上做法是否合適? 謝謝!
難以置信! 我把 void mDelay1uS( ) 修改為: void mDelay1uS( ) // 至少延時(shí)1uS,根據(jù)單片機(jī)主頻調(diào)整 { asm("NOP"); } 已經(jīng)延時(shí)如此之短的時(shí)間了,可是調(diào)用 CH375FileOpen( ) 還是返回錯(cuò)誤代碼 0x1F,或者停在頭文件 CH375HFQ.H 中的 xQueryInterrupt( )的 while(CH375_INT_WIRE) 命令行! 三個(gè)讀寫子函數(shù)速度可能已經(jīng)不能再快了,定義的磁盤緩沖區(qū)也可以讀取數(shù)據(jù),請(qǐng)問問題還有可能出在哪里啊?