STM32单片机Flash不擦除直写案例分析

这篇具有很好参考价值的文章主要介绍了STM32单片机Flash不擦除直写案例分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景:

产品跳闸前需保存致使产品动作的故障类型和具体的故障分析数据,并在产品二次上电后读取故障类型,进行相应指示;之后清除故障类型的相关Flash,但故障分析数据仍保存,以便后续读出分析。然而,Flash扇区擦除时间较长,会影响程序正常运行、判断。


问题描述

Flash的编程原理都是只能将1写为0,而不能将0写为1,所以在进行Flash编程之前,必须将对应的块擦除,而擦除的过程就是把所有位都写为1的过程,块内的所有字节变为0xFF。

STM32内部Flash和外部Flash芯片类似,都是以页(或块)为最小擦除单元。因此,要擦除Flash数据,就是需要最小单元(1K/2K不等)。下图为STM32L431xx:
flash写之前一定要擦除吗,单片机,stm32,嵌入式硬件
然而,一页(2Kbyte)的最大擦除时间为24.47ms,典型擦除时间为22.02ms,远大于64-bit的数据写入时间,81.69us。
在擦除Flash期间,中断是不会被响应的。相当于进入了一个等级很高的中断,这个中断无法被其他可屏蔽中断所中断。
对于高速、连续信号采样和处理类应用而言,需要尽可能减少扇区擦除对程序本身运行的影响。
flash写之前一定要擦除吗,单片机,stm32,嵌入式硬件


解决方案:

网上都说“Flash在写之前必须先进行擦除操作,否则会使得写入数据与读出数据不一致”。

但其实,写Flash不一定非要先擦除。首先,需要明白擦除的目的是将Flash恢复为0xFF,而恢复为0xFF的原因是:写Flash只能将“1”改为“0”,不能由“0”改为“1”,而擦除就是将“0”改为“1”。所以,如果将要写的地方原来的内容为0xFF,那么就不用擦除。

基于上述分析,还可以进行如下探索:
比如擦除后是0xFF(1111 1111), 第一次写入0xFE(1111 1110), 第二次写入0xFA(1111 1010),第三次写入0x42(0100 0010),第四次写入0x00(0000 0000)。

因此,将产品跳闸前需保存致使产品动作的故障类型和具体的故障分析数据保存至同一扇区(故障类型在前,故障分析数据在后)。
记故障类型A为,0x01;
记故障类型B为,0x02;
记故障类型C为,0x03;
当产品二次上电后,读取故障类型进行相应指示;之后清除故障类型(0x00),但故障分析数据仍保存,以便后续读出分析。

该解决方案避免了程序运行过程中对Flash进行擦除操作所需要的擦除时间为22.02ms,减少对程序运行的影响,尤其对高速、连续信号采样和处理类应用效果明显。

此外,单片机Flash均有擦除次数上限,单片机的Flash擦写次数,用户本身是无法控制的,与其本身质量有关,当然电源环境很好,纹波较小,不出现高压对芯片的损害,Flash擦写次数就不会降低。但太过频繁擦写容易超过擦除次数上限,会损坏Flash,且结果不可预测,可能能写,但下一次就写不进去了;可能能写一半,后一半写不进去。擦除、读都一样没有规律。采用这种方案也可以在一定程度上提高内部Flash的修改次数。

注意:本文所介绍的单片机Flash不擦除直写方法,仅在STM32L431xx系列验证通过,别的系列、别的品牌单片机暂待验证。该方法是否具有通用性尚不明确,谢谢!文章来源地址https://www.toymoban.com/news/detail-579894.html


到了这里,关于STM32单片机Flash不擦除直写案例分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【正点原子STM32】单片机简介(FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛)

    一、单片机是什么 二、单片机有什么用 三、单片机发展历程 四、单片机发展趋势 五、CISC VS RISC 六、总结 单片机:Single-Chip Microcomputer, 单片微型计算机 ,是一种 集成电路芯片 SRAM(Static Random Access Memory)和DRAM(Dynamic Random Access Memory)是两种常见的随机访问存储器类型,

    2024年02月20日
    浏览(39)
  • J-Flash J-Link解锁GD32单片机

    提示:本篇所使用的工具为J-Link V9,软件为J-Flash V6.48b 当给GD32单片机Flash上锁,即配置安全保护后,单片机无法再通过keil、J-Link工具J-Flash烧录程序, 可通过J-Link STM32 Unlock或者J-Flash两种方法都可以。 我们先来用J-Link命令行验证下是否是真的开启了安全保护的 打开J-Link Comm

    2024年02月21日
    浏览(42)
  • STM32F103单片机通过SPI全双工通信协议与W25Q64(FLASH)进行通信【串行同步通信(数据线与时钟线配合),(一主多从模式)】附相关驱动代码详解

    1.W25Qxx系列是一种低成本、小型化、使用简单的 非易失性存储器 ,常应用于数据存储、字库存储、固件程序存储等场景 2.存储介质: Nor Flash(闪存) 3.时钟频率:80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI) 4.存储容量(24位地址): W25Q40: 4Mbit / 512KByte W25Q80: 8Mbit / 1MByte W25Q16: 16

    2024年04月13日
    浏览(59)
  • GD32单片机和STM32单片机的对比分析

    GD32单片机和STM32单片机都是基于Arm Cortex-M3/M4内核的32位通用微控制器,广泛应用于各种嵌入式系统和物联网领域。两者之间有很多相似之处,但也有一些不同之处,本文将从以下几个方面对比分析两者的特点、优势和开发成本。 GD32单片机采用的是二代的M3/M4内核,而STM32单片

    2024年02月16日
    浏览(55)
  • STM32单片机(一)STM32简介

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(57)
  • STM32单片机(二)STM32环境搭建

    ❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋

    2024年02月10日
    浏览(58)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(55)
  • 【单片机】STM32单片机的各个定时器的定时中断程序,标准库,STM32F103

    高级定时器和普通定时器的区别(https://zhuanlan.zhihu.com/p/557896041): TIM1是高级定时器,使用的时钟总线是RCC_APB2Periph_TIM1,和普通定时器不一样。 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用 timer.c timer.h 调用

    2024年02月07日
    浏览(54)
  • STM32单片机学习3--STM32控制键盘

    单片机型号:STM32F103C8T6 开发环境:Keil5 4种输入模式 上拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为1,高电平(与Vdd相连的为上拉电阻); 下拉输入模式:在默认状态下(GPIO引脚无输入),读取得的GPIO引脚数据为0,低电平(与Vss相连的为下拉电

    2024年02月10日
    浏览(54)
  • 【STM32】STM32单片机结构及部件原理

    STM32是目前比较常见并且多功能的单片机,要想学习STM32,首先要去了解它的基本构成部分以及各部分的原理。 单片机型号:正点原子STM32F103ZET6 目录 STM32内部结构总览图: 2.内部结构解析         1.内核 :STM32F103ZET6采用的是 ARM Cortex-M3 处理器,内核可以理解为单片机 处

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包