stm32l0片上eeprom的读写操作

2024-03-19 12:10

本文主要是介绍stm32l0片上eeprom的读写操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、介绍
    • 1.1 片上eeprom介绍
    • 1.2 写eeprom操作
  • 二、编程
  • 三、测试
    • 3.1 测试代码
    • 3.2测试结果
  • 四、例程

一、介绍

1.1 片上eeprom介绍

L0的片上eeprom特性主要用来存储系统的配置信息,f103如果需要存储配置信息,还需要额外的一颗eeprom芯片,片上eeprom的机制也符合这系列的低功耗的属性。

1.2 写eeprom操作

此操作旨在将字或字的一部分写入数据EEPROM。用户必须在正确的地址和大小写正确的值。内存接口在必要时自动执行擦除操作(如果所有位当前都设置为0,则无需在写入之前删除旧内容)。类似地,如果要写入的数据为0,则只执行擦除操作。当只执行写操作或擦除操作时,持续时间为Tprog(3.2 ms);如果两者都执行,则持续时间为2 x Tprog(6.4 ms)。每次擦除和写入操作都将FIX标志设置为1时,可以强制内存接口执行。
注意的是

  • 一般flash擦除后是0xff,而片上eeprom擦除后是0x00
  • 一般flash在编程前需要先擦除,而stm32的内存接口自动的执行了擦除操作,无需用户执行额外的擦除指令。

二、编程

//eeprom地址
#define EEPROM_BASE_ADDR	0x08080000
//向偏移地址写入len个字节
void eeprom_write(uint16_t BiasAddress, uint8_t *Data, uint16_t len)
{uint16_t i;HAL_StatusTypeDef status = HAL_OK;HAL_FLASHEx_DATAEEPROM_Unlock();for(i=0;i<len;i++){status +=HAL_FLASHEx_DATAEEPROM_Program(FLASH_TYPEPROGRAMDATA_BYTE, EEPROM_BASE_ADDR+BiasAddress+i, *Data);Data++;}HAL_FLASHEx_DATAEEPROM_Lock();
}
//向偏移地址读取len个字节
void eeprom_read(uint16_t BiasAddress,uint8_t *Buffer,uint16_t Len)
{uint8_t *wAddr;wAddr=(uint8_t *)(EEPROM_BASE_ADDR+BiasAddress);while(Len--){*Buffer++=*wAddr++;}
}

三、测试

3.1 测试代码

//测试printf("开始测试\r\n");printf("写入eeprom数据:[0]:%x [1]:%x\r\n",eeprom_write_data[0],eeprom_write_data[1]);eeprom_write(0,eeprom_write_data,2);HAL_Delay(10);eeprom_read(0,eeprom_read_data,2);printf("读取的eeprom数据:[0]:%x [1]:%x\r\n",eeprom_read_data[0],eeprom_read_data[1]);printf("片上eeprom测试完成\r\n");

3.2测试结果

向0x08080000写入两个字节和从改该地址读取两个的内容一致,测试成功。
在这里插入图片描述

四、例程

例程链接

这篇关于stm32l0片上eeprom的读写操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/825947

相关文章

基于 rt-thread的I2C操作EEPROM(AT24C02)

一、AT24C02 The AT24C01A/02/04/08A/16A provides 1024/2048/4096/8192/16384 bits of serial electrically erasable and programmable read-only memory (EEPROM) organized as 128/256/512/1024/2048 words of 8 b

【spark 读写数据】数据源的读写操作

通用的 Load/Save 函数 在最简单的方式下,默认的数据源(parquet 除非另外配置通过spark.sql.sources.default)将会用于所有的操作。 Parquet 是一个列式存储格式的文件,被许多其他数据处理系统所支持。Spark SQL 支持对 Parquet 文件的读写还可以自动的保存源数据的模式 val usersDF = spark.read.load("e

浅谈SOC片上系统LoRa-STM32WLE5数据安全防御机制

随着物联网设备的普及,数以亿计的设备正在通过无线网络进行通信,传输大量的敏感数据。这种大规模的设备联网带来了便捷性,但也伴随着巨大的安全风险。SoC片上系统通过将无线通信、处理器、存储和安全机制集成在同一个芯片中,为物联网应用提供了高度集成的解决方案。这种设计大大简化了硬件开发流程,同时提高了设备的整体性能和安全性。SoC不仅能够满足长距离、低功耗的无线通信需求,还能通过先进的加密技术,确保数据在

【微处理器系统原理和应用设计第六讲】片上微处理器系统系统架构

一、概念辨析 首先来厘清以下概念:微处理器,微控制器,单片机,片上微处理器系统 (1)微处理器:即MPU(Microprocessor Unit),微处理器是一种计算机的中央处理单元 (CPU),通常集成在一个或多个集成电路 (IC) 中。微处理器执行指令,并处理计算机中的数据。微处理器一般不包含存储器、I/O接口等外围组件,通常需要搭配外部芯片(如RAM、ROM、I/O接口等)来构成完整的计

EEPROM 扫盲

随笔记录 1. 介绍 EEPROM,即电可擦可编程只读存储器。它是一种非易失性存储器,允许在不施加高电压的情况下进行擦除和重新编程操作。 2、特点 非易失性 即使在电源关闭后,存储在 EEPROM 中的数据也不会丢失。这使得它非常适合用于存储需要长期保存的配置信息、校准数据等。可擦写性 可以通过特定的编程方法对其进行擦除和重新编程,这为设备的参数调整和升级提供了便利。字节级可寻址 能够

C++对文件进行读写操作

C++对文件进行读写操作 std::ifstream infile; //输入流infile.open(conf, std::ios::in);if(!infile.is_open ()){std::cout << "Open file failure" << std::endl;}else{while (!infile.eof()) // 若未到文件结束一直循

关于STC-ISP软件选项“下次下载用户程序时擦除用户EEPROM区”的质疑

1.以前,在用STC-ISP软件下载代码时,该选项一般都默认勾选!见图1;因没用到该功能无视; 2.近日,首次下载需写入一些用户核心数据,以后谁升级代码下载都不能查看和更改这些数据! 3.于是:发现个奇怪的问题!就是第一次写入时,默认勾选没发现问题;但第二次升级代码下载时,取消了这个勾选应该是对的!但问题来了:第二次下载后原用户数据居然擦除了! 4.原来:该选项设置后,第一次下载时无效!要到

STM32基础篇:SPI片上外设

SPI外设简介 STM32芯片内部集成了SPI片上外设,可由硬件自动执行时钟生成、数据收发等功能,减轻CPU负担。对于STM32F103C8T6,其SPI资源有SPI1、SPI2。 一些参数配置: 8位/16位数据帧高位先行/低位先行时钟频率:PCLK/(2,4,8,16,32,64,128,256)支持多主机模型、主或从操作可精简为半双工/单工通信支持DMA兼容I2S协议 【注意】SPI

java多线程环境下对变量的读写操作的原子性问题

本文转载自:http://www.cnblogs.com/qlee/archive/2011/09/13/2174434.html 以下多线程对int型变量x的操作,哪几个需要进行同步:( ) A. x=y; B. x++; C. ++x; D. x=1; 从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。   01  x = y;  02  mov ea

集成电路学习:什么是EEPROM电可擦除可编程只读存储器

EEPROM:电可擦除可编程只读存储器         EEPROM(Electrically Erasable Programmable Read-Only Memory,电可擦除可编程只读存储器)是一种非易失性存储器,具有电可擦写、可编程和只读的特性。以下是关于EEPROM的详细解释: 一、EEPROM的定义与特点 EEPROM的定义:EEPROM是一种允许通过电信号进行擦除和重新编程的