我用376在U盘里面建了个TXT文件,里面写上内容。但是每次都只能写入一个字节。代码都是移植的 main( ) { UINT8 s; UINT8 idata buf[64]; P1=0; mDelaymS( 100 ); /* 延时100毫秒 */ xWriteCH376Cmd( CMD_SET_USB_MODE ); /* 初始化CH376,设置USB工作模式 */ xWriteCH376Data(0x06); /* 模式代码,自动检测USB设备连接,代码3用于SD卡 */ while ( 1 ) { while ( mWaitInterrupt( ) != USB_INT_CONNECT ); /* 等待U盘连接,SD卡模式下需要单片机自行检测SD卡插拔 */ mDelaymS( 100); /* 延时等待U盘进入正常工作状态 */ xWriteCH376Cmd( CMD_DISK_MOUNT ); /* 初始化U盘并测试是否就绪,实际是识别U盘的类型和文件系统,在所有读写操作之前必须进行此步骤 */ s = mWaitInterrupt( ); /* 等待中断并获取状态 */ if ( s != USB_INT_SUCCESS ) { /* 有的U盘一次初始化不成功,再试一次 */ mDelaymS( 100 ); /* 出错重试 */ xWriteCH376Cmd( CMD_DISK_MOUNT ); /* 初始化磁盘并测试磁盘是否就绪 */ s = mWaitInterrupt( ); /* 等待中断并获取状态 */ }
CH376FileCreate("T.TXT");
/***********************写内容********************************/ strcpy( buf, "321\n 789\n" ); /* name=dat; l=strlen(dat); mDelaymS( 250 );
xWriteCH376Cmd(CMD2H_BYTE_WRITE);//写入 xWriteCH376Data( (UINT8)l ); xWriteCH376Data( (UINT8)(l>>8) ); while (1) { s = mWaitInterrupt( ); if ( s == USB_INT_DISK_WRITE ) { s = CH376WriteReqBlock( name ); // 向内部指定缓冲区写入请求的数据块,返回长度 xWriteCH376Cmd( CMD0H_BYTE_WR_GO ); name += s; } else { break; } // else if ( s == USB_INT_SUCCESS ) return( s );// 结束
} */ xWriteCH376Cmd( CMD_DISK_MOUNT ); /* 初始化U盘并测试是否就绪,实际是识别U盘的类型和文件系统,在所有读写操作之前必须进行此步骤 */ s = CH376ByteWrite( buf, strlen(buf), NULL ); /* 以字节为单位向当前位置写入数据块 */ mStopIfError( s ); // printf( "Close\n" ); s = CH376FileClose( TRUE ); /* 关闭文件,对于字节读写建议自动更新文件长度 */ mStopIfError( s ); xWriteCH376Cmd(CMD1H_FILE_CLOSE);//关闭 xWriteCH376Data(0x01);
while ( mWaitInterrupt( ) != USB_INT_DISCONNECT ); /* 等待U盘拔出 */ mDelaymS( 250 ); } }