[STM32U5] Flash写入偶发失败,读出来是全0,像写保护没关干净

[复制链接]
146|12
Pulitzer 发表于 2025-10-20 07:47 | 显示全部楼层 |阅读模式
应用里写内部Flash保存配置参数,大部分正常,但偶尔写入失败,读出来是全0。感觉像写保护区还没解锁完全。用HAL库流程走的,也没报错。
Clyde011 发表于 2025-10-20 07:51 | 显示全部楼层
建议用双区写保护机制,写完后切换验证。
公羊子丹 发表于 2025-10-20 07:52 | 显示全部楼层
U5系列的Flash操作确实挺挑的。
周半梅 发表于 2025-10-20 07:53 | 显示全部楼层
是不是中断没关干净?写入时被打断容易失败。
帛灿灿 发表于 2025-10-20 07:54 | 显示全部楼层
检查下Option Bytes,看保护区范围。
童雨竹 发表于 2025-10-20 07:55 | 显示全部楼层
我以前遇到是因为缓存没清,读出来全0。
万图 发表于 2025-10-20 07:56 | 显示全部楼层
可以写完后加个数据校验再判断。
Wordsworth 发表于 2025-10-20 07:57 | 显示全部楼层
写Flash时供电必须稳,稍有波动就写挂。
Bblythe 发表于 2025-10-20 07:58 | 显示全部楼层
你试试直接用LL库操作,调试更清晰。
 楼主| Pulitzer 发表于 2025-10-20 07:59 | 显示全部楼层
HAL的返回状态不一定准,最好看SR寄存器。
Uriah 发表于 2025-10-20 07:59 | 显示全部楼层
有时候Flash等待时间不够,要加延时。
powerantone 发表于 2025-10-20 10:37 | 显示全部楼层
写保护可能没有彻底解除。
probedog 发表于 2025-10-20 11:38 | 显示全部楼层
HAL库的HAL_FLASH_Unlock()和HAL_FLASH_Lock()需严格配对,若在解锁后未及时操作或操作超时,可能导致保护状态恢复。
solty 发表于 2025-10-20 12:39 | 显示全部楼层
电源或时钟是否稳定
spicy 发表于 2025-10-20 13:39 | 显示全部楼层
STM32U5要求Flash写入地址必须按字对齐,若地址未对齐,写入可能被忽略。
stormwind123 发表于 2025-10-20 14:40 | 显示全部楼层
彻底解除写保护,重新上电
七毛钱 发表于 2025-10-20 14:43 | 显示全部楼层
Flash写入前必须擦除对应扇区,若擦除未完成或标志位未清除,后续写入会失败。
今天会画卧蚕吗 发表于 2025-10-20 15:44 | 显示全部楼层
可能是HAL库函数调用缺陷,HAL库的HAL_FLASHEx_Erase函数可能未正确处理错误标志,导致擦除失败但函数返回HAL_OK。
内政奇才 发表于 2025-10-20 15:44 | 显示全部楼层
写入过程中电压波动或时序不稳定如SPI时钟配置错误,可能导致写入数据损坏。
又见江南雨 发表于 2025-10-20 18:45 | 显示全部楼层
禁用所有扇区的写保护,重新上锁选项字节。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

6242

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部