STM32F10x Flash 模拟 EEPROM

发布者:未来感知最新更新时间:2015-10-21 来源: eefocus关键字:STM32F10x  Flash  模拟EEPROM 手机看文章 扫描二维码
随时随地手机看文章
STM32F10x芯片本身没有集成EEPROM,替代方案是用片上Flash来模拟EEPROM。Flash与EEPROM的区别主要是:一、EEPROM可以按位擦写,而Flash只能按块(页)擦除;二、Flash的擦除寿命约1 万次,较EEPROM低一个量级。ST网站有个Flash模拟EEPROM的范例:AN2594: EEPROM emulation in STM32F10x microcontrollers(包括源码和文档)。范例在保存修改的数据时,以写入新数据来替代对原数据的修改,并使用两个页面轮流写入,单页写满后进行数据迁移,再一次性擦除旧页面。这个策略可以有效降低Flash擦除次数。

  不过,范例代码只能保存固定大小的数据(16bits),虽然容易改成不同的固定大小,但实际用起来还是很不方便。我改写了一下,新的特性包括:

  • 支持不同大小数据(字符数组、结构体等)的混合存储;
  • 增加对数据的校验和(Checksum)检查。

  附件提供了源码。使用方法很简单,比如要保存一个字符数组 title 和一个 point 结构体:

#include "eeprom.h"
 
#define TITLE_SIZE    80
#define TITLE_KEY     1
#define POINT_KEY     2
 
typedef struct {
    float x;
    float y;
    float z;
Point;
 
char title[TITLE_SIZE] "eeprom test string.";
Point point;

  执行必要的初始化操作后,就可以进行写入和读取:

uint16_t result 0;
 
 
FLASH_Unlock();
 
 
EE_Init();
 
 
result memcpy_to_eeprom_with_checksum(TITLE_KEY, title, TITLE_SIZE);
result memcpy_to_eeprom_with_checksum(POINT_KEY, &point, sizeof(point));
 
 
result memcpy_from_eeprom_with_checksum(title, TITLE_KEY, TITLE_SIZE);
result memcpy_from_eeprom_with_checksum(&point, POINT_KEY, sizeof(point));

  实现混合存储的办法,是给每个变量附加8字节的控制信息。因此,在存储小数据时会有较大的空间损耗,而在存储较大的数据结构时空间利用率更高(相对于范例)。代码是针对STM32F103VE的实现。不同芯片需要对应修改头文件中 EEPROM_START_ADDRESS 的定义:

 
#define EEPROM_START_ADDRESS    ((uint32_t)0x0807F000)

附件:STM32F10x_EEPROM_Emulation.zip


关键字:STM32F10x  Flash  模拟EEPROM 引用地址:STM32F10x Flash 模拟 EEPROM

上一篇:STM32的时钟学习
下一篇:STM32中的优先级概念

推荐阅读最新更新时间:2024-03-16 14:36

易用性是FPGA在更多领域获得成功的关键
以提供多种基于Flash和反熔丝技术的低功耗、高可靠性单芯片FPGA而著称的Actel公司,在全球经济出现下滑的2008年仍实现了超过了10%的营收增长率,是增长最快的FPGA公司。在2009年,Actel仍将发挥其产品在低功耗、高可靠性、低成本和易用性等方面的优势,在工业控制、机器人、手持设备、LCD和LED显示、医疗电子、汽车电子等领域积极扩展新的应用机遇。Actel公司亚太区总经理赖炫州先生和Actel中国区经理夏明威先生接受《电子系统设计》采访,分享了他们关于FPGA新一轮应用机遇及挑战的独特见解。 2009年最具增长潜力的FPGA应用是什么? 在亚太区特别是中国市场,消费电子(包括手机)仍会具有较大增长
[嵌入式]
S3C2440开发板裸机程序系列07—NAND FLASH存储器
1. 概述 我的TQ2440开发板上安装有2M的NOR FLASH和512M的NAND FLASH。 NOR FLASH 的特点是芯片内执行(XIP, eXecute In Place),应用程序可以直接在 NOR FLASH 里运行,不必再把代码读到系统RAM中(可以节约SRAM的成本)。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND FLASH的特点是有很高的存储密度,并且写入和擦除速度也很快,但是无法直接寻址运行程序,接口上需要专门的控制器。另外NAND FLASH 非常容易出现坏区,所以需要有校验的算法。 因此,NOR FLASH一
[单片机]
S3C2440开发板裸机程序系列07—NAND <font color='red'>FLASH</font>存储器
MSP430 flash写入(二)
/* --COPYRIGHT--,BSD_EX * Copyright (c) 2012, Texas Instruments Incorporated * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above c
[单片机]
STM32中stm32f10x.h头文件如何把宏定义的常量转化为地址
#define PERIPH_BASE ((uint32_t)0x40000000) /*! Peripheral base address in the alias region */ //单独此语句理解只是宏定义常量,不能作为地址,虽然((uint32_t)0x40000000)数字大小等于基值 #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) //单独此语句理解只是宏定义常量,不能作为地址 #define GPIOE_BASE (APB2PERIPH_BASE + 0x1800) //单独此语句理解只是宏定义常量,不能作为地址 #define
[单片机]
OK6410之nand flash块设备驱动
s3c6410_nand.c源码: // 参考: drivers\mtd\nand\h1910.c #include linux/slab.h #include linux/init.h #include linux/module.h #include linux/mtd/mtd.h #include linux/mtd/nand.h #include linux/mtd/partitions.h #include asm/io.h #include mach/hardware.h // for CLPS7111_VIRT_BASE #include asm/sizes.h #include linux/c
[单片机]
TMS320C6x DSP的FLASH引导方法研究与实现
摘要:介绍了TMS320C6x DSP的几种FLASH引导方法,比较了引导过程中基于软件流水的数据搬移方法和QDMA方式的数据搬移方法,并介绍了如何利用在系统编程(ISP)对上电引导程序进行FLASH编程。通过对实际的TMS32C6711 DSP电路调试实验,证明了以上方法简单易行。 关键词:FLASH存储器 上电引导 COFF文件格式 DSP FLASH存储器是在EPROM和EEPROM的基础上发展起来的一种非易失性存储器,在掉电情况下仍能保证数据不丢失,并能够在不离开电路板或据设备的情况下实施擦除和再编程操作。由于其具有结构简单、维护便利、存取速度快、对环境适应能力强、抗振性能好等优点十分适合于嵌入式系统的设计和开发,
[应用]
基于FLASH介质嵌入式存储方案的设计与实现
摘要 作为一种新型的存储介质,FLASH以其优良的特性,在嵌入式领域中得到了广泛的应用。本文通过分析FLASH介质的自身特性,并结合嵌入式系统的特点,设计实现于兼容性、可靠性以及开销等方面都得到充分优化的FLASH存储系统。 关键字 嵌入式系统 文件系统 FLASH 1 引言 FLASH(闪速存储器)作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,已成为嵌入式系统中数据和程序最主要的载体。由于FLASH在结构和操作方式上与硬盘、E2ROM等其他存储介质有较大区别,使用FLASH时必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优。 2 FLASH的特点 FLASH是一
[缓冲存储]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved