CH375讀寫U盤求助,希望大家?guī)兔Α?

各位高手,我在調(diào)試CH375A時遇到了一些問題,希望得到解答,謝謝。 我的CPU用的是STC89C58RD+,控制 CH375A做HOST讀寫U盤。程序用的是沁恒給的例程:CH375EV0.c,U盤先是用的是普通SONY的128MU盤,發(fā)現(xiàn)插上U盤后,U盤供電電壓只有3v左右。U+和U-均為0V。無法使375產(chǎn)生中斷。后來換了一個普通128MU盤MP3。連接后U盤供電電壓上升到4.8V,但U+和U-依然為0V。這時375已經(jīng)可以產(chǎn)生中斷,并且可以順利初始化CH375,并通過了CMD_CHECK_EXIST命令的測試。 另外插上U盤后各個引腳的電壓如下: INT#=4.9V; RSTI=0V; TXD=0; NC=4.9V; A0=4.9V; V3=3.42V; UD+=0V; UD-=0V; XI=4.67V;XO=4.67V; ACT#=4.95V; RST=4.95V; RST#=0V; CS#=0V; VCC=4.95V; 另外發(fā)現(xiàn)插上U盤時NC腳為4.9V,而不插U盤時為0v。

程序方面,在運行到語句~c = mInitDisk( ); 時發(fā)現(xiàn)c=0x16;即USB_INT_DISCONNECT 檢測到USB設(shè)備斷開事件。 也就是剛剛檢測到U盤連接后,延時200ms后再檢測就會出現(xiàn)U盤已斷開. 函數(shù)mInitDisk()是用來初始化磁盤的。原型如下: unsigned char mInitDisk( ) { unsigned char mIntStatus; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ mIntStatus = CH375_RD_DAT_PORT( ); if ( mIntStatus == USB_INT_DISCONNECT ) return( mIntStatus ); /* USB設(shè)備斷開 */

CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲器 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ return( mIntStatus ); /* 出現(xiàn)錯誤 */

CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus != USB_INT_SUCCESS ) { /* 出錯重試 */ mDelay100mS( ); CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ } if ( mIntStatus != USB_INT_SUCCESS ) { return( mIntStatus ); } /* 出現(xiàn)錯誤 */ /* 可以由CMD_RD_USB_DATA命令將容量數(shù)據(jù)讀出 */ return( 0 ); /* U盤已經(jīng)成功初始化 */ }

下面是部分主函數(shù) main( ) { unsigned char c, mIntStatus; LED_OUT_ACT( ); /* 開機后LED亮一下以示工作 */ mDelay100mS( ); /* 延時100毫秒 */ LED_OUT_INACT( );

mInitSTDIO( ); printf( "Start\n" ); c = mCH375Init( ); /* 初始化CH375 */ if ( c ) printf( "Error @CH375Init\n" ); printf( "Insert USB disk\n" );

do /* 等待U盤連接 */ { mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ } while ( mIntStatus != USB_INT_CONNECT ); /* U盤沒有連接或者已經(jīng)拔出 */ mDelay100mS( ); /* 延時等待U盤進(jìn)入正常工作狀態(tài) */ mDelay100mS( ); printf( "InitDisk\n" );

c = mInitDisk( ); /* 初始化U盤,實際是識別U盤的類型,不影響U盤中的數(shù)據(jù),在所有讀寫操作之前必須進(jìn)行此步驟 */ if ( c ) printf( "Error @InitDisk, %X\n", c ); 后面省略 }

XI=4.67V;XO=4.67V說明你的晶振有點問題???你的測試命令過了沒有?。?/p>


問題已經(jīng)解決~~~ 發(fā)現(xiàn)是USB接口供電的問題,把USB的VCC單獨供電問題就解決了~~


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频