[技术问题解答] 单片机往SD卡读写文件的容量问题

[复制链接]
2017|4
 楼主| hello_zkp 发表于 2015-12-16 16:46 | 显示全部楼层 |阅读模式
最近在单片机里移植了开源的FATFS文件系统,只是简单地了解了一下文件的结构,本人打算在SD卡里写入一个文件来存储数据,调用ff.c文件里的f_open和f_write函数来实现,每次在SD卡里生成的文件均为32K,如果存储数据量比较大,超过32k,该如何设置生成文件的容量(比如需要1M)?
大苏牙 发表于 2015-12-16 19:47 | 显示全部楼层
fatfs支持fat12,fat16和fat32吧,文件大小和文件系统有关系吧
 楼主| hello_zkp 发表于 2015-12-16 21:42 | 显示全部楼层
大苏牙 发表于 2015-12-16 19:47
fatfs支持fat12,fat16和fat32吧,文件大小和文件系统有关系吧

那用fopen创建的文件的容量不能更改么?只能由fat16或fat32决定吗?
FSL_FAE_ConstYu 发表于 2015-12-17 10:18 | 显示全部楼层
FATFS不会指定文件的大小,具体写入文件的大小取决于你的写入长度。f_write会自动调用disk_write的memory写的函数,ff.c会自动会根据写入长度来决定写入的sector的个数,这个才是真正的长度,不需要设置。简单来说,你写入的长度是1M,那aux——string是1M的话,不用设置,他会自动写那么长的数据。你可以看看FATFS的源码,看看其执行过程。
        /* Write the constructed string to the new line in text file */
        fr = f_write(&fil, aux_string, strlen(aux_string), &bytes_written);

    case SD:
        //return sdcard_disk_write(pdrv, buff, sector, count);
            memory_write_blocks (DSPI_MASTER_INSTANCE, sector, count, buff);
            return 0;
 楼主| hello_zkp 发表于 2015-12-17 15:21 | 显示全部楼层
FSL_FAE_ConstYu 发表于 2015-12-17 10:18
FATFS不会指定文件的大小,具体写入文件的大小取决于你的写入长度。f_write会自动调用disk_write的memory写 ...

按照你的思路试了一下,确实是这样的,非常感谢!:handshake
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

29

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部