0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32片上Flash读写一些重要知识

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-06 14:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关于STM32片上Flash读写操作,之前很多朋友遇到过坑,也问过很多相关的问题,这里再简单总结一下。

1写在前面

STM32片上Flash除了存储我们的代码,多余的空间还可以供我自己编程(读写)。比如,存储标志位、字库等。

如果对片上Flash读写操作不当,将会导致不可挽回的结局。比如:修改了应用程序代码导致程序跑飞,非对其操作导致异常中断等。

因此,我们对片上Flash读写操作时,一定要避免一些错误的做法。下面将讲述一些关于STM32片上Flash的知识,让大家掌握更多相关知识。

2

Flash闪存接口

STM32片上Flash闪存接口是在AHB协议上实现了对指令和数据的访问,它通过对存储器的预取缓存,加快了存储器的访问;

闪存接口还实现了在所有工作电压下对闪存编程和擦除所需的逻辑电路,这里还包括访问和写入保护以及选项字节的控制。

内置闪存模块可以在通用地址空间直接寻址,任何32位数据的读操作都能访问闪存模块的内容并得到相应的数据。

3

STM32片上Flash容量

STM32片上Flash容量大小与芯片的型号有关,具体大小可以参看命名规则:

而我们也可以通过读取Flash容量寄存器,或通过STM32 ST-LINK Utility工具获取芯片容量。具体可以参看我的另一篇文章《关于STM32的这几个寄存器》

4

Flash闪存模块的组织

STM32的Flash,有的是分页,而有的却是分块,具体可以查阅“参考手册”。

比如:STM32F0、 F1、 F3、 L1等就是按Page页来划分的,如下图:

而像STM32F2、F4等就是按Sector扇区来划分,如下图:

所以,如果移植代码,从Page页移植到Sector扇区,或者从Sector扇区移植到Page页,这部分底层代码必须要修改才行。

5

非对其写操作

STM32为32位的MCU,即4个字节。如果不是按照4个字节的写Flash,将导致Faults异常。

写Flash过程:

这里大家可以参看我之前分享的文章:

1.位带别名区最低有效位

2.谈谈STM32(CM3)的Faults异常

6

写操作不响应代码或数据读取

对STM32内部FLash的写操作,相对于执行指令是比较耗时的。从数据手册可以得出16位数据编程时间再40 --- 70us。

从STM32编程手册中,可以知道:在进行写或擦除操作时,不能进行代码或数据的读取操作。

比如:你在写Flash期间有接收串口数据,很有可能会丢串口数据。

因为比较耗时,所以,在写数据时,CPU不会执行其他操作。

简单说:在写Flash时,CPU 不能取指令,导致中断得不到及时响应,从而发生接收到的数据未及时读走而被覆盖的现象。

遇到这种情况,解决的办法:使用DMA。DMA不需要CPU干预,一旦 USART 有数据接收到,由 DMA 负责将其传输至循环缓冲区中。软件定期检测循环缓冲区中是否有接收到的数据,如果有则加以处理。

提示:

如果你的代码会反复读Flash,建议使用外部Flash。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    19174

    浏览量

    404933
  • FlaSh
    +关注

    关注

    10

    文章

    1761

    浏览量

    155995
  • STM32
    +关注

    关注

    2313

    文章

    11197

    浏览量

    374819
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    深入剖析STM32W108C8:高性能IEEE 802.15.4无线系统

    深入剖析STM32W108C8:高性能IEEE 802.15.4无线系统 在当今的电子设计领域,无线通信技术的发展日新月异。对于工程师而言,选择款合适的无线
    的头像 发表于 04-17 15:25 208次阅读

    集成式RFID读写器与非集成RFID读写

    集成RFID读写器将典型的固定RFID读写器和RFID天线集成为体,无需外部天线。如果需要额外的天线,一些集成读写器会有
    的头像 发表于 03-16 15:46 264次阅读
    集成式RFID<b class='flag-5'>读写</b>器与非集成RFID<b class='flag-5'>读写</b>器

    NOR Flash和NAND flash有什么区别

    在嵌入式系统、移动设备与存储领域,NOR Flash和NAND Flash是两种最常见的非易失性存储技术。尽管它们都属于闪存(Flash EEPROM)家族,但在内部结构、接口方式、读写
    的头像 发表于 03-11 15:08 709次阅读
    NOR <b class='flag-5'>Flash</b>和NAND <b class='flag-5'>flash</b>有什么区别

    CW32F030FLASH闪存存储器物理区域的划分

    FLASH 闪存由两部分物理区域组成:主 FLASH 存储器和启动程序存储器。 1、主 FLASH 存储器,共 64KB,地址空间为
    发表于 12-23 08:28

    贴片电容精度J±5%的一些详细知识

    贴片电容精度J±5%表示电容的实际值与标称值之间的偏差范围在±5%以内 ,以下是关于贴片电容精度J±5%的一些详细知识、精度等级含义 J±5% :字母“J”在贴片电容的标识中通常表示标称精度
    的头像 发表于 11-20 14:38 1043次阅读
    贴片电容精度J±5%的<b class='flag-5'>一些</b>详细<b class='flag-5'>知识</b>

    PI加热知识FAQ

    加热最大功率是多少?常规功率密度是3w/cm2,要看加热贴合的基材散热怎么样,散热不好的话,功率可以小点,散热好的话,功率可以适当增加一些。加热
    的头像 发表于 09-26 16:12 952次阅读
    PI加热<b class='flag-5'>片</b><b class='flag-5'>知识</b>FAQ

    STM32C011开发(3)----Flash操作

    STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍 STM32C011 的
    的头像 发表于 09-18 16:48 5352次阅读
    <b class='flag-5'>STM32</b>C011开发(3)----<b class='flag-5'>Flash</b>操作

    通用bootloader无法使用45db161flash怎么解决?

    通用bootloader不选“支持spi flash”,download放于flash,正常启动,ota正常,app驱动at45db161读写正常。通用bootloader选“支持
    发表于 09-18 08:23

    【RA4M2-SENSOR】读写Code Flash

    先看下RA4M2系类MCU的flash分布,这里分为两种块,种块大小为8Kb,另种为32Kb RA4M2-SENSOR 开发板的MCU型号是 R7FA4M2AD3CFL 在数据
    发表于 09-14 10:39

    当不同的数据放在同Flash页面上时,请问如何在不影响其他数据的情况下更改一些单独的数据?

    当不同的数据放在同Flash页面上时,如何在不影响其他数据的情况下更改一些单独的数据?
    发表于 08-22 06:25

    SPI NOR FLASH是什么,与SPI NAND Flash的区别

    存储位数据 (0或1) ,可以直接寻址,寻址速度非常快。SPI NOR FLASH支持全双工、单工以及半双工传输方式,被广泛应用于嵌入式系统中,如Bootloader、操作系统内核等程序的存储。由于它的读写速度和寻址方式类似于
    的头像 发表于 08-21 09:26 1925次阅读

    STM32的時候是直接用MDK方便还是在vscode用keil插件方便一些

    STM32的時候是直接用MDK方便還是在vscode用keil插件方便一些
    发表于 08-12 08:02

    求助,关于STM32F407的flash读写问题求解

    目前flash模拟EEPROM是参考的官方的flash读写代码,但C语言中attribute ((at())绝对定位的应用 网上的段代码如下 1、定位到
    发表于 07-18 07:14

    第二十九章 读写内部FLASH

    本文介绍了W55MH32内部FLASH,其含主存储、系统存储等,可存储代码及掉电保存数据。读写需解锁、擦除页等步骤,标准库提供相关函数。还展示了擦除编程测试及模拟EEPROM读写的实验。
    的头像 发表于 06-20 14:09 1403次阅读
    第二十九章 <b class='flag-5'>读写</b>内部<b class='flag-5'>FLASH</b>

    关于芯片设计的一些基本知识

    芯片的设计理念众所周知,芯片拥有极为复杂的结构。以英伟达的B200芯片为例,在巴掌大的面积,塞入了2080亿个晶体管。里面的布局,堪称个异次元空间级的迷宫。英伟达B200芯片如此复杂的架构
    的头像 发表于 06-11 12:16 1559次阅读
    关于芯片设计的<b class='flag-5'>一些</b>基本<b class='flag-5'>知识</b>