首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

​flash模拟eeprom存储日志的原理

flash模拟eeprom存储日志的原理 文章目的 采用flash模拟eeprom的优点 方案设计 注意事项 文章目的 做mcu开发时,涉及到数据存储时,往往都会考虑使用flash、eeprom,或者铁电存储器...从数据储存的角度上来说,安全性最高的肯定是FRAM,接着才会考虑使用EEPROM,对于一般的数据储存,flash就足够了。...采用flash模拟eeprom的优点 一般做mcu开发时,都会存储数据,如果有文件系统,可以写到文件中,但是一般不用文件系统时,则直接操作flash的读写。...方案设计 为了非常容易的将flash当作eeprom来使用,需要确保两个条件 1.读写的数据量至少小于1/2的flash的一个page数据量的大小 2.准备至少两个pages 然后就可以开始设计数据的搬运了...依次按照上面的顺序进行数据的搬运即可实现日志型数据操作的存储

2.2K30

使用EEPROM断电保存数据

EEPROM (Electrically Erasable Programmable Read-Only Memory),电可擦可编程只读存储器--一种掉电后数据不丢失的存储芯片。...在各型号的arduino控制器上的AVR芯片均带有EEPROM,也有外接的EEPROM芯片,常见arduino控制器的EEPROM大小:Arduino UNO、Arduino duemilanove-m328...arduino自带的EEPROM使用方法,arduino的库已经为我们准备好了EEPROM类库,我们要使用得先调用EEPROM.h,然后使用write和read方法,即可操作EEPROM。...void setup() { } void loop() { //模拟值读出后是一个0-1024的值,但每字节的大小为0-255,所以这里将值除以4再存储到...>eeprom_clear清除EEPROM的内容,其实就是把EEPROM中每一个字节写入0,因为只用清一次零,所以整个程序都在setup部分完成。

18410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用Flash模拟EEPROM

    目录 1、FLASH与EEPROM简介 2、FLASH模拟EEPROM原理 2.1、EERPOM数据结构 2.2、EERPOM物理结构 在讲解这篇博文前,首先要明白为什么使用Flash存储来模拟EEPROM...更大的存储容量:通常,Flash存储提供比EEPROM更大的存储容量。这使得在没有牺牲太多物理空间的情况下可以存储更多数据。...在使用Arduino开发时,有个内置库可以使用Flash模拟EEPROM,极大的方便了嵌入式数据存储的开发。...所以FLASH模拟EEPROM的思路是: 新数据存储不影响旧数据; 尽量减少FLASH擦除次数,延长FLASH使用寿命。...EEPROM写入流程如下所示: 2.2、EERPOM物理结构 实现的EEPROM结构如下图所示,一个页可以由1个或者多个扇区组成,可以根据实际应 用灵活的选择扇区数量,扇区数量越多,可以存储数据量就越多

    42610

    Flash如何模拟EEPROM

    很多的MCU控制器不带有片上EEPROM,但是我们有时候鉴于成本的考虑又不想外扩EEPROM,所以经常用Flash来模拟EEPROM存储,但是Flash都是块擦除,所以需要考虑频繁擦除的影响,需要借鉴软件算法来综合考虑...还好官方提供了很好的一篇参考笔记AN4903,可字节编程或字编程且可擦除的电可擦可编程只读存储器(EEPROM) 在汽车电子控制单元 (ECU) 中经常使用。...编程和擦除操作的灵活性使得它适合用于断电时必须保留的以及在运行时需要单独更新的应用变量的数据存储。...对于不带 EEPROM 存储器的设备,可以通过 EEPROM 仿真软件,使用页面可擦除的 Flash 存储器来仿真 EEPROM,一个可擦除 Flash 单元相当于一个扇区。...不使用软件算法直接在 Flash 中编程数据会导致频繁擦除 Flash,频繁的擦除会缩短 Flash 的寿命,增加数据写入的时间。

    2.9K50

    4.6 51单片机-EEPROM存储芯片(AT24C02)

    4.6 EEPROM存储芯片(AT24C02) 4.6.1 原理图介绍 图4-6-1 图4-6-2 实验板上的EEPROM型号是AT24C02N,通信接口是IIC,接在单片机的P2.1(SCL)和P2.2...AT24C02是一颗2kbit(256字节)的EEPROM。 实验板的原理图上描述是24C16,实际实验板上使用的具体芯片型号是AT24C02。...4.6.2 AT24C02介绍 AT24C02是一个2K位串行EEPROM,内部含有256个字节空间。AT24C02内部有一个8字节页写缓冲器。...,等待AT24C02将缓冲区的数据存到内部EEPROM里,存放到EEPROM之后,掉电才不会丢失。...从AT24C02指定位置读取指定长度数据的总时序 图4-6-13 4.6.4 AT24C02读写数据示例代码 下面代码演示了AT24C02写入数据和读取数据的过程,在主函数里,调用AT24C02写字节函数向指定空间存入数据

    2K40

    EEPROM CAT24CXX实现分页读、写数据

    目录 1、CAT24CXX分页读、写数据原理 2、代码实现 ---- 近日驱动CAT24C08时遇到这样一个问题: 通常配置数据写入到EEPROM,256个字节基本可满足需求,最近做的一个项目数据量较大...所以打算使用分页读、写数据,使不同类型的配置数据空间较大一些。...本项目EEPROM地址使用如下所示: 配置1数据:0Byte~1000Byte; 配置2数据:1001Byte~1100Byte; 配置3数据:1101Byte~1200Byte; 配置4数据:1201Byte...CAT24C08,共有8KB的存储空间,可通过A2、a9和a8,来选择设备地址区域,也就是 ? =8个地址区域,每个地址区域有64页,每页16个字节, 故:64X16X8=8192B,也就是8KB。...配置1数据:0Byte~1000Byte 地址区域1 配置2数据:1001Byte~1100Byte 配置3数据:1101Byte~1200Byte 配置4数据:1201Byte~1300Byte

    1K40

    EEPROM的详细分析

    本例的EEPROM型号为AT24CM01,在电路中的引脚连接如下图所示: ? 1,该器件的特性如下: 时钟支持标准模式(100KHZ),快速模式(400KHZ),极快速模式(1MHz)。...该EEPROM的器件地址定义如下: 地址的高4位是预定义好的,值为"1010",bit3,bit2根据引脚A2,A1连接的电平来决定,在该设计中,A2,A1均为0,bit1位为寄存器地址的最高位(A16...该EEPROM的的寄存器地址为双字节,定义如下 ? ? 首先发送寄存器地址的高8位字节地址,然后发送寄存器地址的低8位字节地址。...数据传输:SDA上的数据只能在SCL为低电平期间翻转变化,在SCL为高电平期间必须保持稳定,IIC设备只在SCL为高电平期间采集SDA数据。...非应答信号(NAK):在连续读数据时,当读取完最后一个字节数据时,从机不产生响应信号。

    1.4K40

    你的EEPROM驱动标准吗?

    EEPROM驱动程序的稳定可靠在嵌入式产品的设计中占据举足轻重的地位,因为如果EEPROM不正确,那么存储的设备运行参数和数据就不正确,曾遇到过因为老产品的EEPROM驱动设计存在缺陷,导致客户抱怨,退回产品...,虽然有的程序员写的驱动程序可以用,但是在恶劣条件下,导致数据丢失或者存储错误,EEPROM驱动的设计复用性应当相当高,在产品的设计中可以服用,如果驱动做的好的话,可以直接用在下一个产品中,只需更改一些应用层的映射...EEPORM驱动主要的功能接口应该提供,读,写,擦除,比较数据等接口,例如汽车电子行业中的AUTOSAR就对EEPROM的驱动有标准要求,其他行业也可以参考使用,汽车电子对安全要求相当高,为了避免各个厂商做出的驱动不一致性...,所以在标准中提出了细致的要求,大家都必须按照标准来走,这样的话就大大提高了程序的复用性,和可靠性,对外置EEPROM和内置EEPROM都适用,也推荐大家使用状态机来做EEPROM的驱动,另外还要维护EEPROM...我们曾在公众号里给大家介绍过基于AUTOSAR标准的GPIO驱动开发,其实认真阅读AUTOSAR标准,开发出一个符合AUTOSAR标准的驱动没有想象中那么难,希望有兴趣的同学可以阅读下AUTOSAR标准中的以下文档,对你开发EEPROM

    1.1K80

    存储数据

    数据缓存 通过《网络数据采集和解析》一文,我们已经知道了如何从指定的页面中抓取数据,以及如何保存抓取的结果,但是我们没有考虑过这么一种情况,就是我们可能需要从已经抓取过的页面中提取出更多的数据,重新去下载这些页面对于规模不大的网站倒是问题也不大...使用NoSQL Redis简介 Redis是REmote DIctionary Server的缩写,它是一个用ANSI C编写的高性能的key-value存储系统,与其他的key-value存储系统相比...Redis支持数据的持久化(RDB和AOF两种方式),可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。...Redis不仅仅支持简单的key-value类型的数据,同时还提供hash、list、set,zset、hyperloglog、geo等数据类型。...配置底层有多少个数据库。 配置Redis的持久化机制 - RDB。 配置Redis的持久化机制 - AOF。 配置访问Redis服务器的验证口令。

    4.6K30

    EEPROM 和 flash 这样讲,早就懂了!

    第一时间看干货文章 1 前几天看到群里在讨论存储器,有些人一直搞不懂,今天给大家分享一篇文章总结一下。 存储器分为两大类:RAM 和 ROM。 RAM 就不讲了,今天主要讨论 ROM。...EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。...但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。 狭义的EEPROM: 这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。...这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。...但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。 flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。

    1.4K40

    蓝桥杯单片机必备知识—–(11)EEPROM

    蓝桥杯单片机必备知识—–(11)EEPROM EEPROM 由于EPROM操作的不便,后来出的主板上BIOS ROM芯片大部分都采用EEPROM(Electrically Erasable Programmable...EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。...// write_eeprom(0x00,0x00); //EEPROM存储数据需要进行初始化 reset_cnt = read_eeprom(0x00); //从AT24C02地址0x00...中读取数据 delay(); //延时10ms write_eeprom(0x00,reset_cnt); //向AT24C02地址0x00中写入数据 delay(); 测试结果: 实现功能...define DELAY_TIME 5 #define SlaveAddrW 0xA0 #define SlaveAddrR 0xA1 //总线引脚定义 sbit SDA = P2^1; /* 数据线

    58220

    android 数据存储---- SharedPreferences实现数据存储

    SharedPreferences作为android的存储方式有以下特点: 1.只能存放key-value模式的键值。 2.本质就是就是以xml文件在应用程序所在包中存放数据。...用户不需要去  xml文件的生成和解析 4.由于 SharedPreferences 只能存放key-value  简单的数据结构,通过用来做软件配置参数,用来配置用户对软件的自定义或设置参数。...如果要存在复杂的数据,可以使用文件,如果还需要方便的增删改查 的话,就只能用Sqlite数据库来完成 下面是该使用的代码: 所用的字符串 <?...this.getApplicationContext()); pref.save(name, ID, phone); Toast.makeText(this.getApplicationContext(), "写入数据成功...用户只需要创建一实体,然后想里面添加数据和取出数据,即可 结果如下:

    5K50

    EEPROM和flash这样讲,我早就懂了

    EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。...但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。 狭义的EEPROM: 这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。...这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。...但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它flash。 flash做的改进就是擦除时不再以字节为单位,而是以块为单位,一次简化了电路,数据密度更高,降低了成本。...嵌入式系统多用一个小容量的nor flash存储引导代码,用一个大容量的nand flash存放文件系统和内核。

    2K20

    数据分类及存储特性——NoSQL数据存储

    ◆ NoSQL数据存储 传统的架构方法是在服务之间共享一个数据库,而微服务却与之相反,每个微服务都拥有独立、自主、专门的数据存储。...选择理想的数据存储的第一步是确定微服务数据的性质,可以根据数据的特点将数据大致做如下划分。 全局共享数据:缓存服务器是存储短暂数据很好的例子。...K-V存储:解决关系数据库无法存储数据结构的问题,主要适合对全局数据进行快速查找的低延时、高性能场景,以Redis为代表。...◆ K-V存储 K-V存储指按照键值(Key-Value)进行的数据存储,其中Key是数据的标识,和关系数据库中的主键含义一样;Value是具体的数据。...◆ 列式数据库 顾名思义,列式数据库就是按照列来存储数据数据库,与之对应的传统关系数据库被称为“行式数据库”,关系数据库就是按照行来存储数据的。

    5.5K10

    蓝桥杯嵌入式之EEPROM讲解

    蓝桥杯开发板板载一个AT24C02的2KB的EEPROM芯片,主要考察对IIC通信的掌握。IIC通信因其需要的数据线少、通信方式可自己决定等优点在嵌入式开发板中运用很多。...AT24C02需要2根数据线(一根为数据线,一根为时钟线)就可以与开发板进行通信。 IIC初始化 因为EEPROM的通信方式IIC通信,所以需要对IIC进行初始化。...内部存储地址 * @返回值 val:读出数据 */ uint8_t x24c02_read(uint8_t address) { unsigned char val; I2CStart...指定地址写入一个字节数据 * @参数 address:AT24C02内部存储地址 * @参数 info:写入数据 * @返回值 None */ void x24c02...地址和写入或读取的数据的类型都是字符型,其他类型的数据有可能出现错误。

    1.1K21

    存储数据的基础存储数组

    1、数组概念 数组就是存储数据长度固定的容器,保证多个数据数据类型要一致。 软件的基本功能是处理数据,而在处理数据时,必须先进行数据持有,将数据持有之后,再对数据进行处理。...我们将程序中可以临时存储数据的部分叫做容器。 Java当中具有持有数据功能的容器中,数组是最基本的,也是运算速度最快的。...2.1、格式一 2.1.1、数组定义格式 数组存储数据类型 [] 数组名字 = new 数组存储数据类型[长度]; 2.1.2、格式说明 **数组存储数据类型:**创建的数组容器可以存储什么数据类型...数组存储数据类型: 创建的数组容器可以存储什么数据类型。 **长度:**数组的长度,表示数组容器中可以存储多少个元素。 2.1.3、注意 数组有定长特性,长度一旦指定,不可更改。...2.1.4、案例 需求:定义可以存储3个整数的数组容器 int arr[]= new int[3]; 2.2、格式二 2.2.1、数组定义格式 数据类型[] 数组名 = new 数据类型[]{元素1,元素

    4.5K20

    探索PostgreSQL数据存储存储数据

    PG磁盘数据到内存概览 任何传统传统数据库都会借助DRAM来加速数据库磁盘数据的访问。比如PG中的share_buffer,全局为PG数据库中表存储数据page提供缓冲空间。...PG中一个表一般会有三种类型的数据,一个是fsm文件表示当前数据表中可用的空闲空间,另外一个是vm文件来表示数据表中数据可见性的映射,最后一个是以oid来表示的数据文件.fsm是基于page来管理空闲空间...xlog的lsn号 PageXLogRecPtr pd_lsn; // 如果设置了page checksum这里就存储了checksun uint16 pd_checksum; // flag...,属性信息存储在TupleDescData // 包含在tuple header中的信息 typedef struct HeapTupleFields { // 插入事务ID TransactionId...HeapTupleHeaderData; struct HeapTupleHeaderData { // 每个元组的事务信息/记录的多少列信息 union { // tuple事务信息存储

    3.8K50
    领券