打印

GD32VW55x主存储闪存块编程功能

[复制链接]
1209|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 位来检测发生了
哪种错误。
图 字编程操作流程显示了主存储块字编程操作流程

注意: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 | 只看该作者
如果是针对其他存储来说可以适用吗

使用特权

评论回复
5
八层楼| | 2023-11-4 21:02 | 只看该作者
必须要使用目的绝对地址吗

使用特权

评论回复
6
晓伍| | 2023-11-4 21:41 | 只看该作者
FMC的应用面是不是比较窄啊

使用特权

评论回复
7
drer| | 2023-11-4 22:25 | 只看该作者
只有fmc具有整字编程的功能吗

使用特权

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

本版积分规则

235

主题

1542

帖子

2

粉丝