Flash为什么写入前常要擦除?掉电时怎样保护参数不丢失?-STM32单片机面试

浏览量:5
时间: 2026-11-06 16:59:53

嵌入式单片机 / 企业面试高频题

设备配置参数每次修改都写进内部Flash,过一段时间就读出乱码。面试官通常会追问:存储器为什么不能像RAM一样随意覆盖,以及中途掉电怎么办。

面试先说结论

常见MCU Flash编程通常只能按器件规则把已擦除位由1写成0,恢复为1需对页/扇区执行擦除。反复擦写受到寿命限制;保存重要参数时应使用版本、长度、CRC、双槽/日志与掉电提交策略,而不是直接覆盖唯一一份有效数据。

一、核心原理与工程判断

STM32CubeProgrammer软件中Flash扇区擦除及编程界面的真实截图

擦除和编程粒度不同

不同STM32系列的Flash页、扇区和编程字宽规则不一样,必须查具体型号参考手册。有些器件支持ECC,未按对齐或编程粒度操作可能导致异常。擦除通常以较大的页/扇区为单位,编程粒度则较小。

掉电为何危险

假设先擦除唯一保存参数的Flash页,再写入新值,擦除和编程过程中突然掉电,旧参数可能已失效,新参数又未写完。仅靠上电后检查一个固定标志位,不能可靠发现所有写坏情况。

怎样设计可靠提交

常用做法是双槽或追加式记录:为新记录写入版本号、长度、校验和与序列号,写完并验证后再更新有效性标记。启动时选择最后一份校验通过的记录。实际写入次序、异常复位处理与容量规划需要结合Flash特性设计。

二、实际排查与设计步骤

  1. 确认具体MCU的页/扇区大小、编程对齐、擦写寿命和电压范围。

  2. 确定参数更新频率,估算寿命;高频写入考虑磨损均衡、EEPROM或FRAM等替代方案。

  3. 设计至少两个有效记录位置,新增记录先写数据再提交有效标志。

  4. 在写入前后检查供电稳定性,控制低压写入风险,记录错误返回码。

  5. 测试擦除中、写入一半、校验前后等多个时刻强制断电重启,验证可恢复性。

三、面试中的常见失分点

误区1:把Flash当成RAM反复覆盖同一地址。

误区2:以为加CRC就自动解决掉电更新中的原子性问题。

四、面试官可能继续追问

面试追问:为什么同一段数据写得不频繁也会提前损坏?

还要检查是否总是更新固定页、温度和工作电压是否超规格、擦写控制是否正确,以及是否存在程序逻辑重复写入。


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。侵权投诉
相关推荐HOT
射频工程师面试:5G毫米波前端为什么难?阵列、损耗、封装与校准怎么回答

毫米波前端难点不只是频率高,而是走线、封装、天线、功放、低噪放和相位控制同时进入电磁设计范围,任何小寄生都会放大成性能损失。面试先答结论:5G毫米波前端难,是因... 详情>>

2026-10-14 23:30:41
单片机面试:增量式编码器A/B相为什么相差90°?怎么判断方向又避免高速丢脉冲?

增量式编码器常输出A、B两路正交信号。只统计A相脉冲可以得到位移,但无法可靠判断方向;同时利用A/B相的相位先后关系,就能判断正转和反转。高速场景下,还要考虑输... 详情>>

2026-10-21 17:04:29
量产放行前同时发现两种缺陷:你如何判断哪个必须先阻断?

从风险评估矩阵出发,回答面试官最看重的事:有证据、有阈值、有责任人,不用“凭感觉”签字。先把“风险”拆开评估例如缺陷A发生频率较高但只是外观轻微瑕疵;缺陷B出现... 详情>>

2026-10-27 17:08:57
微带带通滤波器仿真中心频率正确,实物却偏移:先怀疑模型哪一项?

在微波PCB里,走线不只是互连;线宽、耦合间距、介质参数和金属外壳都是滤波器的一部分。从实物读结构|边缘耦合谐振器不是独立电感电容图中是边缘耦合的微带半波谐振器... 详情>>

2026-10-27 17:08:36
在哪里使用 dBuV 和 uV ?

EMC工程师在测量传导发射时都使用了uV和dBuV。传导发射是指由电子设备产生并通过电缆、PCB 走线、电源和接地层或寄生电容传输到另一个电子设备的噪声。传导发... 详情>>

2024-03-20 16:39:20
开班信息