用文件系統(tǒng)庫初始化的問題[求助]

我用的430單片機,調(diào)用430的庫CH375HFF.R43,初始化函數(shù)CH375LibInit返回值為0X81,不為0,這是怎么回事?用單獨的命令測試、讀U盤的容量都沒問題。[Emot]1[/Emot]

請做測試命令檢查硬件和時序是否正確. 你看以下編譯器的版本是不是一致的,在CH375HFF.H頭文件中.頭文件的位置和我們例子程序要一樣.不要放在前面. 檢查磁盤緩沖區(qū)是否有效.如果以上問題排除的話, 主要是以上問題導致.


CH375LibInit返回值為0X81,原因一般是硬件連接錯誤和讀寫時序不準確。庫初始化沒通過,那么單獨作測試命令,讀容量也不應該通過。 測試命令一般要做2次: (1)第一次發(fā)送數(shù)據(jù)0x55,返回數(shù)據(jù)應為0xAA (2)第一次發(fā)送數(shù)據(jù)0xAA,返回數(shù)據(jù)應為0x55


測試、讀容量都沒有問題。只是我在測試命令和讀數(shù)之間需要延時幾毫秒,如果延時時間短就得不到正確的結(jié)果,不知道什么原因?


那么應該是時序上的問題,命令與數(shù)據(jù)之間需要1.5uS的延時,數(shù)據(jù)與數(shù)據(jù)之間需要0.6uS的延時,三個讀寫子程序中需要加上這些延時試試。


都有延時程序,且都滿足要求。


只是在發(fā)送命令和讀數(shù)之間需要延時幾毫秒。命令與數(shù)據(jù)之間需要1.5uS的延時,數(shù)據(jù)與數(shù)據(jù)之間需要0.6uS的延時都有保證。


(1)程序編譯時有沒有異常的警告 (2)把完整的程序貼出來看看


延時幾個MS時間太長了,這樣會影響后面的讀寫速度.你仔細檢查一下你的讀寫子程序,I/O的方向設置有沒有問題.初始化過不了就而且返回0X81代表硬件有問題.


文件系統(tǒng)庫對愛國者U盤能不能識別?


void xWriteCH375Cmd( unsigned char cmd ) { /* 向CH375的命令端口寫入命令,周期不小于4uS,如果單片機較快則延時 */ usdelay(20); UTCTL1|=TXWAKE; // 發(fā)送地址位,375第9位為1時寫命令 TXBUF1=cmd; while((UTCTL1&0X01)==0); usdelay(20); } void xWriteCH375Data( unsigned char c ) { /* 向CH375的數(shù)據(jù)端口寫入數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ UTCTL1&=~TXWAKE; //第9位為0時寫數(shù)據(jù) TXBUF1 = c; while((UTCTL1&0X01)==0); usdelay(20); /* 因為MCS51單片機較慢所以實際上無需延時 */ }

unsigned char xReadCH375Data() { /* 從CH375的數(shù)據(jù)端口讀出數(shù)據(jù),周期不小于1.5uS,如果單片機較快則延時 */ usdelay(20); /* 因為MCS51單片機較慢所以實際上無需延時 */ return( RXBUF1 ); }

/* 等待CH375中斷并獲取狀態(tài) */ unsigned char mWaitInterrupt() { /* 主機端等待操作完成, 返回操作狀態(tài) */ while(P2IN&0X01); /* 查詢等待CH375操作完成中斷(INT#低電平) */ xWriteCH375Cmd( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ delay(10); //如果不延時幾毫秒得不到正確狀態(tài) return( xReadCH375Data( ) );

} unsigned char mInitDisk( ) { unsigned char mIntStatus, i; xWriteCH375Cmd( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ mIntStatus = xReadCH375Data( ); if ( mIntStatus == USB_INT_DISCONNECT ) return( mIntStatus ); /* USB設備斷開 */ xWriteCH375Cmd( CMD_DISK_INIT ); /* 初始化USB存儲器 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus != USB_INT_SUCCESS ) return( mIntStatus ); /* 出現(xiàn)錯誤 */ xWriteCH375Cmd( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( mIntStatus != USB_INT_SUCCESS ) { /* 出錯重試 */ delay( 500 ); xWriteCH375Cmd( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ mIntStatus = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ } if ( mIntStatus != USB_INT_SUCCESS ) return( mIntStatus ); /* 出現(xiàn)錯誤 */

/* 可以由CMD_RD_USB_DATA命令將容量數(shù)據(jù)讀出,分析每扇區(qū)字節(jié)數(shù) */ xWriteCH375Cmd( CMD_RD_USB_DATA );usdelay(10); /* 從CH375緩沖區(qū)讀取數(shù)據(jù)塊 */ xWriteCH375Cmd( CMD_RD_USB_DATA ); i = xReadCH375Data( ); /* 后續(xù)數(shù)據(jù)的長度 */ if ( i != 8 ) return( USB_INT_DISK_ERR ); /* 異常 */ for ( i = 0; i != 8; i ++ ) { /* 根據(jù)長度讀取數(shù)據(jù) */ usdelay(150);//如果不延時得到的數(shù)據(jù)是錯誤的,為什么? DATA_BUFFER[ i ] = xReadCH375Data( ); /* 讀出數(shù)據(jù)并保存 */ } }


測試過一些該品牌的U盤,可以識別。 不知道你遇到哪款不支持


智慧棒2.0 128M


測試過一款愛國者智慧棒(UC-P100E 128M),文件系統(tǒng)完全支持 不知哪個步驟出錯,出什么錯?


調(diào)用430的庫CH375HFF.R43,初始化函數(shù)CH375LibInit返回值為0X81,不為0,這是怎么回事?幫我看一下前面的程序有什么問題沒有?


單片機在用串口操作CH375的時候,單片機的串口最好不要在做其他的事務,比如數(shù)據(jù)的檢測之類的.


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

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