Stm32的Flash模拟EEPROM与BOOT基本了解

本文详细介绍了STM32的Flash模块,包括存储器组织、通用地址空间和FLASH的读取。主存储器根据容量分为不同大小的页,信息块包含启动程序代码和用户选择字节。Flash的读取可以直接在通用地址空间进行。编程步骤涉及解锁、编程和擦除。文章还提及了STM32的BOOT启动选项和地址范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

闪存模块存储器组织

按照不同容量,存储器组织成32个1K字节/页(小容量),128个1K字节/页(中容量),256个2K字节/页(大容量)的主存储器和一些信息块等
下面这张图是大容量产品的Flash内部图:
在这里插入图片描述
主要分为三个部分:主存储器、信息块和闪存存储器接口寄存器;

主存储器:也就是我们常说的储存量的大小,比如:stm32ZET6的flash有512K,说的就是这块的容量;该部分用来存放代码和数据常数(如const类型的数据)。对于大容量产品,其被划分为256页,每页2K字节。注意,小容量和中容量产品则每页只有1K字节。从上图可以看出主存储器的起始地址就是0X08000000;起始地址时说的是stm32通用地址空间的绝对地址,下面会说到通用地址空间。

信息块:该部分分为2个小部分,其中启动程序代码(系统存储器),是用来存储ST自带的启动程序,用于串口下载代码,当B0接V3.3,B1接GND的时候,运行的就是这部分代码。用户选择字节,则一般用于配置写保护、读保护等功能。

闪存存储器接口寄存器:该部分用于控制闪存读写等,是整个闪 存模块的控制机构。

三个部分中,主存储器和信息块是可以由stm32的外部引脚BOOT[1-0]来选择启动的,
下面是控制BOOT[1-0]改变启动空间:
在这里插入图片描述
信息块(系统存储器):B0接V3.3,B1接GND的时候
主存储器:B0、B1都接GND

通用地址空间

Cortex-M3的地址空间有4G,但它只对这4G空间作了预先的定义,把4G空间分成8个块,每块大小为512M,并指出各段该分给哪些设备。具体的实现由芯片厂商决定,厂商可以设计出具有自己特色的产品。下图是Cortex-M3的存储器映射图
在这里插入图片描述
可以看出前边讲的flash主存储器的起始地址就是0X08000000,对应的就是上面的地址空间,CPU访问外部器件以及数据都是通过地址线来访问的,所以每个器件都会占用一段通用地址空间的一段连续的地址。

FLASH闪存的读取

由上面的通用地址空间可以看出内置闪存模块可以在通用地址空间直接寻址,任何32位数据的读操作都能访问闪存模块的内容并得到相应的数据。
例如,我们要从地址addr,读取一个半字(半字为16为,字为32位),可以通过如下的语句读取:
data=(vu16)addr;

下面是stm32 Flash 模拟EEPROM的手册资料链接:
https://download.cs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值