我是用的STC89C58RD+ 單片機(jī)+ch375a制作而成的U盤讀寫工具,但現(xiàn)在的問題是出現(xiàn)挑U盤的問題,請(qǐng)問這個(gè)問題如何解決?謝謝
挑盤主要是U盤初始化過程沒有做好 可以用我們的MCS51文件系統(tǒng)子程序庫,下載CH375LIB.ZIP
我就是用你們的程序庫做的呀,我用的是CH375HFC.h 和CH375HFC.LIB做的 我的U盤初始化部分是這樣的: main( ) { UINT8 i; CH375_PORT_INIT( ); /* 由于使用通用I/O模塊并口讀寫時(shí)序,所以進(jìn)行初始化 */ CH375_led=1; mDelaymS( 1000 ); /* 延時(shí)1秒 */ CH375_led=0; mDelaymS( 1000 ); /* 延時(shí)1秒 */ CH375_led=1; mInitSTDIO( ); /* 為了讓計(jì)算機(jī)通過串口監(jiān)控演示過程 */ i = CH375LibInit( ); /* 初始化CH375程序庫和CH375芯片,操作成功返回0 */ mStopIfError( i ); /* 其它電路初始化 */ while ( 1 ) { //printf("wait"); while( CH375DiskStatus != DISK_CONNECT ) xQueryInterrupt( ); /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ mDelaymS( 200 ); /* 延時(shí),可選操作,有的USB存儲(chǔ)器需要幾十毫秒的延時(shí) */ /* 檢查U盤是否準(zhǔn)備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作 */ for ( i = 0; i < 5; i ++ ) { /* 有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 */ mDelaymS( 100 ); if( CH375DiskReady( ) == ERR_SUCCESS ) break; /* 查詢磁盤是否準(zhǔn)備好 */ } CommPc(); //進(jìn)入數(shù)據(jù)處理部分 while( CH375DiskStatus != DISK_DISCONNECT ) xQueryInterrupt( ); } } =============== 我沒搞清楚 哪里需要改?以及如何改? 您能幫我看下嗎 ?謝謝
你所說的挑U盤主要指在讀寫U盤的時(shí)候出現(xiàn)錯(cuò)誤還是根本就找不到U盤?
根本找不到U盤,我發(fā)現(xiàn)用小的U盤能找到,并且讀寫U盤都沒問題 ,用大點(diǎn)的比如1G,2G的 就 不行了,識(shí)別不到U盤,請(qǐng)問這是什么問題呢?謝謝
你的U口電壓要保證為5V電壓,測(cè)試一下你的D+ D- 電壓是多少? 正常的情況下D+為3.3v D-為0v左右
D+和D-之間電壓是3.3V ,U口也是5V,沒錯(cuò) ,我剛試了一下,用我的金士頓2G優(yōu)盤與375的板子通訊正常,讀寫都行,用愛國(guó)者迷你王1G的 ,U盤就根本不能被識(shí)別了 ,請(qǐng)問 這也是初始化的問題嗎?
你所說的根本不被識(shí)別是什么意思?是沒有檢測(cè)到U盤還是初始化沒有通過?最好有一個(gè)詳細(xì)的庫的返回代碼給我們,我們也好判斷是哪邊的問題
這還沒有涉及到初始話,不是D+,D-之間的電壓,是對(duì)地電壓.你用查詢方式還是中斷方式?不識(shí)別的U盤的D+.D_也是對(duì)地3.3V嗎?還有U口的VCC要并接100UF的電容,如果不接的話可能會(huì)導(dǎo)致電壓下降,導(dǎo)致375的復(fù)位,檢測(cè)不到U盤.