闪存写入时STM32停电

2019-07-14 18:00发布

我试图在STM32F405VGT6上检测到停电,它应该在虚拟EEPROM(Flash)中写一个计数器。但是写作过程还不够快。现在,我不能再将Flash初始化,当我调用HAL_FLASH_Program(uint32_t TypeProgram,uint32_t Address,uint64_t Data)函数时,它总是给我一个HAL_ERROR(FLASH_FLAG_PGPERR和FLASH_FLAG_PGSERR)。我已经尝试使用STUtility工具完全使用STM32,但这也没有用。是因为我打破了我的Flash吗?有没有办法在写入时保护闪光灯免受停电?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
Lucia_nie
1楼-- · 2019-07-16 01:20
你的第一个陈述不正确。AHB AP总线允许您直接访问闪存。这不是一个“硬件机制”,这就是为什么我同意你的答案(只是说明如果你认为我不同意它)。你的第二个陈述似乎是误解了我所说的。SWD的协议开销非常多。在我的脑海中,在标准编程模式下编程的每64位时钟大约为416位。因此,任何措施都不会使开销变得微不足道。
zyh34997
2楼-- · 2019-07-16 07:07
FLASH擦除时间2ms,DW编程80us。在4MHz时,它将是每64字节320x8个时钟
Lucia_nie
3楼-- · 2019-07-16 09:49
公平地说,我指的是百分比开销,而不是必要的绝对时间。在对你的数学进行三重检查之后,它让我发现了我最近写的一个SWD程序员的差异。它的运行速度为1.25MHz,但编程大约需要19秒(不完全确定,因为它会跳过空页)~50kB的数据,这与你的数学相差甚远。谢谢你帮助我实现这一点。

一周热门 更多>