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)
对于片上闪存容量高达256KB-3072KB的GD32F10XC/D/E/F/G/l/K产品,闪存模块分为两组进行管理。模块组织见下表
对于片上闪存高达64KB的GD32F1X0X4/6/8产品,请参阅下表了解模块组织
下表显示了系统内存的起始地址,表示为系统地址值
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引导模式
GD32F1X0X4/6/8设备提供三种引导源,可以使用用户选项字节中的位NBOO T1和BOOT0引脚选择。复位后,BOOTO引脚上的值锁定在SYSCLK的第四个上升沿上。上电复位或系统复位后,由用户设置nBOOT1和BOUT0以选择所需的引导源。详细信息显示在下表
表7.GD32F1X0X4/6/8引导模式
注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编程流程图
3.8擦除闪存
3.8.1页擦除
使用FMCU的页面擦除功能可以擦除闪存的一页。每个页面都可以独立擦除,而不会影响其他页面的内容。以下步骤显示了页面擦除操作寄存器的访问顺序
检查闪存_ OSR寄存器中的忙位,以确认未进行闪存操作
在FLASH_ OCR寄存器中设置每位以写入页面擦除命令
写入闪存TAR寄存器以选择要擦除的页面
设置闪存OCR寄存器中的起始位以触发擦除操作
通过检查FLASH_ OCR寄存器中BSY位的复位,等待操作完成
阅读并验证已擦除的页面
图2.闪存页擦除操作流程图
3.8.2批量擦除
闪存的用户页也可以使用批量擦除功能完全擦除。以下步骤显示了批量擦除寄存器访问顺序
检查闪存_ OSR寄存器中的忙位,以确认未进行闪存操作
将闪存OCR寄存器中的MER位设置为写入大容量擦除命令
设置闪存OCR寄存器中的起始位以触发擦除操作
通过检查FLASH_ OCR寄存器中BSY位的复位,等待操作完成
阅读并验证已擦除的页面
图3.闪存批量擦除操作流程图
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.