GD32VW55x主存储闪存块编程功能

[复制链接]
1596|6
 楼主| jf101 发表于 2023-10-22 14:35 | 显示全部楼层 |阅读模式
FMC 提供了一个通过 SBUS 修改主存储闪存内容的 32 位整字编程功能。
编程操作,寄存器设置具体步骤如下:
 确保FMC_CTL寄存器不处于锁定状态;
 检查FMC_STAT寄存器的BUSY位来判定闪存是否正处于擦写访问状态,若BUSY位为1,
则需等待该操作结束,BUSY位变为0;
 置位FMC_CTL寄存器的PG位;
 写一个32位整字到目的绝对地址(0x08XX XXXX);
 等待编程指令执行完毕,FMC_STAT寄存器的BUSY位清0;
 如果需要,使用SBUS读并验证是否编程成功。
当主存储块编程成功执行,FMC_STAT 寄存器的 ENDF 位置位。若 FMC_CTL 寄存器的 ENDIE
位被置 1,FMC 将触发一个中断。有一些编程错误需要注意:
每个字在擦除后和下次擦除前只能编程一次。注意 PG 位必须在字编程操作前被置位。在正被
擦除 / 保护页上的编程操作会被忽略,FMC_STAT 寄存器中的 WPERR 位会被置位。
注意,如果编程数据未能写满 32 位,这些数据不会被编程入 flash 闪存,并且不会有任何提
示。
在这些情况下,如果 FMC_CTL 寄存器的 ERRIE 位被置 1,FMC 将触发一次闪存操作错误中
断。在中断服务程序中,软件可以通过检查 FMC_STAT 寄存器中的 WPERR 位来检测发生了
哪种错误。
图 字编程操作流程显示了主存储块字编程操作流程
62856534c299c1139.png
注意:1.设置 PG 位后,支持连续编程以满足 WLAN OTA 要求。2.如果用户在编程前不进行软件读操作检查,则编程内容与闪存原有内容线与。3.为了获得最快的编程速度,用户在操作过程中需要注意以下几点:(1)32 位编程并且地址连续。(2)在总线上连续写入,写操作之间必须没有读操作。(3)两次写之间的间隔不能超过 64xThclk(闪存时钟是 hclk 的 2 分频)。


tpgf 发表于 2023-11-4 16:07 | 显示全部楼层
多少位地址取决于数据线的多少吗
磨砂 发表于 2023-11-4 17:01 | 显示全部楼层
现在擦除的话 还是最小擦除单位128?
观海 发表于 2023-11-4 17:27 | 显示全部楼层
如果是针对其他存储来说可以适用吗
八层楼 发表于 2023-11-4 21:02 | 显示全部楼层
必须要使用目的绝对地址吗
晓伍 发表于 2023-11-4 21:41 | 显示全部楼层
FMC的应用面是不是比较窄啊
drer 发表于 2023-11-4 22:25 | 显示全部楼层
只有fmc具有整字编程的功能吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

312

主题

2464

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部
0