(求助) ch376 读写U盘 初始化主机返回值总是未知设备

s = mInitCH376Host( ); 

while ( 1 ) {

while ( CH376DiskConnect( ) != USB_INT_SUCCESS ) {  /* 检查U盘是否连接,等待U盘插入,对于SD卡,可以由单片机直接查询SD卡座的插拔状态引脚 */

mDelaymS( 100 );

LCD_ShowString(4,3,"没有优盘");

}

mDelaymS( 200 ); 

/* 延时,可选操作,有的USB存储器需要几十毫秒的延时 */


/* 对于检测到USB设备的,最多等待100*50mS,主要针对有些MP3太慢,对于检测到USB设备并且连接DISK_MOUNTED的,最多等待5*50mS,主要针对DiskReady不过的 */

for ( i = 0; i < 100; i ++ ) {  /* 最长等待时间,100*50mS */

mDelaymS( 50 );

s = CH376DiskMount( );  /* 初始化磁盘并测试磁盘是否就绪 */

if ( s == USB_INT_SUCCESS ){

LCD_ShowString(4,3,"准备就绪");

mDelaymS( 200 ); 

//s = ListAll( ); 

break;

}/* 准备好 */

else if ( s == ERR_DISK_DISCON ){

LCD_ShowString(4,3,"设备断开");

break;}  /* 检测到断开,重新检测并计时 */

if ( CH376GetDiskStatus( ) >= DEF_DISK_MOUNTED && i >= 5 ) break;  /* 有的U盘总是返回未准备好,不过可以忽略,只要其建立连接MOUNTED且尝试5*50mS */

}

if ( s == ERR_DISK_DISCON ) {  /* 检测到断开,重新检测并计时 */

//printf( "Device gone\n" );

LCD_ShowString(4,3,"设备拔出");

continue;

}

if ( CH376GetDiskStatus( ) < DEF_DISK_MOUNTED ) {  /* 未知USB设备,例如USB键盘、打印机等 */

goto UnknownUsbDevice;

}

//i = CH376ReadBlock( buf );  /* 如果需要,可以读取数据块CH376_CMD_DATA.DiskMountInq,返回长度 */

//if ( i == sizeof( INQUIRY_DATA ) ) {  /* U盘的厂商和产品信息 */

//buf[ i ] = 0;

//LCD_ShowString(0,,((P_INQUIRY_DATA)buf) -> VendorIdStr );

//}

mDelaymS( 20 );


UnknownUsbDevice:

LCD_ShowString(4,3,"未知设备");

while ( CH376DiskConnect( ) == USB_INT_SUCCESS ) {  /* 检查U盘是否连接,等待U盘拔出 */

mDelaymS( 100 );

}

mDelaymS( 200 );

}


CH376DiskMount不通过,查看/bbs/thread-65126-1.html第三点


只有登录才能回复,可以选择微信账号登录