由于计算机通常将 U 盘中的物理扇区组织为 FAT 文件系统,为了方便单片机通过 U 盘或者 SD 卡与计
算机之间交换数据,单片机也应该在 FAT 规范下通过文件的形式存取 U 盘中的数据。
一个 U 盘中可以有若干个文件,每个文件都是一组数据的集合,以文件名区分和识别。实际文件
数据的存放可能不是连续的,而是通过一组“指针”链接的多个块(也就是分配单元或者簇),从而
能够根据需要随时增大文件长度以容纳更多数据。目录(文件夹)是为了便于分类管理,管理者可以
人为指定将多个文件归档在一起,例如 2004 年的文件归到一个目录(文件夹)中。
在 FAT 文件系统中,磁盘容量以簇为基本单位进行分配,而簇的大小总是扇区的倍数,所以文件
的占用空间总是簇的倍数,也是扇区的倍数。虽然文件占用的空间是簇或者扇区的倍数,但是在实际
应用中,保存在文件中的有效数据的长度却不一定是扇区的倍数,所以 FAT 文件系统在文件目录信息
FAT_DIR_INFO 中专门记录了当前文件中有效数据的长度,即有效数据的字节数,也就是通常所说的
文件长度,文件长度总是小于或者等于文件占用的空间。
在对文件写入数据后,如果是覆盖了原数据,那么文件长度可能不发生变化,当超过原文件长度后,
变为追加数据,那么文件长度应该发生变化(增大)。如果向文件追加数据后,没有修改文件目
录信息中的文件长度,那么 FAT 文件系统会认为超过文件长度的数据是无效的,正常情况下,计算机无法读出超过文件长度的数据,虽然数据实际存在。
如果数据量少或者数据不连续,那么可以在每次追加数据后立即更新文件目录信息中的文件长
度,但是,如果数据量大并且需要连续写入数据,立即更新文件目录信息会降低效率,并且频繁修改
文件目录信息也会缩短 U 盘中闪存的使用寿命(因为闪存只能进行有限次擦写),所以在这种情况下,
应该在连续写入多组数据后再更新一次文件目录信息中的文件长度,或者一直等到关闭文件时再更新
文件长度,CMD_FILE_CLOSE 命令可以将内存中的文件长度刷新到 U 盘文件的文件目录信息中。
虽然 CH376 最大支持 1GB 的单个文件,但是为了提高效率,建议单个文件的长度不要超过 100MB,
通常在几 KB 到几 MB 范围是比较正常的,数据较多时可以分多个目录,分多个文件存储