請教各位高手,我用C8051F020通過CH375讀U盤上的文件,程序可以檢測到U盤插入,但CH375DiskReady查詢U盤是否準備好時總是返回0x23(查.h中定義的含義是:代碼2XH-3XH用于USB主機方式的通訊失敗代碼,由CH375返回),下面用CH375DiskQuery查詢U盤容量是總是返回0x82,即磁“盤尚未連接,可能磁盤已經(jīng)斷開”。但此時U盤上的燈還在閃爍。 是不是磁盤讀寫緩沖區(qū)定義引起的?我的定義是: /* 只使用單片機內(nèi)置的1KB外部RAM: 0000H-01FFH 為磁盤讀寫緩沖區(qū), 以字節(jié)為單位讀寫文件不需要文件數(shù)據(jù)讀寫緩沖區(qū)FILE_DATA_BUF */ #define DISK_BASE_BUF_ADDR 0x0000 /* 外部RAM的磁盤數(shù)據(jù)緩沖區(qū)的起始地址,從該單元開始的緩沖區(qū)長度為SECTOR_SIZE */ #define FILE_DATA_BUF_ADDR 0x0200 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū)的起始地址,緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度,字節(jié)模式不用該緩沖區(qū) */ #define FILE_DATA_BUF_LEN 1024 /* 外部RAM的文件數(shù)據(jù)緩沖區(qū),緩沖區(qū)長度不小于一次讀寫的數(shù)據(jù)長度,字節(jié)模式不用該 緩沖區(qū) */
這個問題困擾了我兩天了,請高手指教這是什么原因造成的。感謝! 程序代碼如下: EA = 0; CH375_PORT_INIT();
xWriteCH375Cmd(0x06); xWriteCH375Data(0x57); temp=xReadCH375Data(); if(temp==0xA8) Dispchsstring("存在",4,0);//說明CH375芯片存在 i = CH375LibInit( ); // 初始化CH375程序庫和CH375芯片,操作成功返回0 mStopIfError( i ); while ( CH375DiskStatus != DISK_CONNECT ) { i = xQueryInterrupt( ); // 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 } Delay(100); //檢查U盤是否準備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 for ( i = 0; i < 5; i ++ ) // 有的U盤總是返回未準備好,不過可以被忽略 { Delay( 100 ); c=CH375DiskReady( ); if ( c == ERR_SUCCESS ) { Delay( 100 ); break;; // 查詢磁盤是否準備好 } } for ( c = 0; c < 10; c ++ ) { //查詢磁盤容量等信息 i=CH375DiskQuery(); }
EA = 1;[Emot]27[/Emot]