GD32F1-AN002编程闪存手册-中文

1/介绍

闪存控制单元(FMCU)为GD32F1设备的片上闪存提供所有必要的功能,以进行例行更新和重新编程。得益于闪存技术和创新的系统架构,消除了会导致CPU指令执行延迟的CPU等待时间,并实现了零等待。本文还介绍了闪存操作,如字/半字程序和页面擦除功能


2/特征

高达3072 KB的片上闪存,用于存储指令/数据和选项

页面读取访问可以在零等待状态下每周期执行32位

页面擦除和批量擦除功能

字(32位)或半字(16位)程序

中断功能用于指示闪存操作结束或出现错误。页面擦除/编程保护功能用于防止闪存上不情愿的读/写操作


3/功能描述


3.1    片上闪存

GD32F1系列设备提供高达3072 KB的片上闪存。下表显示了产品线和相关P/N。无需任何等待状态,每个周期可执行32位的读取访问。此外,所有字节,半字(16位)和字(32位)支持读访问。闪存可以一次编程半字(16位)或字(32位元)。闪存的每一页都可以单独擦除。除了信息块之外,整个闪存空间都可以一次擦除。可以使用多种方法(如系统内)实现数据存储或固件升级编程(SP)、应用程序内编程(AP)或电路内编程(ICP)


表1.GD32F1系列产品线产品线

产品线产品
基本线GD32F101xx
主流线GD32F103xx
互联线

GD32F105xx

GD32F107xx

价值线

GD32F130xx

GD32F150xx



对于片上闪存容量高达128KB的GD32F10X4/6/8/B产品,请参阅下表了解模块组织


表2.闪存模块组织(GD32F10X4/6/8/B)

image.png


对于片上闪存容量高达256KB-3072KB的GD32F10XC/D/E/F/G/l/K产品,闪存模块分为两组进行管理。模块组织见下表



image.png


对于片上闪存高达64KB的GD32F1X0X4/6/8产品,请参阅下表了解模块组织

image.png

下表显示了系统内存的起始地址,表示为系统地址值

image.png

GD32F10X4/6/8/B和GD32F10XC/D/E/F/G//K设备提供三种引导源,可使用boot 1和BOOT0引脚选择。复位后,引导引脚上的值锁定在SYSCLK的第四个上升沿。上电复位或系统复位后,由用户设置BOOT1和boot 0引脚以选择所需的boot源。详细信息如下:如下表所示

表6.GD32F10X4/6/8/B和GD32F10XC/D/E F/G//K引导模式

image.png

GD32F1X0X4/6/8设备提供三种引导源,可以使用用户选项字节中的位NBOO T1和BOOT0引脚选择。复位后,BOOTO引脚上的值锁定在SYSCLK的第四个上升沿上。上电复位或系统复位后,由用户设置nBOOT1和BOUT0以选择所需的引导源。详细信息显示在下表


表7.GD32F1X0X4/6/8引导模式

image.png

注1:BOOT1值与nBOOT1值相反


在通电序列或系统复位后,ARM Cortex-M3处理器依次从地址0x0000 0000获取堆栈顶部值和从0x0000 0004获取引导代码的基址。然后,它开始从引导代码的基地址执行代码

由于选择的引导源,主闪存(从0x0800 0000开始的原始内存空间)或系统内存(从0x1FF F000或0x1FF EC00开始的原始存储空间)在从地址0x0000 0000开始的引导内存空间中混叠。当选择内存空间从0X2000 0000开始的片上SRAM作为引导源时,在应用程序初始化代码中,必须使用NVIC异常表和偏移寄存器重新定位SRAM中的矢量表。

嵌入式引导加载程序位于系统内存中,用于重新编程闪存。在GD32F1设备中,可以通过USART和USB接口激活引导加载程序。


3.2闪存特性

下表显示了片上闪存访问延迟和操作特性



*******************************************未完待续*******************************


3.6读闪存

闪存访问通过AHB总线执行,可以直接寻址读取操作在FMCU中的硬件读取接口的控制下,通过读取顺序的步骤访问闪存内容的请求数据


3.7对闪存编程

系统复位后,FMCU功能受到保护。需要解锁序列将值写入闪存FMCUFR寄存器的FLAG1和FLAG2,以启用FMCU函数并访问闪存OCR寄存器。

GD32F103X提供字(32位)/半字(16位)编程功能,用于一次修改闪存内容。以下步骤显示半字编程操作寄存器访问顺序


.检查闪存OSR寄存器中的忙位,以确认未进行闪存操作

.在FLASH OCR寄存器中设置PG位,以写入页面程序命令

.将字(32位)/半字(16位)数据写入目标地址

.通过检查闪存OSR寄存器中忙位的复位,等待操作完成

.读取并验证编程页面


图1.Flash编程流程图


image.png


3.8擦除闪存

3.8.1页擦除

使用FMCU的页面擦除功能可以擦除闪存的一页。每个页面都可以独立擦除,而不会影响其他页面的内容。以下步骤显示了页面擦除操作寄存器的访问顺序

检查闪存_ OSR寄存器中的忙位,以确认未进行闪存操作

在FLASH_ OCR寄存器中设置每位以写入页面擦除命令

写入闪存TAR寄存器以选择要擦除的页面

设置闪存OCR寄存器中的起始位以触发擦除操作

通过检查FLASH_ OCR寄存器中BSY位的复位,等待操作完成

阅读并验证已擦除的页面

图2.闪存页擦除操作流程图

image.png

3.8.2批量擦除

闪存的用户页也可以使用批量擦除功能完全擦除。以下步骤显示了批量擦除寄存器访问顺序

检查闪存_ OSR寄存器中的忙位,以确认未进行闪存操作

将闪存OCR寄存器中的MER位设置为写入大容量擦除命令

设置闪存OCR寄存器中的起始位以触发擦除操作

通过检查FLASH_ OCR寄存器中BSY位的复位,等待操作完成

阅读并验证已擦除的页面


图3.闪存批量擦除操作流程图

image.png


3.9选项字节特征

选项字节块可以被视为一个独立的闪存,其基址为0X1FFF F800。下表显示了选项字节的功能描述和内存映射

*******************************************未完待续*******************************

3.10页面保护

GD32F1设备提供页面擦除/编程保护功能,以防止对闪存进行不希望发生的读/写操作

3.10.1读保护

通过设置OB_RDPT选项字节启用读保护,并需要通电重置以在之后重新加载新的OB RDPT选项

通过擦除整个选项字节区域并将正确的相关OB_RDPT代码(如用户手册中所述)编程到取消保护内存中,可以禁用读保护,然后需要通电复位以重新加载新的OB_RDPT选项字节

3.10.3写保护

通过配置OB_WP选项字节启用写保护,并需要通电重置以在之后重新加载新的OB_WP可选字节


通过使用FMC_CSR寄存器中的OBER位擦除整个选项字节区域来禁用写保护,并将用户手册中描述的正确OB_WP代码编程到取消保护内存中,然后需要通电复位以重新加载新的OB_WP选项字节



未完待续

注意:此文内容为软件翻译版,其中很可能存在错识或误差,请自行理解,发布者不承担任何责任

·关于我们·免责声明·服务条款·RSS订阅·dede168.com技术支持

Copyright © 1998-2015  All rights reserved.