第50章 读写内部FLASH—零死角玩转STM32-F429系列

 

第50章     读写内部FLASH

全套200集视频教程和1000PDF教程请到秉火论坛下载:www.firebbs.cn

野火视频教程优酷观看网址:http://i.youku.com/firege

 

 

 

本章参考资料:《STM32F4xx 中文参考手册》、《STM32F4xx规格书》、库说明文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。

50.1 STM32的内部FLASH简介

STM32芯片内部有一个FLASH存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部FLASH中,由于FLASH存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部FLASH中加载代码并运行,见图 501

501 STM32的内部框架图

除了使用外部的工具(如下载器)读写内部FLASH外,STM32芯片在运行的时候,也能对自身的内部FLASH进行读写,因此,若内部FLASH存储了应用程序后还有剩余的空间,我们可以把它像外部SPI-FLASH那样利用起来,存储一些程序运行时产生的需要掉电保存的数据。

由于访问内部FLASH的速度要比外部的SPI-FLASH快得多,所以在紧急状态下常常会使用内部FLASH存储关键记录;为了防止应用程序被抄袭,有的应用会禁止读写内部FLASH中的内容,或者在第一次运行时计算加密信息并记录到某些区域,然后删除自身的部分加密代码,这些应用都涉及到内部FLASH的操作。

1.    内部FLASH的构成

STM32的内部FLASH包含主存储器、系统存储器、OTP区域以及选项字节区域,它们的地址分布及大小见表 501

501 STM32内部FLASH的构成

区域

名称

块地址

大小

主存储器

1

扇区0

0x0800 0000 - 0x0800 3FFF

16 Kbytes

扇区1

0x0800 4000 - 0x0800 7FFF

16 Kbytes

扇区2

0x0800 8000 - 0x0800 BFFF

16 Kbytes

扇区3

0x0800 C000 - 0x0800 FFFF

16 Kbyte

扇区4

0x0801 0000 - 0x0801 FFFF

64 Kbytes

扇区5

0x0802 0000 - 0x0803 FFFF

128 Kbytes

扇区6

0x0804 0000 - 0x0805 FFFF

128 Kbytes

扇区7

0x0806 0000 - 0x0807 FFFF

128 Kbytes

扇区8

0x0808 0000 - 0x0809 FFFF

128 Kbytes

扇区9

0x080A 0000 - 0x080B FFFF

128 Kbytes

扇区10

0x080C 0000 - 0x080D FFFF

128 Kbytes

扇区11

0x080E 0000 - 0x080F FFFF

128 Kbytes

2

扇区12

0x0810 0000 - 0x0810 3FFF

16 Kbytes

扇区13

0x0810 4000 - 0x0810 7FFF

16 Kbytes

扇区14

0x0810 8000 - 0x0810 BFFF

16 Kbytes

扇区15

0x0810 C000 - 0x0810 FFFF

16 Kbyte

扇区16

0x0811 0000 - 0x0811 FFFF

64 Kbytes

扇区17

0x0812 0000 - 0x0813 FFFF

128 Kbytes

扇区18

0x0814 0000 - 0x0815 FFFF

128 Kbytes

扇区19

0x0816 0000 - 0x0817 FFFF

128 Kbytes

扇区20

0x0818 0000 - 0x0819 FFFF

128 Kbytes

扇区21

0x081A 0000 - 0x081B FFFF

128 Kbytes

扇区22

0x081C 0000 - 0x081D FFFF

128 Kbytes

扇区23

0x081E 0000 - 0x081F FFFF

128 Kbytes

系统存储区

0x1FFF 0000 - 0x1FFF 77FF

30 Kbytes

OTP区域

0x1FFF 7800 - 0x1FFF 7A0F

528 bytes

选项字节

1 

0x1FFF C000 - 0x1FFF C00F

16 bytes

2 

0x1FFE C000 - 0x1FFE C00F

16 bytes

各个存储区域的说明如下:

    主存储器

一般我们说STM32内部FLASH的时候,都是指这个主存储器区域,它是存储用户应用程序的空间,芯片型号说明中的1M FLASH2M FLASH都是指这个区域的大小。主存储器分为两块,共2MB,每块内分12个扇区,其中包含416KB扇区、164KB扇区和7128KB的扇区。如我们实验板中使用的STM32F429IGT6型号芯片,它的主存储区域大小为1MB,所以它只包含有表中的扇区0-扇区11

与其它FLASH一样,在写入数据前,要先按扇区擦除,而有的时候我们希望能以小规格操纵存储单元,所以STM32针对1MB FLASH的产品还提供了一种双块的存储格式,见表 502(2M的产品按表 501的格式)

502 1MB产品的双块存储格式

1M字节单块存储器的扇区分配(默认)

1M字节双块存储器的扇区分配

DB1M=0

DB1M=1

主存储器

扇区号

扇区大小

主存储器

扇区号

扇区大小

</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值