STM32单片机内部FLASH使用注意事项

目录

1、前言

2、STM32 F1、F4、L1系列内部FLASH分区及大小

1、STM32F1系列

2、STM32F4系列

3、STM32L1系列

3、STM32 F1、F4、L1系列内部FLASH编程时间

1、STM32F1系列

2、STM32F4系列

3、STM32L1系列


1、前言

单片机内部的FLASH除了存储固件以外,经常将其分成多个区域,用来存储一些参数或存储OTA升级的待更新的固件,这时就会涉及到单片机内部FLASH的编程和擦除操作,STM32不同系列的单片机内部FLASH特性和扇区大小都不太一样,如果不注意这些细节,那就等着爬坑吧

1、FLASH的分区以及扇区大小

FLASH擦除是按照扇区擦的,所以这个很重要,在工程中全局搜索 FLASH_PAGE_SIZE 宏就可以查看该芯片的页(扇区)大小,改宏在 stm32xxx_hal_flash.h中有定义

2、FLASH擦拭后的状态

F1和F4系列的芯片FLASH在擦除后会是0xFFFFFFFF,而L1系列的芯片FLASH在擦除后是0x00000000!!!!!

3、FLASH的编程速度

L1芯片内部FLASH编程速度比F1慢50倍!!!所以在使用L1芯片写入数据时相对于F1慢是正常的

2、STM32 F1、F4、L1系列内部FLASH分区及大小

1、STM32F1系列

对于F1系列的芯片大容量产品的FLASH主存储器每页大小为2K,如【下图】,而中容量和小容量的产品每页大小只有1K

2、STM32F4系列

分为2个Bank,每个Bank分为12个扇区,前4个扇区为16KB大小,第五个扇区是64KB大小,剩下的7个扇区都是128K大小

3、STM32L1系列

 

3、STM32 F1、F4、L1系列内部FLASH编程时间

信息参考对应芯片的数据手册的 Electrical characteristics 章节

1、STM32F1系列

可以看出F1系列内部FLASH页擦除时间最大为40ms,半字写入的时间为52.2us,比如按字写入1024字节数据,需要26.8ms,还是比较快的

2、STM32F4系列

可以看出F4系列内部不同扇区擦除时间也不一样的,字写入的时间为16us,比如按字写入1024字节数据,只需要4ms,非常快

3、STM32L1系列

可以看出L1系列内部FLASH页擦除和编程的时间都是3.28ms,比如按字写入1024字节数据,需要840ms,非常慢;但是擦除是

比较快的

 

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 MCU具有内部Flash存储器,可以模拟EEPROM的功能。下面是使用STM32 Flash模拟EEPROM时需要注意的事项: 1. 编程次数限制:Flash存储器具有有限的可擦写次数,每个存储单元一般可擦写数千次。因此,在使用Flash模拟EEPROM时,需要注意控制擦写操作的频率和次数,避免过度使用。 2. 块擦除:Flash存储器的最小擦除单位是一个块,而不是一个字节。块擦除会导致块中的所有数据被擦除,因此在更新其中一个数据时,需要先将整个块读入内存,修改后再擦除整个块并将修改后的数据写回。 3. 写保护:为了保护Flash存储器中的重要数据,可以将部分区域设置为写保护状态,防止意外或非授权的擦写和写入操作。在使用Flash模拟EEPROM时,可以将一部分空间用作存储EEPROM数据,并将其设置为写保护状态以保护数据的完整性。 4. ECC校验:在进行Flash模拟EEPROM操作时,应该在数据存储和读取时使用ECC(Error Correction Code)校验,以确保数据的可靠性。ECC校验位能够检测和纠正存储器中的错误位,提高数据的可靠性。 5. 数据备份:为了防止在擦除和写入时发生意外,应该在进行Flash模拟EEPROM操作前,先备份更新前的数据。这样在出现异常情况时,可以通过备份的数据恢复之前的状态。 总之,在使用STM32 Flash进行EEPROM模拟时,需要注意控制擦写次数、使用块擦除、设置写保护、使用ECC校验和备份数据等,以确保数据的可靠性和存储器的寿命。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值