STM32
直播中

李舒桀

7年用户 1323经验值
私信 关注
[问答]

STM32H743内置双bank flash并行处理异常的原因?

最近在使用STM32H743做一个项目,用到了内置的flash储存数据,查看参考手册,743的双bank flash是可以同时操作的,我的程序和数据都放在的bank1,在擦除bank2的sector时,发现我的程序像是暂停了,直到擦除完成。具体的表现是tcp连接断开了,usb vcp连接断开了,定时中断暂停了,擦除完成以上的处理都可以手动或自动恢复。在线仿真单步运行时,watch窗口的数据也变灰了,擦除完成后才继续刷新。我确认我的代码里在操作flash时没有关闭全局中断(查看hal库函数也能看到,确实没有开关中断的操作),能否帮忙分析一下,是否还有哪些原因会导致我说的现象,或者说我对743的双bank同时操作理解错了?
谢谢
附图是743参考手册里对双bank并行处理的说明




回帖(1)

吴湛

2024-5-28 16:31:37
STM32H743的双bank flash并行处理异常的原因可能有以下几点:

1. Flash擦除和编程操作对CPU性能的影响:在擦除或编程flash时,CPU的性能可能会受到影响,导致程序执行变慢或暂停。这是因为flash操作需要占用大量的CPU资源,尤其是在擦除大容量的sector时。

2. Flash擦除和编程操作对中断的影响:虽然你提到在操作flash时没有关闭全局中断,但是在擦除或编程flash时,可能会触发一些与flash相关的中断,这些中断可能会影响程序的正常运行。例如,如果擦除操作触发了flash错误中断,那么程序可能会进入中断服务程序,导致主程序暂停。

3. Flash擦除和编程操作对系统时钟的影响:在擦除或编程flash时,可能会影响系统的时钟设置。这是因为flash操作需要一定的时钟频率来保证操作的正确性。如果系统时钟设置不当,可能会导致flash操作失败或程序运行异常。

4. Flash擦除和编程操作对电源的影响:在擦除或编程flash时,可能会对电源产生一定的影响。这是因为flash操作需要较高的电源电压,如果电源不稳定,可能会导致flash操作失败或程序运行异常。

为了解决这个问题,你可以尝试以下方法:

1. 在擦除或编程flash时,尽量降低其他任务的优先级,以确保flash操作能够顺利进行。

2. 在擦除或编程flash时,确保系统时钟设置正确,以保证操作的正确性。

3. 在擦除或编程flash时,确保电源稳定,以避免因电源问题导致的异常。

4. 如果可能,尝试将擦除或编程flash的操作放在低优先级的中断服务程序中执行,以减少对主程序的影响。

5. 如果问题仍然存在,可以考虑升级到更高版本的STM32 HAL库,看看是否有改进。

希望以上分析和建议对你有所帮助。
举报

更多回帖

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