打印
[STM32F4]

STM32F4 Flash扇区擦除期间如何清看门狗

[复制链接]
2207|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shimx|  楼主 | 2021-7-3 10:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM32F4 Flash扇区擦除期间如何清看门狗

使用特权

评论回复
沙发
supernan| | 2021-7-3 10:20 | 只看该作者

楼主详细说说怎么回事啊,这么说太笼统了

使用特权

评论回复
板凳
shimx|  楼主 | 2021-7-3 10:22 | 只看该作者
产品使用STM32F4芯片,外加外部看门狗(数据手册写0.9-2.5秒会工作)。正常程序0.5秒左右清除一下看门狗。由于这次产品中加入了自己编写了Bootloader升级APP的程序,需要擦除几个连续的扇区,每擦除一个扇区就给外部看门狗一个沿信号去清除看门狗。当擦除到128KB扇区的时候,测得擦除大概需要1.15秒时间(手册上写一般擦除128KB时间需要1-2秒)。所以,部分板子在擦除128KB扇区的时候出现外部看门狗复位的情况......

使用特权

评论回复
地板
heweibig| | 2021-7-3 10:27 | 只看该作者

然后呢?你是怎么应对这个的呢        

使用特权

评论回复
5
shimx|  楼主 | 2021-7-3 10:29 | 只看该作者
做了个测试:
1-在执行擦除Flash之前,将清除看门狗的程序放在SystemTick(1ms触发)中。结果:前面2个128KB扇区擦除仍然需要1秒钟左右才会去执行SystemTick中的程序,后面的扇区擦除期间,会有SystemTick的清看门狗的信号在执行。

使用特权

评论回复
6
juventus9554| | 2021-7-3 10:30 | 只看该作者
和STM32F4手册上写的一样,在Flash擦除期间,任何读取Flash的指令都将会被挂起,直到Flash擦除完成。

使用特权

评论回复
7
shimx|  楼主 | 2021-7-3 10:32 | 只看该作者
奇怪的是为什么前2个扇区擦除的时候会出现这种情况,后面几个扇区没有出现这情况?

使用特权

评论回复
8
shimx|  楼主 | 2021-7-3 10:34 | 只看该作者
测试将操作擦除Flash和给WatchDog信号的程序存放在RAM中,在运行后,出现如下图那样的情况。期间有两个明显时间很长的信号,第一个是擦除STM32F407 Secotr4(64KB)的时间,第二个是擦除Sector5(128kb)的时间,后面6-10 Secotrs就有信号去清除了。这个现象和之前所有擦除Flash和给Watchdog信号的程序全部放在Flash中的结果一模一样。现在的疑惑是,如果按照STM32手册说明的,第一二个Sector擦除的时候确实总线挂起了,但是为什么在6-10的Sectors擦除的时候却有程序执行的高低信号去清除看门狗了?

使用特权

评论回复
9
shimx|  楼主 | 2021-7-3 10:38 | 只看该作者

使用特权

评论回复
10
shimx|  楼主 | 2021-7-3 10:41 | 只看该作者
STM32F4 扇区4-10擦除

使用特权

评论回复
11
shimx|  楼主 | 2021-7-3 10:44 | 只看该作者

使用特权

评论回复
12
shimx|  楼主 | 2021-7-3 10:46 | 只看该作者
STM32F4 扇区4-10擦除

使用特权

评论回复
13
llljh| | 2021-7-3 10:48 | 只看该作者
把串口IAP程序,放到RAM里执行看看;

使用特权

评论回复
14
renyaq| | 2021-7-3 10:52 | 只看该作者
一个一个擦,每个擦完,清一次。

使用特权

评论回复
15
huangchui| | 2021-7-3 10:54 | 只看该作者
分批擦,中间插入喂狗指令

使用特权

评论回复
16
zhanghqi| | 2021-7-3 10:56 | 只看该作者
在 ram中运行擦除的程序,然后等待期间适当喂狗

使用特权

评论回复
17
zwll| | 2021-7-3 10:58 | 只看该作者
我猜的有可能是前面的扇区跟后面是分开的独立的两块

使用特权

评论回复
18
llljh| | 2021-7-3 11:00 | 只看该作者
如果你的IAP程序和要擦除的FLASH区域在同一块FLASH,那这时在擦写FLASH的时候,CPU是不能从FLASH取指令的,这时是挂起状态

使用特权

评论回复
19
pengf| | 2021-7-3 11:03 | 只看该作者
后面的FLASH在擦写的时候,CPU可以从前面的FLASH取指令。

使用特权

评论回复
20
dengdc| | 2021-7-3 11:05 | 只看该作者
这种情况如果有两块独立的FLASH,那可以把前面的做BOOT,后面的做APP,这样就可以了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝