STM32
直播中

王秀珍

8年用户 1547经验值
私信 关注
[问答]

STM32F030 FLASH存储,第二次或者多次写入或者擦除的时候读取不到数据是为什么?

最新在用STM32F030 因为没有外部存储设备,现在用的是芯片的FLASH来当存储,现在遇到的问题是刷一次程序后,第一次读取可以读取到,当第二次或者多次写入或者擦除的时候读取不到数据,这种情况是为什么啊?很疑惑,看正点原子和野火 都可以,但是实际用的时候不知道为什么只能读取一次正确的数据,剩下的读取到的都是FF FF

回帖(1)

杨万富

2024-4-10 18:18:13
这种情况可能是由于以下几个原因导致的:

1. 擦除操作未完成:在进行多次擦除操作时,需要确保每次擦除操作都已经完成,否则可能会导致数据读取不到。可以通过读取相关标志位(例如FLASH_SR中的BSY位)来判断擦除操作是否完成。

2. 写入操作未完成:在进行多次写入操作时,需要确保每次写入操作都已经完成,否则可能会导致数据读取不到。可以通过读取相关标志位(例如FLASH_SR中的BSY位)来判断写入操作是否完成。

3. 地址对齐问题:在写入或擦除FLASH时,需要确保操作的地址是按照正确的块大小对齐的。例如,如果你在写入字节时,地址应为偶数地址;如果是写入半字,则地址应为4的倍数;如果是写入字,则地址应为8的倍数。

4. 数据保护机制:在STM32F030系列芯片中,有可能存在写保护机制,该机制可以防止对某些区域的FLASH进行写入操作。你可以检查FLASH_OPTSR寄存器中的WRP位,确认写保护是否被启用并且相关区域是否被保护。

5. 程序逻辑错误:检查一下你的程序逻辑是否有误,确保在读取数据之前已经正确地进行了擦除和写入操作。

以上是一些可能导致你遇到问题的原因,你可以仔细检查其中的每个方面,找出问题所在。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分