flash操作基本逻辑

flash 读写擦

flash 读:顺序读很快。跳序读会损耗点时间,也很快,但不会影响功耗。无次数限制

flash 写:
原理:将1bit 变为0bit。
特点:
每次最小写入一个page (256字节)。
有限次数(10万-100万次,跟FLASH手册有关),
消耗时间大于flash读,有功耗。
有限次数指:写入某一区域的次数。比如:10万次写入0x40000-0x40100地址后,写入失效,从此0x40000-0x40100区域不可擦写,其余区域正常
建议:如果写入十分频繁(例如1s一次),并且数据非常小(几十个字节以内),可以先存到SRAM,等SRAM存到接近256字节,再写入flash。4K数据作为一个Sector,满了可以继续写下一个Sector,数据按顺序写入形成一个闭环,通过前两位表示当前Sector_id
目的:减少写入的次数,减少写入同一区域的次数。

flash 擦:
原理:将0bit变为1bit
特点:
每次擦除区域最小为4k
有限次数(10万-100万次,跟FLASH手册有关),
消耗时间大于flash 写,有功耗(10ms)。
flash 擦除瞬间会影响到程序
flash擦除4k ,和擦除128k 时间代价差不多
建议:
flash 存满再进行擦除。存满是尽可能写满flash,因为擦除代价几乎一样。
等程序空闲的时候在进行擦除动作。尽量规避对程序的影响。

flash读的代价 《 flash写《 flash擦
flash 管理系统:
原则:
频繁的使用读操作,去减少flash擦写的频率,page满了才进行写,sector满了才进行擦。空闲的时间才进行擦。
操作日志思路:
uint16 sector_id
uint16 data_len
uint16 data

把所有擦写的操作都像日记一样记录到flash中,擦操作就是把data_len 改为0,因为写数据可以把1bit 变为0。就是伪擦除。真是等到日记将填满整个flash,并且程序空闲的时候,才真正进行一次擦操作。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DSPI(Digital Signal Processing Interface)是一种通信协议,用于在微控制器和外部设备之间进行数据交换。它可以被用来操作Flash存储器,以读取和写入数据。 DSPI操作Flash的例程一般涉及以下几个步骤: 1. 配置DSPI控制器 首先需要初始化DSPI控制器,设置通信参数,如时钟速率、数据传输格式(比特率、数据位宽等)以及传输模式(主模式或从模式)。 2. 选择芯片选择信号(CS) 操作Flash时,需要通过芯片选择信号(CS)来选择需要操作Flash芯片。在读写Flash之前,需要拉低选中的CS引脚,使其处于逻辑低电平。 3. 发送操作指令 DSPI通过发送特定的操作指令来读写Flash存储器。比如,读取数据需要发送读指令,写入数据需要发送写指令。具体的指令可以参考Flash芯片的规格手册。 4. 传输数据 在Flash读写过程中,需要通过DSPI协议将数据传输到Flash存储器中(写操作)或从Flash存储器中读取数据(读操作)。数据的传输可以通过SPI的数据线进行。 5. 等待操作完成 在执行读写操作之后,需要等待Flash芯片完成相应的操作。这个时间需要参考Flash芯片的规格手册,以确保操作完成后正确读取或写入数据。 6. 关闭CS引脚 在读写操作完成后,需要将选中的CS引脚拉高,释放对Flash芯片的控制。 以上就是一个基本的DSPI操作Flash的例程。具体的实现可能会根据所使用的DSPI控制器和Flash芯片的型号有所不同,因此在实际应用中需要参考相关的文档和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值