对于使用单片机内部Flash完成循环Flash存储历史记录的操作

单片机内部Flash

一、概念及分类

Flash 是一种非易失性存储器技术,即在断电时仍然能保存数据。
它常用于存储固件、数据和配置文件。
Flash 存储器的主要特点是可以在无需电源的情况下保持存储内容并且能够进行块级或扇区级别的擦除和写入。
Flash存储器广泛应用于各类设备,如微控制器、USB存储器、固态硬盘(SSD)、存储卡等。
	Flash存储器的两种类型:
	NOR Flash:具有随机访问能力,读取速度快,适合存储代码(如固件)。
	NAND Flash:存储密度高,读取速度较慢,但写入速度更快,通常用于存储大数据量,如多媒体文件。

1、内部Flash

集成在单片机芯片内部:微控制器的内存控制器直接管理内部Flash的访问,速度较快且延迟较低。
应用场景:通常用于存储固件代码(即程序)和少量数据。内存容量相对较小,但足够用于大多数嵌入式应用场景。
优点:
访问速度快,因为与CPU在同一芯片上,减少了外部数据总线带来的延迟。
不需要外部引脚和电路设计,降低了硬件复杂性和成本。
缺点:
容量有限,一般为几十KB到几MB,无法满足需要大量存储的应用需求。

2、外部Flash

独立的存储芯片:通过外部总线(如SPI、I2C或并行总线)连接到单片机,通常可以实现更大的	存储容量(从几MB到数GB甚至更多)。
应用场景:适合存储大数据,如数据日志、图像、音频文件等。外部Flash适合需要大量数据存储	的应用,如数据记录仪、物联网设备。
优点:
存储容量大,可以扩展到数GB以上。
可以自由选择不同类型和厂商的Flash芯片,灵活性更高。
缺点:
访问速度较慢,受限于通信接口的带宽(如SPI、I2C等),有时需要专门的驱动程序来优化读写性能。
需要占用外部引脚并增加硬件设计的复杂性。

二、实现逻辑

结构图
1、写操作:
固定1000条记录写入量,结构体设置需要记录当前写入地址(可以记录写入数量)。
写地址增加,当到达第六页最后一条的位置时擦除第一页。开始写新的记录。(当前写地址始终指向最后一条历史记录的位置)。第一页写满后擦除第二页开始写新的记录以此类推,大大延长了内部Flash的寿命。

2、读操作:
读指针的起始地址始终和最新的一条历史记录的的写地址相同,读取顺序恰好和写入顺序相反,每次保证读取的数目总数永远不超过1000条。(读取前更新读地址)

3、写入指针的保存
对于写入指针的保存有两种方式
1、掉电前存储到Flash的某个位置
2、每次记录完一条新的历史记录后就更新到BKP等类似的寄存器中

注意:难点在于和显示搭配时上翻页读取显示和下翻页读取显示时切换读取地址时需要注意跨页时的情况。(欢迎补充交流)

作者:时小王吖

物联沃分享整理
物联沃-IOTWORD物联网 » 对于使用单片机内部Flash完成循环Flash存储历史记录的操作

发表回复