武汉芯源CW32L052 FLASH存储器
一、概述
CW32L052内部集成了64KB嵌入式FLASH供用户使用,可用来存储应用程序和用户数据。支持对 FLASH 存储器的读、擦除和写操作,支持擦写保护和读保护。内置 FLASH 编程所需的高压 BOOST 电路,无须额外提供编程电压。
二、FLASH存储器组织
· 总容量64KB,分页管理
· 每页 512 字节
· 共 128 页
三、FLASH存储器保护
FLASH 存储器具有擦写保护和读保护功能。
· 擦写保护
包括锁定页擦写保护和PC 地址页擦写保护,处于保护状态的页面不能被擦写,可避免 FLASH 内容被意外改写。
· 读保护
· 以整片 FLASH 为保护对象,不支持单页保护,可避免用户代码被非法读取。
四、FLASH存储器操作
FLASH 存储器操作包括:读操作、擦除、写(编程)操作。
五、页擦除
FLASH 的页擦除操作的最小单位为 1 页,即 512 字节。页擦除操作完成后,该页所有地址空间的数据内容均为 0xFF。
如果对未解锁的 FLASH 页面进行页擦除操作,或者对*正在运行的程序[^1]*进行擦除操作,会操作失败,产生错误中断标志。
CW32L052 内部 FLASH 存储器被划分为 128 页,每 8 页对应擦写锁定寄存器的1 个锁定位。擦写锁定寄存器的各位域与 FLASH 锁定页面的对应关系如下表所示:
六、写操作
基于嵌入式 FLASH 的特性,写操作只能将 FLASH 存储器中位数据由‘1’改写为‘0’,不能由‘0’改写为‘1’, 因此在写数据之前先要对对应地址所在页进行擦除操作。
基于以上陈述,总结出以下三个原则:
· 不可对数据位内容为‘0’的地址写入
· 不可对锁定区域内的地址写入
· 不可对 PC(程序指针)所在的页的地址写入
七、读操作
CW32L052 对 FLASH 的读操作支持 3 种不同位宽,可采用直接访问绝对地址方式读取,读取的数据位宽必 须和对应地址边界对齐。
八、核心代码
//单片机头文件
#include "main.h"
//硬件驱动
#include "gpio.h"
#include "delay.h"
//子程序
void LCD_Configuration(void); //段式LCD配置函数
void LCD_Display(uint16_t dispdata); //段式LCD显示函数
uint8_t FLASH_Erase(void); //FLASH页擦除函数
uint8_t FLASH_Write(uint8_t *ByteData,uint16_t amount); //FLASH写操作函数
int main(void)
{
int i;
int temp8;
uint8_t cnt=0;
uint8_t WriteBuf[256];
LED_Init(); //初始化程序运行情况指示灯
LCD_Configuration(); //配置LCD液晶显示屏
FLASH_Erase(); //页擦除操作
for(i=0;i<256;i++) //验证是否擦除成功
{
temp8=*((volatile uint8_t*)(512*127+i));
if(temp8!=0xff)
{
while(1)
{
LED2_ON(); //LED2闪烁
Delay_ms(300);
LED2_OFF();
Delay_ms(300);
}
}
}
for(i=0;i<256;i++) //准备写入FLASH存储器的数据
{
WriteBuf[i]=i;
}
FLASH_Write(WriteBuf,256); //写操作
for(i=0;i<255;i++) //验证是否写入正确
{
temp8=*((volatile uint8_t*)(512*127+i));
if(temp8!=i)
{
while(1)
{
LED1_ON(); //LED1、LED2同时闪烁指示写入失败
LED2_ON();
Delay_ms(300);
LED1_OFF();
LED2_OFF();
Delay_ms(300);
}
}
}
LED1_ON(); //指示擦除、读、写均成功
LED2_ON();
while(1)
{
LCD_Display(*((volatile uint8_t*)(512*127+cnt))); //LCD上依次显示写入的数据
Delay_ms(500);
cnt++;
}
}
uint8_t FLASH_Erase(void) //页擦除
{
int flag=1;
FLASH_UnlockPages(512*127,512*127);
flag=FLASH_ErasePages(512*127,512*127);
FLASH_LockAllPages();
if(flag!=0)
{
while(1)
{
LED1_ON();
Delay_ms(300);
LED1_OFF();
Delay_ms(300);
}
}
return 0;
}
uint8_t FLASH_Write(uint8_t *ByteData,uint16_t amount) //写操作
{
int flag=1;
FLASH_UnlockPages(512*127,512*127);
flag=FLASH_WriteBytes(512*127,ByteData,amount);
FLASH_LockAllPages();
if(flag!=0)
{
while(1)
{
LED2_ON();
Delay_ms(300);
LED2_OFF();
Delay_ms(300);
}
}
return 0;
}
void LCD_Configuration(void) //段式LCD配置
{
__RCC_LCD_CLK_ENABLE();
RCC_LSI_Enable();
LCD_InitTypeDef LCD_InitStruct = {0};
LCD_InitStruct.LCD_Bias = LCD_Bias_1_3;
LCD_InitStruct.LCD_ClockSource = LCD_CLOCK_SOURCE_LSI;
LCD_InitStruct.LCD_Duty = LCD_Duty_1_4;
LCD_InitStruct.LCD_ScanFreq = LCD_SCAN_FREQ_256HZ;
LCD_InitStruct.LCD_VoltageSource = LCD_VoltageSource_Internal;
LCD_Init(&LCD_InitStruct);
LCD_COMConfig(LCD_COM0 | LCD_COM1 | LCD_COM2 | LCD_COM3, ENABLE);
LCD_SEG0to23Config(LCD_SEG0|LCD_SEG1|LCD_SEG2|LCD_SEG3|LCD_SEG4|LCD_SEG5|LCD_SEG6|LCD_SEG7, ENABLE);
LCD_Cmd(ENABLE);
}
void LCD_Display(uint16_t dispdata) //LCD显示
{
uint16_t DisBuf[10]={NUM0,NUM1,NUM2,NUM3,NUM4,NUM5,NUM6,NUM7,NUM8,NUM9};
LCD_Write(LCD_RAMRegister_0,0x00000000);
LCD_Write(LCD_RAMRegister_1,0x00000000);
if(dispdata<10)
LCD_Write(LCD_RAMRegister_0,DisBuf[dispdata]);
else if(dispdata<100)
LCD_Write(LCD_RAMRegister_0,DisBuf[dispdata/10]|DisBuf[dispdata%10]<<16);
else if(dispdata<1000)
{
LCD_Write(LCD_RAMRegister_0,DisBuf[dispdata/100]|DisBuf[dispdata/10%10]<<16);
LCD_Write(LCD_RAMRegister_1,DisBuf[dispdata%10]);
}
else
{
LCD_Write(LCD_RAMRegister_0,0xffffffff);
LCD_Write(LCD_RAMRegister_1,0xffffffff);
}
}
视频演示
九、补充
FLASH存储器和EEPROM存储器对比
一般性的总结:
使用场景侧重:
· EEPROM:频繁的擦写操作,如存储计数器、传感器数据等
· FLASH:大容量、高速读写,如存储程序代码和固件等
- |
- +1 赞 0
- 收藏
- 评论 0
本文由出山转载自武汉芯源( CW32生态社区公众号),原文标题为:CW32L052 FLASH存储器,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
基于武汉芯源CW32L010低功耗MCU的低成本电动工具方案,空载转速达25000RPM
采用武汉芯源的CW32L010F8P6作为主控实现低成本电动工具方案,通过PWM方波控制算法进行电机转速控制,内部高精度AD转换实现电机电压、反电动势、电流等信号的采样,并实时进行故障停机保护等功能。
产品 发布时间 : 2024-11-05
【IC】武汉芯源CW32L010安全低功耗MCU,树立M0+产品行业新标杆!
近日,武汉芯源半导体CW32L010系列产品正式官方发布。这款产品以其卓越的产品性能,迅速在业界引起了广泛关注,并成功树立M0+产品行业的新标杆。产品是基于eFlash的单芯片低功耗微控制器,集成了主频高达48MHz的ARM®Cortex®-M0+内核、高速嵌入式存储器(多至64K字节FLASH和多至4K字节SRAM)以及一系列全面的增强型外设和I/O口。
产品 发布时间 : 2024-10-10
【产品】武汉芯源CW32L083系列MCU中断系统介绍
本文针对武汉芯源CW32L083系列MCU,同系列产品亦可参考。ARM® Cortex®-M0+内核的嵌套向量中断控制器(NVIC),用于管理中断和异常。NVIC和处理器内核紧密相连,可以实现低延迟的异常和中断处理。
产品 发布时间 : 2022-12-02
武汉芯源(CW)CW32系列微控制器选型表
描述- 武汉芯源半导体目前已推出CW32F003系列、CW32F030系列以及CW32L083系列MCU产品,可以满足各行业的需求,客户行业广泛涉及通信电子、工业电子、消费电子、新能源、安防监控、物联网以及汽车电子等多个行业,并且已经在无线充方案、电子烟方案、水表方案、燃气表方案、BLDC电动工具、BMS方案、三轴云台、无线传感器方案等项目中得到实际应用,未来将能够满足更多的市场需求。
型号- CW32F030K8T7,F002,F003,CW32F030F8V7,CW32L083MCT6,CW32W031R8U6,CW32L031C8T6,A030 系列,L052,L083 系列,F030,L052 系列,CW32F030K8U7,L031 系列,CW32L052R8S6,CW32A030C8T7,A030,CW32L031K8U6,CW32L031C8U6,CW32L031F8P6,CW32L083RCT6,R031 系列,CW32R031C8U6,CW32L052C8T6,CW32L083VCT6,CW32 系列,CW32F020K6U7,F020,CW32,CW32F030F6P7,CW32L052R8T6,CW32F002F3U7,F002 系列,CW32L083RCS6,CW32F020C6U7,R031,CW32L031F8U6,CW32F003F4P7,L031,F030 系列,F003 系列,CW32F020F6U7,CW32F030C8T7,CW32F002F3P7,F020 系列,CW32F003F4U7,CW32L083RBT6,L083,CW32F003E4P7,W031 系列,W031
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
技术探讨 发布时间 : 2023-04-25
芯片等级怎么分?CW32又该属于哪些等级?
芯片按照应用环境和性能要求的不同,可以分为不同的级别,包括民用级(消费级)、工业级、车规级、军工级和航天级,一般我们接触不到航天级,这里只给大家作为知识补充。每种级别的芯片在制造工艺、可靠性、性能、测试标准和成本等方面存在显著的区别。
技术探讨 发布时间 : 2024-09-18
武汉芯源半导体有限公司
型号- CW24XX,CW32L052R8,CW32L,CW32L031,CW32L052,CW32L SERIES,CW32系列,CW32F,CW32,CW32F030,CW32L031C8,CW24XX系列,CW32F030C8,CW32F003F4,CW32L052C8,CW32R031C8,CW32R031,CW32F003,CW32L031K8,CW32L031系列,CW32F030K8,CW32L052系列,CW32L032K6,CW32L032E6,CW32L083RB,CW32L083RC,CW32 SERIES,CW32A030C8,CW32F系列,CW32L083系列,CW32L083VC,CW32L083RX,CW32L083,CW32W031R8,CW32F030FX,CW32F030F8,CW32F003E4,CW32L083MC,CW32F SERIES,CW32W031,CW32F030F6,CW32F030 SERIES,CW32L系列,CW32L032F6,CW32L031F8
武汉芯源半导体成功举行无锡地区CW32线下技术交流研讨会
2024年7月12日,武汉芯源半导体在无锡成功举办CW32系列MCU技术研讨会,吸引两轮车仪表及电动工具行业客户。孙秀艳总监展示企业实力,李家庆与李芳老师深入讲解产品应用,促进行业合作与技术创新,推动CW32 MCU在多个领域的应用。
原厂动态 发布时间 : 2024-08-19
探索创新,共筑未来 —— 武汉芯源半导体邀您共赴2024年慕尼黑上海电子展
2024慕尼黑上海电子展(electronica China)将于7月8-10日在上海新国际博览中心举办,对武汉芯源半导体而言,这不仅是展示最新产品和应用的机会,更是与国内外客户、合作伙伴深入交流的平台。公司期望通过此次展会,进一步拓展市场,加强与业界的合作。
原厂动态 发布时间 : 2024-07-01
武汉芯源半导体有限公司:致力于成为国产芯片的领航者
型号- CW32L052R8,CW32L,CW32L031,CW32L052,CW32L083 SERIES,CW32L SERIES,CW32系列,CW32F,CW32,CW32F030,CW32L031C8,CW32F030C8,CW32F003F4,CW32L052C8,CW32 SERIES,CW32R030C8,CW32R030,CW32F003,CWS5N65AF,CW32R031,CW32L031K8,CW32L031系列,CW32F030K8,CW32L052系列,CW32F030系列,CW32 FAMILY,CW24CXX,CW32L083系列,CW32F系列,CW32L083VC,CW32L083RX,CW32L083,CW32L031 SERIES,CW32W031R8,CW32F030FX,CW32F003E4,CW32L083MC,CW32F SERIES,CW32F003 SERIES,CW32W031,CW32F030 SERIES,CW32F003系列,CW32L系列,CW32L031F8
武汉芯源半导体出席“2024 IIC国际集成电路展览会暨研讨会 ”发表主题演讲并展示相关产品方案
武汉芯源半导体有限公司技术总监张亚凡先生于2024 IIC国际集成电路展览会暨研讨会发表主题演讲《持续奋进,快速完善自有32位超低功耗MCU产品阵容》,针对超低功耗产品设计经验和客户反馈,在宏观方面展示现有产品布局和未来产品计划,在微观方面展示产品外设细节功能的改进。
原厂动态 发布时间 : 2024-04-30
【IC】武汉芯源新推超低功耗32位M0+内核MCU CW32L052系列,主频高达48MHz,支持55路I/O接口
武汉芯源半导体超低功耗家族再添新成员:32位M0+内核MCU CW32L052系列芯片;基于eFlash的单芯片低功耗微控制器,集成了主频高达48MHz的ARM®Cortex®-M0+内核、高速嵌入式存储器,支持最多55路I/O接口。
新产品 发布时间 : 2023-02-23
CW32L052 DMA直接内存访问
本文介绍CW32L052 DMA直接内存访问功能。CW32L052支持DMA(Direct Memory Access),即直接内存访问,无需CPU干预,实现高速数据传输。
设计经验 发布时间 : 2024-04-30
武汉芯源携CW32家族产品现身青岛环球表计大会,展示燃气表、水表等表计产品应用方案以及温控器、无刷电机等工业类应用方案
武汉芯源半导体携CW32家族产品亮相2023年中国国际表计行业年度大会,为表计行业参观者展示了燃气表、水表、电表、可燃气体报警器等表计产品应用方案,以及料位开关、温控器、无刷电机等工业类应用方案。
原厂动态 发布时间 : 2023-05-06
电子商城
登录 | 立即注册
提交评论