stm32f103 flash模拟eeprom

发布者:MysticalSoul最新更新时间:2024-08-19 来源: elecfans关键字:stm32f103  flash  模拟eeprom 手机看文章 扫描二维码
随时随地手机看文章

STM32F103是意法半导体(STMicroelectronics)推出的一款32位单片机系列,该系列芯片具有高性能和丰富的外设接口,广泛应用于工业控制、消费电子、汽车电子等领域。其中,STM32F103的Flash存储器可以模拟EEPROM的功能,在本文中我们将详细介绍如何使用STM32F103的Flash存储器来实现EEPROM。

  1. 概述
    EEPROM(Electrically Erasable Programmable Read-Only Memory)是一种可擦写的非易失性存储器,可以在不使用外部电压的情况下对其进行擦除和编程。它不同于Flash存储器的主要特点是可以对单个字节进行随机读写操作。而STM32F103的Flash存储器是一种基于NOR Flash技术的存储器,具有较大的存储容量和较快的读写速度。

  2. Flash存储器的基本原理
    STM32F103的Flash存储器可以通过编程和擦除操作来模拟EEPROM的功能。编程操作可以将数据写入Flash存储器的某个地址,而擦除操作则可以将Flash存储器的某个地址的数据擦除为全1。

在进行编程操作时,首先需要将待编程的数据写入Flash存储器的缓冲区,然后通过执行编程操作将缓冲区的数据写入Flash存储器的目标地址。在进行擦除操作时,需要将Flash存储器的目标地址写入擦除操作的寄存器,并执行擦除操作。

  1. Flash存储器的使用方法
    在STM32F103中,可以使用HAL库提供的函数来进行Flash存储器的编程和擦除操作。首先需要初始化Flash模块,包括设置Flash存储器的写保护和解锁,然后才能进行编程和擦除操作。

编程操作可以通过调用HAL库提供的函数进行,例如HAL_FLASH_Unlock()函数用于解锁Flash存储器,HAL_FLASH_Program()函数用于将数据编程到Flash存储器的目标地址。擦除操作也可以通过调用HAL库提供的函数进行,例如HAL_FLASH_Unlock()函数用于解锁Flash存储器,HAL_FLASH_Erase()函数用于擦除Flash存储器的目标地址。

  1. Flash存储器的访问速度
    STM32F103的Flash存储器的读取速度较快,但是编程和擦除操作较慢。因此,在实际应用中需要注意编程和擦除操作的耗时,并合理安排程序的执行顺序。同时,也可以通过合理设计数据结构和算法来减少对Flash存储器的编程和擦除操作。

为了提高Flash存储器的读取速度,可以使用读取缓冲区的方式来进行读取操作。例如,可以将需要读取的数据拷贝到缓冲区中,然后对缓冲区进行操作,确保会在很短的时间内完成对Flash存储器的读取操作。

  1. Flash存储器的寿命
    Flash存储器的寿命是有限的,每次编程和擦除操作都会导致Flash存储器的寿命减少。因此,合理使用Flash存储器可以延长其寿命。

为了减少对Flash存储器的编程和擦除操作,可以通过合理设计数据结构和算法来减少对Flash存储器的访问次数。例如,可以使用缓存来减少对Flash存储器的读取次数,或者定期对Flash存储器进行编程操作以减少编程操作的次数。

  1. 小结
    通过使用STM32F103的Flash存储器来模拟EEPROM的功能,可以实现对单个字节的随机读写操作。在实际应用中,需要了解Flash存储器的基本原理和使用方法,并合理安排编程和擦除操作的顺序。

需要注意的是,合理使用Flash存储器可以延长其寿命。为了减少编程和擦除操作的次数,可以通过合理设计数据结构和算法来减少对Flash存储器的访问次数,并使用缓存来减少对Flash存储器的读取操作。

总之,STM32F103的Flash存储器可以很好地模拟EEPROM的功能,并且具有较大的存储容量和较快的读写速度。在实际应用中,我们需要了解其基本原理和使用方法,并合理设计和优化程序,以实现对Flash存储器的高效读写操作。


关键字:stm32f103  flash  模拟eeprom 引用地址:stm32f103 flash模拟eeprom

上一篇:STM32单片机一般有几种调试方式(stm32与TDC SPI通信调试)
下一篇:stm32f407 double类型

推荐阅读最新更新时间:2026-03-19 11:14

STM32 FLASH模拟 EEPROM
原始文件ST 官方有例子和文档:AN2594 http://www.st.com/mcu/familiesdocs-110.html 看到不少网上使用官方例子程序不成功的问题,我估计大概是没详细阅读官方文档的原因吧,也许很多人没理 解官方例子的原理。那么下面就详细说明一下原理再说如何优化。 原理如下: 首先使用2 页FLASH 空间,如果0 页空间写满数据,那么把0 页空间里面的【有效数据】复制到1 页,如果1 页数据满那么把1 页空间里面的【有效数据】复制到0 页,这样循环使用,当然如果你想增加使用寿命可以增 加多页循环,官方例子只是按2 页实现的例子。每页前面4 字节保留,其中前2 字节是该页状态标志 下面的图显示数据在F
[单片机]
STM32 <font color='red'>FLASH</font><font color='red'>模拟</font> <font color='red'>EEPROM</font>
STM32F103C8的FLASH页名称以及对应地址
STM32F103C8,其FLASH闪存为64KB,为方便利用该闪存存储数据,现将其FLASH页名称以及对应地址罗列如下 名称 地址 大小(字节) 页0 0x0800 0000 - 0x0800 03FF 1K 页1 0x0800 0400 - 0x0800 07FF 1K 页2 0x0800 0800 - 0x0800 0BFF 1K 页3 0x0800 0C00 - 0x0800 0FFF 1K 页4 0x0800 1000 - 0x0800 13FF 1K 页5 0x0800 1400 - 0x0800 17FF 1K 页6 0x0800 1800 - 0x0800 1BFF 1K 页7 0x0800 1C00 - 0x08
[单片机]
STM32F103标准库开发:内部Flash的读写
一、STM32存储器介绍 STM32存储器分为以下两种: 1. 随机存储器—RAM RAM是与CPU直接交换数据的内部存储器,也叫主存(内存)。 它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。 当电源关闭时RAM不能保留数据(掉电数据消失哦)如果需要保存数据,就必须把它们写入一个长期的存储设备中(例如硬盘)。 2. 只读存储器—ROM ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。 ROM所存数据稳定,断电后所存数据也不会改变。 二、STM32F103系列存储器介绍 1. STM32F103系列存储器分类 具体分类
[单片机]
<font color='red'>STM32F103</font>标准库开发:内部<font color='red'>Flash</font>的读写
STM32F103标准库开发---SPI实验---W25Qxx系列外部Flash芯片
一、W25Qxx系列芯片----简介 W25Qxx 系列 Flash 存储器可以为用户提供存储解决方案。擦写周期多达10W次,可将数据保存达20年之久,支持2.7~3.6V的电压,支持标准的SPI,还支持双输出/四输出的SPI,最大SPI时钟可达80Mhz。 W25Qxx 系列 Flash 存储器是为系统提供一个最小空间、最少引脚,最低功耗的串行Flash存储器,比普通的串行Flash存储器更灵活,性能更优越。 功耗低,正常工作状态下电流消耗0.5mA,掉电状态下电流消耗1uA。 1. 存储结构 W25Qxx 系列 Flash 存储器的存储结构 相同点: 1块 = 16扇区 = 64k字节,1扇区 = 16页 = 4k
[单片机]
<font color='red'>STM32F103</font>标准库开发---SPI实验---W25Qxx系列外部<font color='red'>Flash</font>芯片
STM32F103 SPI flash操作注意事项
之前一直使用的W25Q16 spi flash都没问题,换了一款W25Q80后发现工作不正常,经过测试,初步定位到问题在于初始化SPI后是否将CS拉高。于是又去查看了一下原厂代码: 发现原厂的代码初始化SPI接口时是专门拉高CS的。 结论:网上很多代码初始化SPI接口时没有专门拉高CS,对某些型号可能确实是没问题,但兼容性不好,最好是加上。
[单片机]
<font color='red'>STM32F103</font> SPI <font color='red'>flash</font>操作注意事项
stm32F103大容量Flash的启动文件分析理解
启动文件详解: 启动文件的作用: 1.初始化堆栈指针 2.初始化PC指针 3.初始化中断向量表 4.配置系统时钟 5.调用 C 库函数_main 初始化用户堆栈,从而最终调用 main 函数去到 C 的世界 详解: 给栈分配地址 Stack_Size EQU 0x00000400 ;1kb AREA STACK(名字), NOINIT(不初始化), READWRITE(可读可写), ALIGN=3(以3个字节对齐,表示) Stack_Mem SPACE Stack_Size __initial_sp EQU:宏定义的伪指令,代表#define AREA:告诉
[单片机]
STM32F103使用内部Flash保存参数
在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数。这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法。考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST的库函数中还提供了基本的Flash操作函数,实现起来也比较方便。 以大容量产品STM32F103VE为例,其Flash容量达到512K,可以将其中一部分用作数据存储。如下是大容量的Flash组织模式: 根据上面的Fl
[单片机]
<font color='red'>STM32F103</font>使用内部<font color='red'>Flash</font>保存参数
C51—模拟IIC总线实现EEPROM存取数据
- 什么是IIC总线 IIC总线是同步通信的一种特殊形式,具有接线口少、控制简单、器件封装形式小、通信速率高等特点。在主从通信中,可以有多个IIC总线器件同时连接到IIC总线上,所有与IIC兼容的器件都具有标准的接口,通过地址来识别通信对象,使他们可以经由IIC总线互相直接通信。 IIC总线由SDA数据线和SCL时钟线俩条线构成通信线路,既可发送数据也可以接收数据。在CPU和IC之间、IC与IC间都可以双向传播,每个器件都有唯一的地址,这样就可以使信息进行准确的传输。CPU发出的信号分为地址码和数据码俩部分,地址码用来选址,数据码是通信的内容。 总而言之,IIC总线就是器件之间的通信线路,主器件可以通过IIC总线向从器件发
[单片机]
C51—<font color='red'>模拟</font>IIC总线实现<font color='red'>EEPROM</font>存取数据
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved