我以字节为单位写入一个字母,结果不对,麻烦看下 int main (void) { UINT8 s; UINT8 buf0[64] = "/电法仪"; UINT8 buf1[64] = "/电法仪/数据"; UINT8 buf2[64] = "/电法仪/数据/数据.TXT"; INT8U data[1]={100}; s=UsbInit( ); if(s != USB_INT_SUCCESS) return(0); s = CH376DirCreate( buf0 ); //新建或者打开目录,该目录建在根目录下 //新建或者打开目录,该目录建在根目录下 if ( s == ERR_FOUND_NAME )return(0); //printf( "Found a file with same name\n" ); CH376FileClose( FALSE ); //关闭目录 s = CH376DirCreatePath( buf1 ); // 新建或者打开目录,该目录建在多级目录下,输入路径必须在RAM中 if ( s == ERR_FOUND_NAME )return(0) ; // printf( "Found a file with same name\n" ); s = CH376FileCreatePath( buf2 ); // 新建或者打开目录,该目录建在多级目录下,输入路径必须在RAM中 if ( s == ERR_FOUND_NAME ) return(0); // printf( "Found a file with same name\n" ); CH376FileClose( FALSE ); s =CH376ByteWrite(data, sizeof(data), NULL ); /* 查询磁盘剩余空间信息,扇区数 */ if ( s == ERR_FOUND_NAME )return(0) ; CH376FileClose( FALSE ); } 另外改为扇区单位写数据把CH376ByteWrite改为CH376SecWrite可以吗?
补充下用U盘写数据本来文件里会有个d 但是文件里是I
目录和文件爱你都可以创建吗?还有调用写函数也成功了吗?
CH376FileClose( FALSE ); FALSE选为TRUE,更新文件长度 可以换成扇区写函数,有些注意事项,参考EXAM8
目录可以创建,但是在子目录下创建文件好像有问题。我就直接在跟母录下建文件,写数据时还是没有用。 nt main (void) { UINT8 s; UINT8 buf1[64] = "/数据.TXT"; unsigned char data[1]={100}; s=UsbInit( ); if(s != USB_INT_SUCCESS) return(0); s = CH376FileCreate( buf1 ); // if ( s == ERR_FOUND_NAME ) return(0); // printf( "Found a file with same name\n" ); CH376FileClose( TRUE ); s =CH376ByteWrite(data, 3, NULL ); if ( s == ERR_FOUND_NAME )return(0) CH376FileClose( TRUE); } 还是没用,在根目录下创建文件可以 但是文件有一个字节 占8KB 我知道创建文件是有一个字节,但是要占8KB吗?
占8K说明你的U盘一个簇的大小是8K。U盘在文件管理的时候使用簇的方式管理。即使只有一个字节也占用一个簇。CH376默认创建好文件之后文件大小为一个字节的。
s =CH376ByteWrite(data, 3, NULL ); date里面的数据是什么?返回值S是什么
unsigned char data[1]={100}; data的数据应该是d S返回值好像是0xcd(我在宿舍这个记得不是很清楚,实验室没网,不好意思),正确的话返回值应该是多少?
正确的返回值是0X14,返回值不对的话就代表没有写成功
额,我回到初始化那段,发现插上U盘模块LED会亮,但是写入一个数据,读出来的不是按位取反数,还是0XCD,我之前从初始化返回值是对的,才接着往下弄的,请问最有可能错在哪里?
你发的是测试命令吗?还有你可以测下插入U盘之后USB口的电压变成多少了?还有设置模式之后看下CH376芯片的中断引脚是否拉低。
s =CH376ByteWrite(data, 3, NULL ); data大小只有一个字节,你怎么写3个呢?还有在写文件需要打开文件