STM32 对flash使用文件系统写入速度慢

2019-10-14 22:57发布

本帖最后由 905324320 于 2016-10-12 15:27 编辑

我移植了mini板的文件系统到stm32f103c8t6上,flash用的是w25q64,能够实现文件的读写,但是速度很慢,写入文件每秒3~4k字节,下面是我的测试代码:
while(1)
{
    if(WriteAddr < 4096)
    {
       x1 = micros();
       f_write(ftemp,USART_RX_BUF,1024,&bw);
       f_sync(ftemp);
       WriteAddr = WriteAddr + 1024;
       printf(" %d us ",micros() - x1);
    }
}
通过串口得到的写入时间:
   写入时间.png
每写1K字节大约需要300ms,是什么问题导致写入速度这么慢?
@正点原子


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
taizonglai
1楼-- · 2019-10-15 03:19
去看一下spi flash的擦除速度就知道为什么这么慢了!
憨厚诚实大叔
2楼-- · 2019-10-15 05:47
flash都是要擦除的,用flash修改数据速度很慢的
905324320
3楼-- · 2019-10-15 07:16
 精彩回答 2  元偷偷看……
905324320
4楼-- · 2019-10-15 08:28
本帖最后由 905324320 于 2016-10-13 14:19 编辑
憨厚诚实大叔 发表于 2016-10-12 17:59
flash都是要擦除的,用flash修改数据速度很慢的

spi flash 使用文件系统每次写操作都要进行擦除吗?@正点原子 @正点原子
憨厚诚实大叔
5楼-- · 2019-10-15 09:00
905324320 发表于 2016-10-13 14:15
spi flash 使用文件系统每次写操作都要进行擦除吗?@正点原子 @正点原子

flash你用不用文件系统,修改数据都要擦除,百度下flash就知道了
905324320
6楼-- · 2019-10-15 10:27
憨厚诚实大叔 发表于 2016-10-13 15:07
flash你用不用文件系统,修改数据都要擦除,百度下flash就知道了

修改数据要先对flash进行擦除,这个我知道的
我在初始上电时,先对整片flash进行了擦除,数据全部置为0xff,如果不带文件系统,对芯片进行顺序读写,数据吞吐量做到大几百K是没问题的。
带了文件系统,写操作完成后要对文件系统的目录信息进行更新,所以才需要修改flash上的数据,这样就加长了时间,我自己测试flash擦除4K需要60ms,
我想实现的功能是,在带文件系统的前提下实现对数据吞吐量能够达到10K/s,使用spi flash芯片是不是不能达到这个目标,nand flash 或者 sd卡是不是能够实现呢?

一周热门 更多>