F1写Flash有时候写进去有偏差?
我用HAL写Flash,写进去的值偶尔不是我给的那个,断电重启后就能看到写错了。Flash擦写次数多了就不靠谱了,小心用寿命。 Flash写之前先擦了吗?不能直接覆盖。 电源不稳的时候写Flash会出错的。 看下写保护是不是没关? 写完要不要再读回来校验一下? 写Flash不能中断,注意屏蔽中断。 写地址是不是没对齐?F1对齐很严格。 写多了有可能Flash磨损,换段地址试试。 HAL库封装的写函数有坑,我后来用寄存器写的。 写的速度快了也会写不进去,延时试试。 Flash 擦除操作不正确? STM32 Flash 存储器在写入新数据前必须先擦除原有数据,若擦除操作未完成或未按页/扇区正确执行,可能导致数据覆盖时出现残余信息。 在写入前检查数据长度是否符合页对齐要求,如果不符,需填充至整页后再写入。例如,若要写入一个字节的数据,可先将其扩展为半字,再写入。 可能系统时钟不稳定或电源电压波动。 增加滤波电容,减少电源噪声的影响。 Flash 存储器有一定的擦写寿命限制,频繁的擦写操作可能导致某些存储单元失效,影响数据完整性。 选择高质量的 Flash 芯片以延长使用寿命。 在 Flash 操作期间关闭全局中断,或者使用互斥锁机制避免中断干扰。
页:
[1]