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 );
}
请问是什么原因?谢谢