中科芯CKS32F4xx系列MCU Flash模拟EEPROM的操作应用指南
CKS32F4xx系列芯片内部嵌入一个FLASH,若FLASH存储了用户的应用程序后仍留有空间,剩余空间可被当作EEPROM使用,这比访问外部FLASH速度优势更为明显。在本章节中,将会向大家简要介绍内部FLASH,并通过一个例程来演示FLASH模拟EEPROM的操作。
内部FLASH简介
FLASH结合了ROM和RAM的优点,不仅具备了EEPROM的可擦写性能,还类似于失性随机存储器(NVRAM),不会因断电而丢失数据,且能以较快的速度读取数据。对于CKS32F4xx系列的FLASH接口,它负责管理CPU通过AHB I-Code和D-Code总线对FLASH进行访问,这个接口可以执行擦除和编程操作,同时实施了一些读写保护机制,以确保数据的安全性。此外,FLASH接口还通过指令预取和缓存机制来提高代码执行的速度。下图为系统架构内的FLASH接口连接图:
针对不同型号的CKS32F4xx系列,其FLASH容量在128K至1024K字节之间。本章中以开发板上搭载的CKS32F407VGT6为例,它的FLASH容量为1024K字节,下图是CKS32F40xx/41xx的闪存模块组织图:
由上图可知,CKS32F4的存储区主要是由主存储器、系统存储器、OTP区域和选项字节构成,各存储区简述如下:
①主存储器:该部分用来存放代码和数据常数,分为12个大小不同的扇区,主存储器的起始地址是0x08000000;
②系统存储器:主要用来存放CKS32F4的bootloader代码,此代码是出厂的时候就固化在芯片内部了,例如用串口下载程序时的bootloader(ISP下载),它专门用来给主存储器下载代码;
③OTP区域:即一次性可编程区域,一次性的,写完一次,永远不能擦除;
④选项字节:用于配置读保护、BOR级别、软件/硬件看门狗以及器件处于待机或停止模式下的复位,相当于一些寄存器位。
内部FLASH读写操作
FLASH是以字节为最小单位进行操作,每个存储单元存放一个字节。以下是对内部FLASH读写操作的概述:
---内部FLASH指定地址读出数据
例如,从地址addr读取一个字节,可通过语句data = *(vu8*)addr来实现,若是读取一个半字或一个字,只将上面的vu8改vu16或vu32即可。
---内部FLASH的写入过程
(1)解锁:CKS32F4xx系列复位后,FLASH编程操作被写保护,只有向FLASH_KEYR寄存器写入特定序列0x45670123和0xCDEF89AB,方可解除写保护,进而操作其它相关寄存器;
(2)设置闪存操作位数:CKS32F4xx系列电源电压会影响数据的最大操作位数,由于本例中使用的开发板电压为3.3V,所以根据下述配置表,必须将FLASH_CR的PSIZE字段配置为10b,即32位并行位数,这也决定后续的擦除或编程操作必须以32位为基础进行。
(3)擦除扇区:在写入数据前,必须先擦除存储区域,CKS32标准库提供了扇区擦除和批量擦除的指令,批量擦除指令仅针对主存储区。
(4)写入数据:擦除完毕后才可写入数据,CKS32F4xx系列标准库提供了字节、半字、字和双字写入函数供用户调用,封装了对寄存器FLASH_CR和FLASH_SR的操作,具体步骤可查阅CKS32F4xx的嵌入式FLASH章节。
---其它注意事项:
①CPU时钟频率(HCLK)不能低于1MHz,不能在FLASH操作期间进行器件复位;
②FLASH执行写入或擦除操作期间,不能进行读操作,否则会导致总线阻塞。因此,FLASH写操作时,有必要写FLASH_DataCacheCmd(DISABLE),来禁止数据缓存,写完后再打开;
③写入地址必须是用户代码区以外的地址,不能覆盖用户代码,否则程序会出错,可以查看map文件,选择合适的存储空间;
④由于数据是以32bit写入的,占用4个地址位,所以写入地址必须是是4的倍数。
采用内部FLASH模拟EEPROM实验
CKS32F4xx系列有关FLASH的函数分布在文件cks32f4xx_flash.c以及cks32F4xx_flash.h中,本例中通过cks_flash_test函数演示内部FLASH的读写,该函数的执行过程如下:
① 调用FLASH_Unlock 解锁;
② 调用FLASH_DataCacheCmd禁止数据缓存;
③ 调用FLASH_EraseSector擦除待写入地址所在扇区,可由上述闪存模块组织图得知,擦除时是按字为单位进行操作,并等待FLASH操作结束进入下一步;
④ 本例中是调用FLASH_ProgramWord函数向指定地址写入指定数据,并等待FLASH操作结束进入下一步,CKS32F4xx系列官方库提供FLASH_ProgramHalfWord、FLASH_ProgramByte函数,用户可根据需求选用;
⑤ 调用FLASH_DataCacheCmd开启数据缓存;
⑥ 调用FLASH_Lock 上锁。
代码如下:
int main(void)
{
cks_flash_test();
while (1)
{
}
}
void cks_flash_test(void)
{
FLASH_Unlock();
FLASH_DataCacheCmd(DISABLE);
if(FLASH_EraseSector(FLASH_Sector_1, VoltageRange_3) != FLASH_COMPLETE)
{
return;
}
if(FLASH_ProgramWord(0x08004000, 0x44332211) != FLASH_COMPLETE)
{
return;
}
FLASH_DataCacheCmd(ENABLE);
FLASH_Lock();
}
图1
图2
主函数对cks_flash_test函数调用,cks_flash_test函数实现对指定地址0x08004000进行擦除,写入操作。通过断点调试,如图1当程序运行至FLASH_EraseSector后,0x08004000起始处的四个字节先被擦除成0xFF;如图2,当程序运行运行至FLASH_ProgramWord之后,执行向0x08004000写入0x44332211后,0x08004000起始处数据变成0x11、0x22、0x33、0x44。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由ll转载自中科芯MCU公众号,原文标题为:MCU微课堂|CKS32F4xx系列Flash操作,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关研发服务和供应服务
相关推荐
【经验】如何在JFLASH中添加极海半导体Geehy APM32系列MCU
本文主要介绍极海半导体MCU产品如何使用第三方Segger公司的JFLASH配合J-Link仿真器对指定型号MCU的Flash进行擦除、写入及读取操作的目的。
设计经验 发布时间 : 2023-01-06
中科芯CKS32K148系列MCU SCG寄存器配置以及相关示例(二)
在前文中,已经对中科芯CKS32K148 MCU SCG时钟进行了整体介绍,下面以RUN模式下配置SPLL为系统时钟源为例,对时钟配置的具体方法进行讲解。
设计经验 发布时间 : 2024-10-31
【经验】如何使用JFLASH擦除、写入及读取华芯微特指定型号MCU
本文介绍了华芯微特MCU产品如何使用第三方Segger公司的JFLASH配合J-Link仿真器对指定型号MCU的Flash进行擦除、写入及读取操作。
设计经验 发布时间 : 2022-12-22
中科芯(CETC)32位MCU选型指南
目录- 公司简介 MCU MCU型号定义&封装参考 MCU开发工具 LoRa/ NB-IoT LoRa/ NB-IoT产品简介 MCU应用案例
型号- CKS32F103V8T6,CKS32F031K6U6,CKS32F102C6T6,CKS32F417ZET6,CKS32F105VDT6,CKS32F107,SX1262,CKS32F105,CKS32F102R4T6,CKS32F103,CKS32F101,CKS32F102,CKS32F101R6T6,CKS32F103C4T6,CKS32F051K6U6,CKS32F101ZCT6,CKS32F030F6P6,CKS32F101VET6,CKS32F417VGT6,SX1280,CKS32L063C8T6,CKS32F031F4P6,CKS32F101C8T6,CKS32F107V8T6,SX1278,CKS32F103RCT6,CKS32F107RBT6,CKS32F051K6T6,CKS32F405ZGT6,TP20L607,CKS32F103ZET6,CKS32L052R6T6,CKS32L052C8T6,CKS32F105VCT6,CKS32F107系列,CKS32F105RET6,CKS32L051系列,CKS32L051R8T6,CKS32L053C6T6,CKS32F101ZDT6,CRF-62,CKS32F072R6T6,CKS32F051系列,CKS32F103RDT6,CKS32F072C8T6,CKS32F103VBT6,CKS32F030K6T6,CKS32F042K8T6,CKS32F407VET6,CKS32F103R4T6,CKS32F415系列,CKS32F103ZDT6,CKS32F102C8T6,CKS32F417ZGT6,CKS32F042系列,CKS32F105VBT6,CKS32F030R8T6,CKS32F102R6T6,CKS32F105RDT6,CRF62-LKWAN-CY,CKS32F103C6T6,CKS32L052系列,CKS32F030K6U6,CKS32F102系列,CKS32F101R8T6,CKS32F030F4P6,CKS32F101ZET6,CKS32L063R8T6,CKS32F101CBT6,CKS32F031系列,CKS32F107R8T6,CKS32F031G6U6,CKS32F103RET6,CKS32L051K6T6,CRF1278系列,CKS32F415RGT6,CKS32L063系列,CKS32F103VCT6,CKS32F051C8T6,CKS32F103ZCT6,CKS32F417IET6,CKS32L052R8T6,CKS32F105RCT6,CKS32L053系列,CRF1278,CKS32F051R8T6,CKS32F101系列,CKS32L053C8T6,CKS32F072CBT6,CKS32F105V8T6,CKS32F407ZET6,CKS32F101RBT6,CKS,CKS32F030系列,CKS32F072R8T6,CRF62-L2,CRF62-L5,CKS32F042C6T6,CKS32F103VDT6,CKS32L053R6T6,CKS32F107VET6,CKS32F407VGT6,CKS32F103R6T6,CKS32F417系列,CKS32F030C8T6,CKS32F102R8T6,CKS32F105RBT6,CKS32F031C6T6,CKS32F103C8T6,CKS32F102CBT6,CKS32F405系列,CKS32F101RCT6,CKS32L052K6T6,CKS32F415VGT6,CKS32F031G4U6,CKS32F103VET6,CKS32F107VDT6,CKS32F051,CKS32F051C6T6,CKS32L051K8T6,CKS32F417IGT6,CRF-62系列,CRF62-WAN,CKS32,CKS32F103系列,CKS32F072RBT6,CKS32F042,CKS32F407IET6,CKS32F405RGT6,CRF1280-12S,CKS32F107RET6,CKS32F407ZGT6,CKS32F101VBT6,CKS32F102RBT6,CKS32F101RDT6,CKS32L053R8T6,CKS32F031,CKS32F103R8T6,CKS32F042C8T6,CKS32F107VCT6,CKS32F030,CRF1278-L3,CRF1278-L1,CKS32F030C6T6,XY1100,CRF1278-L4,CKS32F103CBT6,CKS32F030K6,CKS32F102C4T6,ASR6601,CKS32F101R4T6,CKS32F105R8T6,CKS32F051K8U6,CKS32F407系列,CKS32F107RDT6,CKS32F101VCT6,CKS32F415ZGT6,CKS32F101RET6,CKS32L052K8T6,CKS32F417,CKS32F417VET6,CKS32F101C6T6,CKS32F415,CKS32F031F6P6,CKS32F107VBT6,CKS32L051C6T6,CKS32F051K8T6,TP20H607,CKS32L051C8T6,CKS32F042K6T6,CKS32L052C6T6,ASR6505,CKS32F105VET6,CKS32F407,CKS32F405,ASR6501,ASR6502,CKS32X...,CKS32F105系列,CKS32L051R6T6,CKS32L063,CKS32F407IGT6,CKS32F405VGT6,CKS32F072,CKS32F101VDT6,CKS32F072系列,CKS32F031K6T6,CKS32F103RBT6,CKS32F072C6T6,CRF1100-N1,CKS32L052,CKS32F107RCT6,CKS32L051,CKS32L053
【经验】国民技术N32L40x系列MCU解除L1级别读保护的方法
国民技术N32L40x系列MCU提供了L0/L1/L2三种级别的代码保护,对Flash中的用户代码进行读写保护,但是如果用户在进入到L1级别保护时,只允许从用户代码中对主存储区的读操作,本文讲解如何解除L1级别保护,使芯片恢复全部功能。
设计经验 发布时间 : 2021-12-03
中科芯CKS32K148系列MCU SCG(系统时钟发生器)模块应用指南(一)
系统时钟发生器(SCG)是MCU中的重要模块,它能够为芯片提供多个灵活的时钟源,并支持各种时钟输出选项,实现对芯片内部各个模块的时钟供应。CKS32K148的时钟生成电路提供了各种时钟分频器和选择器,允许不同的模块以该模块特定的频率运行,而时钟生成逻辑实现了可以独立关闭的模块特定时钟门控,从而能够优化芯片性能以满足低功耗的需求。本文将围绕CKS32K148的SCG模块展开介绍。
技术探讨 发布时间 : 2024-09-27
Top Chinese 8/32-bit MCU Manufacturers with ARM Cortex-M0, M0+, M3, M4 and Stable Supply
In the face of rising semiconductor raw material prices and a continued shortage of production capacity, Sekorm has joined Civil Technology, Arteli, Chipsea, China Microelectronics, Fudan Microelectronics, Aerospace Shun, and other mainstream MCU manufacturers to provide stable MCU supply guarantees
活动 发布时间 : 2022-06-21
中科芯(CETC)CKS32F030C8/C6/K6/F4 32位MCU数据手册
描述- 本资料给出了中科芯CKS32F030 xx 微控制器产品的器件特性
型号- CKS32F030XX,CKS32F030C6,CKS32F030R8T6XXX,CKS32F030C8,CKS32,CKS32F030K6,CKS32F030F4
解析中科芯CKS32F107xx MCU的DAC模块
DAC即数模转换器,它可以将数字信号转换为模拟信号。在常见的数字信号系统中,传感器信号被ADC模块把电压模拟信号转换成易于计算机存储、处理的数字信号,由计算机处理完成后,再由DAC模块转化输出电压模拟信号来驱动某些执行器件。本文将为您解析CKS32F107xx MCU的DAC特点和结构。
设计经验 发布时间 : 2024-08-28
【选型】中科芯(CETC)CKS32通用32位MCU快速选型指南
目录- CKS32F030超值型-48Mhz/CKS32F031入门型-48Mhz CKS32F051入门型-48Mhz/CKS32F103系列-72MHz
型号- CKS32F051K8T6,CKS32F051K6T6,CKS32F030C6T6,CKS32F030C8T6,CKS32F031K6U6,CKS32F103CBT6,CKS32F030R8T6,CKS32F031C6T6,CKS32F103,CKS32,CKS32F030K6U6,CKS32F051R8T6,CKS32F103C8T6,CKS32F103TBU6,CKS32F103T8U6,CKS32F030F4P6,CKS32F051K8U6,CKS32F051K6U6,CKS32F030F6P6,CKS32F031K6T6,CKS32F031F4P6,CKS32F103RBT6,CKS32F103VBT6,CKS32F030K6T6,CKS32F031F6P6,CKS32F031,CKS32F051C8T6,CKS32F103R8T6,CKS32F051,CKS32F030
解析中科芯CKS32F107xx系列MCU的GPIO配置
本文中中科芯来给大家介绍CKS32F107xx系列MCU的GPIO配置,希望对各位工程师有所帮助。GPIO是通用输入输出端口的简称,也是CKS32可控制的引脚,CKS32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
设计经验 发布时间 : 2024-06-12
中科芯CKS32F107xx系列MCU内部温度传感器ADC采集应用指南
中科芯推出的CKS32F107xx系列MCU有一个内部的温度传感器,可以用来测量MCU及周围的温度(TA)。该温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。
设计经验 发布时间 : 2024-08-13
【选型】ROHM(罗姆)LAPIS 8/16/32bit微控制器(MCU)选型指南(英文)
目录- Microcontrollers introduction 16bit General-Purpose MCUs 16bit Low Power MCUs 8bit Low Voltage MCUs 8bit Audio Playback MCUs 32bit USB Inter Face and Security Fanction MCUs 8bit/16bit MCU Development Support System MCUs Specification and Part Number Explanation
型号- ML62Q1713,ML610Q419C-NNNTBXXXX,ML62Q1714,ML610Q409P,ML62Q1557,ML62Q1711,ML62Q1712,ML62Q1555,ML62Q1556,ML62Q1710,ML62Q1723C,ML62Q1553,ML610Q429,ML62Q1554,ML62Q1551,ML62Q1552,ML62Q1550,ML62Q1300 GROUP,ML610Q431,ML610Q438,ML620Q503H,ML610Q439,ML610Q436,ML610Q435,ML62Q1704,ML610Q432,ML62Q1724,ML610Q408P,ML62Q1725,ML62Q1722,ML62Q1723,ML62Q1323,ML62Q1566,ML62Q1720,ML62Q1567,ML62Q1721,ML62Q1734C,ML62Q1325,ML62Q1564,ML610Q418,ML62Q1324,ML62Q1565,ML610Q419,ML62Q1563,ML610Q436A,ML62Q1544C,ML62Q1700 GROUP,ML610Q409A,MWU16,ML610Q306,ML610Q428,ML610Q412P,ML610Q304,ML610Q426,ML610Q305,ML610Q300,ML620Q504H,ML610Q421,ML610Q422,ML62Q1533,ML610Q409,ML62Q1733C,ML62Q1534,ML62Q1531,ML610Q407,ML62Q1532,ML610Q408,ML62Q1543C,ML62Q1530,ML610Q435A,ML610Q407D,ML610Q419C,ML610Q407A,ML610Q411P,ML610Q412,ML610Q411,ML610Q407P,ML62Q1702,ML62Q1703,ML620Q500,ML62Q1700,ML62Q1701,YQPACK064SA,ML62Q1544,ML62Q1300,ML62Q1542,YQPACK064SD,ML610Q407PA,ML62Q1543,ML62Q1540,ML62Q1554C,ML62Q1541,ML610Q418C,MODEL308,ML62Q1800 GROUP,ML610Q482,ML62Q1000 SERIES,ML610Q422P,ML610Q400,ML62Q1878,ML62Q1879,MODEL404E+,ML630Q400,MODEL400E+,ML62Q1553C,MODEL408E+,EASE1000 V2,NQPACK064SA,ML610Q421P,ML610482,ML610400,ML610Q411PA,ML62Q1748,ML62Q1869,ML62Q1749,LEXIDE-U16,MODEL416E+,ML62Q1800,ML62Q1366,ML610Q432A,ML62Q1367,ML62Q1714C,ML62Q1000,ML62Q1365,ML62Q1564C,ML62Q1500 GROUP,ML62Q1735,ML62Q1736,ML62Q1733,ML62Q1734,ML62Q1335,ML62Q1577,TEC-064SD-KC,ML610Q431A,ML630Q464,ML62Q1333,ML62Q1575,ML62Q1713C,ML62Q1334,ML62Q1576,ML630Q466,ML62Q1573,ML62Q1574,ML62Q1563C,DR.1000,ML62Q1728,ML62Q1729,ML62Q1726,ML610Q439P,ML62Q1727,ML62Q1746,ML62Q1747,ML62Q1868,ML610482P,ML62Q1744,ML62Q1745,ML62Q1346,ML62Q1500,ML62Q1347,ML62Q1743,ML62Q1724C,ML62Q1345,TEC-064SA-KC,ML610Q426C,DR1000-FLQ-64,ML610Q482P,MODEL400E+SERIES,NQPACK064SD-ND,ML62Q1739,ML62Q1737,ML62Q1858,ML62Q1738,ML62Q1859
【经验】中科芯CKS32F4xx系列MCU DAC功能应用指南
DAC模块作为中科芯CKS32F4xx系列MCU的一个常用外设,可以将数字信号转换成模拟信号,最高分辨率可达12位,且两个独立DAC输出通道转换互不影响,各个通道均能使用DMA功能,可由软硬件触发。因此,为了实现DAC输出正弦波,拟采用一定的时间向DAC的数据寄存器写入数据,随后进行数模转换输出不同的电压,最后在时间轴上显示出波形。
设计经验 发布时间 : 2023-08-19
解析CKS32F107xx系列MCU的中断和事件
本章节首先将以MCU开发人员常接触到的“中断”、“事件”和“中断事件”三个名词的概念展开,然后去阐述彼此的主要区别,最后借助MCU的GPIO外部中断/事件控制器(EXTI)的传输路径来加深对上述概念的理解。
设计经验 发布时间 : 2024-06-18
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
可烧录IC封装SOP/MSOP/SSOP/TSOP/TSSOP/PLCC/QFP/QFN/MLP/MLF/BGA/CSP/SOT/DFN;IC包装Tray/Tube/Tape;IC厂商不限,交期1-3天。支持IC测试(FT/SLT),管装、托盘装、卷带装包装转换,IC打印标记加工。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论