CH376使用STC单片机串口控制无法向U盘写文件

CH376使用STC单片机串口控制,按照例程修改,程序可以正常跑完,但无法在U盘中创建文件,ACT输出低电平。

s = mInitCH376Host();                                 /* 初始化CH376 */

mStopIfError(s);

while (1) 

{

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

{  

mDelaymS(100);

}

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

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

{  

mDelaymS(50);

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

mDelaymS(5);

if ( s == USB_INT_SUCCESS )                    /* 准备好 */

break;                                          

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

break;  

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

   break;           

}

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

{  

continue;

}

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

{  

goto UnknownUsbDevice;

}

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

mDelaymS(5);

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

   {  

buf[i] = 0;

}


/******************************* 创建新文件 ***********************************/   

strcpy( TarName, "\\FILE1.TXT" );

s = CH376FileCreatePath( TarName );    /* 新建多级目录下的文件,支持多级目录路径,输入缓冲区必须在RAM中 */

mStopIfError( s );

strcpy( buf, "123456789\xd\n" );

s = CH376ByteWrite( buf, strlen(buf), NULL );         /* 以字节为单位向当前位置写入数据块 */

mStopIfError( s );

s = CH376FileClose( TRUE );                           /* 关闭文件,对于字节读写建议自动更新文件长度 */

mStopIfError( s );

//P54 = 1;

mDelaymS( 500 );


UnknownUsbDevice:/* 未知设备 */

    

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

{  

mDelaymS( 100 );

}

mDelaymS( 200 );

}

请问是什么原因?谢谢

所有的状态都返回的是成功的嘛?

还有问下芯片是从哪边购买的?建议你将U盘在XP系统下面格式化下在测试下?


                           

所有的状态都返回的是成功的嘛?

还有问下芯片是从哪边购买的?建议你将U盘在XP系统下面格式化下在测试下?

                       

将U盘在XP系统下格式化后试了试,可以了,谢谢您的帮助!

芯片不是我买的,我只是负责调试的,所以不清楚。


建议芯片从我司购买。


                           

建议芯片从我司购买。

                       

请问为什么需要XP下格式化才行呢?

从贵公司购买的话是不是所使用的U盘就不需要在XP下格式化了,在其他系统下格式化也行?


谢谢!


是的


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