CH375的AVR库如何使用长文件名呢?

我在用CH375B向U盘保存数据的时候,发现我的比如叫123456789ABCDE.FGH的文件成了12345678.9AB了。 怎么样使用长文件名呢?

我用的ATMEGA128,CH375B工作在3.3V状态 用的WINAVR编译器


我们的库暂时不支持此功能,但是可以在外面增加,我们有在51下面的关于长文件名的例子程序.发邮件到我们技术支持信箱,我们发给你.tech@wch.cn


那么有没有在根目录下面新建文件夹的功能呢?


可以根目录下新建,也可以在子目录下新建


如何新建呢?可以给个示例不?库里哪个函数呢? 可以枚举根目录下的文件夹吗?


(1)库里没有直接的函数,需另增加部分程序,参考MCS51 FILELIB4库下的EXAM9 (2)可以,只要调用CH375EnumerFile()时的参数为子目录名称即可,注:此时返回值为ERR_OPEN_DIR。


试了一下写U盘的速度,发现并没有你们说的那么快,或者说相当的慢 我用的AVR的库,RAM空间还剩余很多,而我现在速度远远不够 请问有什么方式提高速度的,比如说哪个参数设置大一点就可以,或者别的什么方式 我用的下面这个,不明白为什么你们把MAX_BYTE_IO定成29 DISK_BASE_BUF_LEN设定的2048 while( 1 ) { /* 分多次写入文件数据 */ for ( i=0; i c = *pCodeStr; mCmdParam.ByteWrite.mByteBuffer[i] = c; if ( c == 0 ) break; /* 源字符串结束 */ pCodeStr++; } if ( i == 0 ) break; /* 源字符串结束,完成写文件 */ mCmdParam.ByteWrite.mByteCount = i; /* 写入数据的字符数,单次读写的长度不能超过MAX_BYTE_IO,第二次调用时接着刚才的向后写 */ i = CH375ByteWrite( ); /* 向文件写入数据 */ mStopIfError( i ); }


字节方式本身速度就很慢,提高速度必须以扇区方式,且每次写30K(每个U盘不同,通常是U盘Flash的一个块大小)的大块数据时,速度最快


你是以字节方式写的速度当然慢了,你可以把上面的函数改成扇区方式读写,例子程序可以参考51下的EXAM1


MAX_BYTE_IO不能超过255,DISK_BASE_BUF_LEN不能小于一个扇区的大小,有部分U盘为大扇区的,为保证兼容性所以将DISK_BASE_BUF_LEN设为2048. 按照扇区读写,如果RAM足够大的话,一般设置FILE_DATA_BUF为16个扇区的倍数,速度相对快一点.这是U盘本身的特性决定的.


扇区读写的方式在哪里呢?没有找到,那个51的例子里太乱了,可以贴一段上来吗?麻烦你们了


EXAM0: C示例源程序,USB主从模块切换,可以读写U盘,也可以连接计算机通讯 EXAM1: C示例源程序,查询方式,单DPTR复制 EXAM2: C示例源程序,中断方式,双DPTR复制 EXAM6: C示例源程序,查询方式,单DPTR复制,以字节为单位读写文件,没有文件缓冲区 EXAM7: C示例源程序,查询方式,以字节为单位读写文件,没有文件缓冲区,保存ADC数据到U盘 EXAM8: C示例源程序,查询方式,以扇区为单位读写文件,保存ADC数据到U盘 EXAM9: C示例源程序,查询方式,以扇区为单位读写文件(目录),创建子目录 EXAM10: C示例源程序,查询方式,处理文件目录信息,修改文件名,设置文件创建日期和时间 EXAM11: C示例源程序,查询方式,处理小写字母及长文件名,支持长文件名创建/打开/删除等 EXAM12: C示例源程序,查询方式,演示检查U盘是否写保护以及安全移除U盘等 EXAM13: C示例源程序,查询方式,演示快速枚举搜索整个U盘或者当前目录下的所有文件等 其实每个示例程序开头都有一段注释说明


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