STM32L051实现内部EEPROM读写

目录

一、简单介绍

二、cubeMX配置

三、实战开发

擦除

向指定地址写入数据

数据读出,赋给变量


一、简单介绍

根据datasheet,笔者的STM32L051K8U6具有2k字节的EEPROM.另外再提一点,根据芯片容量不同,L051被分成四种等级:一级、二级、三级、五级.

NVM是The non-volatile memory 的缩写,即非易失性记忆体,flash,EEPROM就是NVM

NVM最重要的特性自然是存储,内部EEPROM支持按字节写入,估计还是按word来的。

五级器件可以一边写入,一边读取,还能选择从哪个分区启动,可能是用于固件升级。

具体的芯片细节参考编程手册(可以在cubemx工具中寻找,如下图)

EEPROM的起始地址为0x0808 0000,根据不同容量的器件,结束地址也不同。笔者使用的三级芯片,flash和EEPROM地址范围如下

二、cubeMX配置

对于芯片内置的EEPROM读写,只需开启调试接口

内部HSI时钟作为主频

三、实战开发

擦除

使用如下函数擦除

cpp 复制代码
HAL_FLASHEx_DATAEEPROM_Erase(TEST_ADDRESS);

运行前先解锁EEPROM

cpp 复制代码
HAL_FLASHEx_DATAEEPROM_Unlock();

运行完再锁定EEPROM

cpp 复制代码
HAL_FLASHEx_DATAEEPROM_Lock();

向指定地址写入数据

cpp 复制代码
HAL_FLASHEx_DATAEEPROM_Unlock();
HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_WORD, TEST_ADDRESS, 0x12345678);
HAL_FLASHEx_DATAEEPROM_Lock();

数据读出,赋给变量

相关推荐
长春的KAKA1 小时前
Proxmark3 Iceman分支CLI命令总表
嵌入式硬件
半杯咖啡半行码1 小时前
STM32开发之IIC通信详解:从协议基础到FM24CL04实战
stm32·单片机·嵌入式硬件
硅基手札2 小时前
【I2C 技术系列 05】I2C 多主仲裁与时钟同步
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
szxinmai主板定制专家2 小时前
面向虚拟电厂协调控制:RK3588+FPGA+AI边缘控制器设计思路与算力评估
人工智能·嵌入式硬件·fpga开发·机器人·jetson·zynq·振动采集
Zw-awa2 小时前
DO 和 AO 到底怎么选:比较器替你决定了什么
stm32
硅基手札3 小时前
【I2C 技术系列 01】I2C 电气特性与物理层
驱动开发·stm32·单片机·嵌入式硬件·mcu·计算机外设
comyccccc3 小时前
TB6612电机驱动板原理图与PCB设计学习笔记
单片机·嵌入式硬件
gscsded4 小时前
MCUboot裸机移植实战
单片机·嵌入式硬件·arm
北京盛世宏博4 小时前
多协议以太网温湿度变送器:Modbus TCP/UDP/SNMP 协议应用场景详解
单片机·tcp/ip·udp·传感器·温湿度
HRTOS5 小时前
HRTOS 内核 BUG 修复:任务等待对象未初始化导致的异常唤醒问题
单片机·嵌入式硬件·算法·51单片机