紅桃六大哥,這是您讓我上傳的附件程序,麻煩您幫我看一下,不勝感激!?。?a href="/uploads/file/20161001/UploadImages/200942214462871.rar">UploadImages/200942214462871.rar
確保DISKREADY( )函數(shù)已經(jīng)通過?創(chuàng)建文件返回的錯誤代碼是多少?CH375DiskReady( ) 怎么被屏蔽掉了?沒有這個函數(shù)是絕對不可以的,文件系統(tǒng),U盤初始化等很多操作都是在這個函數(shù)里實現(xiàn)的,絕對不可以屏蔽而且一定要確保通過,否則以后操作都是無效的.另外擔(dān)心RAM分配有問題,下面的宏定義可以去掉: /* 單片機的RAM分配是: 0200H-03FFH為磁盤讀寫緩沖區(qū), 以字節(jié)為單位讀寫文件不需要文件數(shù)據(jù)讀寫緩沖區(qū)FILE_DATA_BUF */ #define DISK_BASE_BUF_ADDR 0x0200 /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū)的起始地址,從該單元開始的緩沖區(qū)長度為SECTOR_SIZE */ #define FILE_DATA_BUF_ADDR 0xF000 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū)的起始地址,緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度,字節(jié)模式不用該緩沖區(qū) */ /* 單片機的RAM有限,其中CH375子程序用512字節(jié),即使是具有2K容量RAM的單片機,減去堆棧和變量的占用,緩沖區(qū)最多為1K字節(jié) */ #define FILE_DATA_BUF_LEN 0x0200 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度,字節(jié)模式不用該緩沖區(qū) */
特別是 #define FILE_DATA_BUF_ADDR 0xF000
READY不通過,有時Error:24,有時Error:2c
下面是不要DISKREADY()時,串口上顯示的信息: Start! Wait Udisk... DiskSize TotalSize = 4050 MB Open List file /* match file 000#: /液晶調(diào)試 match file 001#: /字模精靈 match file 002#: /EW4304~1.11B match file 003#: /南京沁恒 match file 004#: /硬件設(shè)~1 match file 005#: /LCD驅(qū)~1 match file 006#: /3110C~1 match file 007#: /NESCUB~1.JAR match file 008#: /自己標(biāo)~1 match file 009#: /新建WP~1.WPS match file 010#: /MSP430 match file 011#: /WEB match file 012#: /基于MS~1.MHT match file 013#: /可靠性~1.DOC match file 014#: /WSN_RO~1 match file 015#: /CH375~1.MHT match file 016#: /C8051F~1 match file 017#: /CCD畢~1 match file 018#: /TURBOC2 match file 019#: /ZIGBEE~1 match file 020#: /SOGOU_~1.EXE match file 021#: /CH375 match file 022#: /PRIVATE match file 023#: /HY-128~1.PDF match file 024#: /諾基亞~1.MHT match file 025#: /硬件設(shè)~1.RAR match file 026#: /新建文~1 Create 這難道不能說明可以讀數(shù)據(jù)嗎?
無語了!USB基本枚舉都沒做竟然能讀數(shù)據(jù).不過你測試其他U盤看看是否可以,兼容性可能很差.這樣吧,強烈建議按照我們所提供的流程來做.這樣才能保證兼性. 返回的錯誤代碼如果是0X2C,0X24表示超時. 可能是U盤剛插如U盤還不穩(wěn)定導(dǎo)致的.可以在檢測到U盤連接后把mDelaymS( 200 );時間加長. 另一個可能可能是波特率慢導(dǎo)致的,你把波特率提高實驗一下.
USB基本枚舉都沒做? 什么意思啊?其他U盤都可以讀出像上面的根目錄下的文件及文件夾名,就是不能創(chuàng)建文件以及讀指定文件的信息都是C!!!
1:你按照上面的方法試一下. 2:我說的基本枚舉是USB通訊里面的一個過程: /*for ( i = 0; i < 5; i ++ ) { //有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 mDelaymS( 100 ); printf( "Ready ?\n" ); vPutStr(8,128+32+index,"Ready? "); index+=16; if(index>48) index=0; if ( CH375DiskReady( ) == ERR_SUCCESS ) //查詢磁盤是否準(zhǔn)備好 { vPutStr(8,128+32+index,"U disk has been Ready! "); index+=16; if(index>48) index=0; break; } }*/ 目前在你運行的工程里面仍然被屏蔽掉了?這個屏蔽掉是不可以的. 3:你的編譯器版本和你用的庫是否一致?庫是在:IAR 3.20A版本的
屏蔽后,READY就通不過。 IAR XLIB: 4.61E IAR XLINK: 4.61E IAR Assemlber V4.11B IAR Compiler V4.11B 用的庫是FILELIBF_V41文件夾里的, **************************************** ** USB Host File Interface for CH375 ** ** TC2.0@PC, IAR_EW50_C/C++_4.11@MSP430 ** **************************************** 這是里面的版本支持,和我的編譯器版本是一樣的!!
還是像以前說的,單步運行時READY可以通過,但運行到OPEN就不行了,程序卡在讀數(shù)據(jù)那個函數(shù)里。 全速運行連READY都通不過!
試試修改一下你的三個接收發(fā)送數(shù)據(jù)和指令的函數(shù)!可能是因為它們的延時問題導(dǎo)致的,我以前也遇到過!要嚴(yán)格按照例程的延時!
我用的串口方式?。?/p>
如果是這樣的話,那么,你需要檢查下面幾個地方: 1,串口波特率上面是否存在誤差,我們的CH375波特率是9600.單片機的波特率誤差不要太大 2,在DISK-READY不能通過的情況下,使用示波器去看下USB口上面是否有信號輸出. 3,在單步運行的情況下DISK-READY通過之后,你看下查詢磁盤容量這個函數(shù)返回的數(shù)據(jù)是否正常. 4,在單步運行的情況下FILE-OPEN()這個函數(shù)運行出現(xiàn)問題的話,返回的錯誤代碼是多少,還有就是在出現(xiàn)錯誤之后,DISK-BASE-BUF里面的數(shù)據(jù)是什么樣的?
串口方式怎么了,我用的也是串口!
串口發(fā)送接收函數(shù)還需要時序???還望不吝賜教!
我們前面已經(jīng)提供了很多方法.您要去配合實驗,并把實驗現(xiàn)象告訴我們.這樣才能盡快的解決問題.
串口只要設(shè)置好寄存器就行了啊,還是紅桃六大哥說的對,你還是先按他說的進行測試吧!