CH375DiskReady( )如果能通過的話一般來說應(yīng)該沒什么問題,你務(wù)必確保這個(gè)函數(shù)能夠正常的返回了.另外你用其他U盤測(cè)試一下看能不能正常操作. 另外在硬件上你檢查一下,UD+,UD-的電壓多少.U盤供電盡量接近5V. 你可以把的程序貼出來看看.
void CH375_PORT_INIT1( void ) /* 由于使用通用I/O模塊并口讀寫時(shí)序,所以進(jìn)行初始化 */ { u8 i = 0; flag_udisk = 0; CH375Init_Ctl_IO(); CH375DeviceInit(); //設(shè)備方式 flag_udisk = 0; //主方式 i = CH375LibInit(); // 初始化CH375程序庫和CH375芯片,操作成功返回0 // mStopIfError(i); }
void DoDealU(void) { U16 i; CH375_PORT_INIT1();//主方式(查詢方式) // DISK_BASE_BUF[0] = 1; // DISK_BASE_BUF[1] = 2; // mCmdParam.Create.mPathName[0] = DISK_BASE_BUF[0] + 1; // mCmdParam.Create.mPathName[1] = DISK_BASE_BUF[0] + 2; //mCmdParam.Create.mPathName[0] = CH375vSectorSize; for(i=0;i!=512;i++) { DISK_BASE_BUF[i++] = 0x55; DISK_BASE_BUF[i] = 0xaa; } for(i=0;i!=512;i++) { if(DISK_BASE_BUF[i++] != 0x55) break; if(DISK_BASE_BUF[i] != 0xaa) break; } i = CH375vSectorSize; while ( CH375DiskStatus < DISK_CONNECT ) { /* 查詢CH375中斷并更新中斷狀態(tài),等待U盤插入 */ if ( CH375DiskConnect( ) == ERR_SUCCESS ) break; /* 有設(shè)備連接則返回成功,CH375DiskConnect同時(shí)會(huì)更新全局變量CH375DiskStatus */ delay1( 1000 ); } /*while(CH375DiskConnect( ) != ERR_SUCCESS) { delay1( 1000 ); }*/ // 檢查U盤是否準(zhǔn)備好,有些U盤不需要這一步,但是某些U盤必須要執(zhí)行這一步才能工作// for ( i = 0; i < 10; i ++ ) { // 有的U盤總是返回未準(zhǔn)備好,不過可以被忽略 // delay1( 100 ); //printf( "Ready ?\n" ); if ( CH375DiskReady( ) == ERR_SUCCESS ) { break; // 查詢磁盤是否準(zhǔn)備好 // } }
i = CH375GetVer(); delay1( 1000 );
strcpy( (char *)mCmdParam.Open.mPathName, "/AT451B16x.h" ); /* 文件名,該文件在C51子目錄下 */ i = CH375FileOpen( ); /* 打開文件 */
i = CH375DiskSize(); delay1( 1000 );
//i = CH375DiskQuery(); //delay1( 1000 );
while(CH375DiskConnect( ) != ERR_SUCCESS) { delay1( 1000 ); }
i = CH375DiskSize(); mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, "/AT451B16x.h" ); i = CH375FileOpen( ); /* 打開文件 */ mCmdParam.ByteRead.mByteCount = 29; /* 請(qǐng)求讀出幾十字節(jié)數(shù)據(jù) */ i = CH375ByteRead( ); mStopIfError( i ); } 幫忙看下有什么問題
我已經(jīng)換了3個(gè)U盤了 都是金士頓的 都不行 CH375DiskReady( )能正常返回的 ,CH375DiskConnect( )開始也正常的,但一但對(duì)U盤里的文件進(jìn)行操作后,在執(zhí)行CH375DiskConnect( )返回就不成功了.
我的電壓采用的是3V供電的
U盤的供電電壓一定是5V.文件名必須是8+3格式,并且全部大寫.
我發(fā)現(xiàn)CH375DiskStatus的值一直為0x03
我沒打開文件之前使用CH375DiskQuery()這個(gè)函數(shù)返回就已經(jīng)是0X1F了
文件這些寫"/AT451B16X.H" 對(duì)不對(duì)啊
我的U盤供電是5V
文件名我改成8+3的格式了 但還是不行