精华内容
下载资源
问答
  • stc15f104e芯片片内EEPROM读写代码,本程序是测试片内闪存的读取次数
  • EEPROM读写及数据管理

    万次阅读 2018-04-11 08:10:12
    http://bbs.elecfans.com/jishu_452559_1_1.html有关E2PROM操作、保护、失效等一些问题,(才疏学浅,路过的英雄...简单说一下优缺点吧:(1)片内集成的感觉挺便宜的,和MCU一起卖的,对成本要求严格的,写次数很少...

    http://bbs.elecfans.com/jishu_452559_1_1.html

    有关E2PROM操作、保护、失效等一些问题,(才疏学浅,路过的英雄记得补刀
    1)有关 芯片内部自带的E2PROM

    有的资深的工程师可能不是很愿意用MCU自带的E2PROM,大概是这些家伙上过什么当、受过骗还是什么的。简单说一下优缺点吧:

    (1)片内集成的感觉挺便宜的,和MCU一起卖的,对成本要求严格的,写次数很少的场合一般会考虑,至少能省个2、3毛钱吧;
    (2)缺点的话,可能擦写次数、稳定性没有外挂的专用芯片厉害;

    2)有关常用的外挂E2PROM

    如果是学生或者刚从学生时代走来的人们,大概也就知道ATMEL 24C0X系列吧,就好像我毕业的时候以为世界只有51和AVR,开个玩笑!
    工程师主要考察E2PROM的参数无非就是擦写次数、功耗、稳定性、价格,其中10万次擦写次数和 100万次擦写次数正在较量,至于从工程师的角度考虑 擦写次数自然是没有上限最好,太低的擦写次数会让程序员死很多脑细胞。
    3)有关E2PROM的数据管理

    (1)操作注意事项:分页操作需要有5ms延迟等待时间才可以(以类AT24C04的产品为例),也就是模块化程序设计中,在写数据之前、写数据完毕后、度数据之前、读数据之后都需要考虑加5ms的延时时间。本来IIC的读写速率就不是很高,外加这些延迟一定会势必影响系统设计的实时性,但也不得不从读写性能的角度出发。


    (2)上拉电阻的选择:出于稳定性考虑,WP、SDA、SCL引脚都会设置上拉电阻,常用的电阻值为 4.7K 、10K电阻,个人比较推荐4.7K。

    (3)硬件IIC与软件模拟IIC的比较:对MCU资源不是很敏感的应用,都会考虑软件模拟的方式,毕竟这个移植起来真的很方便,只有第一做软件部分的时序、保护性设计作为足够好,后面拿过来修改时钟就可以直接,确实方便。

    (4)默认参数的写入:设置新E2PROM的时间戳标志,每次系统启动时检查这个时间戳和MCU自身存储的时间戳是否一致,不一致则初始化整个E2PROM为默认参数;当然软件程序的升级,这个时间戳表示也有必要做更改。

    (5)数据容错和管理
    把数据以有意义的数据块作分类管理,在数据的块的头、位加固定标识和CS/CRC校验 模式,格式如
      
    数据块开始字
      
    数据长度
    数据
    校验
    结束
    0xA5
    Length
    Byte0---ByteN
    CS/CRC
    0x5A

    实际用于产品中,可以挑选这个格式内容里面的部分内容使用,比如去掉结束符等。
    个人之所以建立写入开始字、结束字,原因是方便最好读出来的数据做数据格式检查,确认写入、读出的数据可靠性最高。
       为增强实际的可靠性,在需要写入的时候,可以在写入后,再读出来进行数据的比对,确认写入是否正确;或者在需要读出的时候,读两次、或者多次,检查每次的数据是否一致。
       对于出现异常的数据,最好有容错机制,可以回到默认状态值,不至于系统此时因为某个参数改变的崩溃。

    (6)实际底层操作是否需要关闭主程序的中断:一般按照上述(5)操作,有多次冗余操作设计,可以不关闭主程序中断。而且,IIC为等待型操作,一般不会因为系统延迟导致时钟脉宽拉长,影响字节写入、读出。

    (7)E2PROM擦写次数的延长: 如果现在手上的E2PROM的擦鞋次数是10万次,项目要求为100万次,且E2PROM内有很多空闲字节的没有使用。

    可以这样操作,将数据整理好,以数据块的方式存储,一组数据分10个块地址存储,每次写完后转移到下一块写,即10次写操作中每个物理的数据存储地址只操作了1次。 注意此时的写块数据的指针不能单独存、操作,不然这个字节的操作频率高,也就受到10万次的限制,这个关键的链子在10万次的时候掉了,其他字节也就挂了。这个表征操作哪个块的指针或者说标示符,当然也需要是移动的,至于具体怎么实现,就是见仁见智的事了。

    转自:http://blog.chinaunix.net/uid-20589269-id-1622153.html

    最近用Mega16做一个步进电机的项目,以后把项目全部的内容贴上来跟大家分享呵呵,现在讨论一个防止EEPROM读写出错的小办法,我编写熔丝位是用AVRstudio里面的Jtag下载功能来烧熔丝位的,连上Jtag,AVRstudio的Jtag功能fuse选项里,把熔丝位中的Preserve EEPROM memory through the Chip Erase cycle钩上,Brown-out detection level at VCC=4.0V钩上,Brown-out detection enabled钩上,就可以解决读写EEPROM时出错的机会了。

          如果再加上用直接地址访问法,而不用变量定义法,会更好的避免EEPROM读写问题,例如我就定义了
    //定义eeprom变量的地址
    #define eeprom_step_num 0xA0
    #define eeprom_step_r_max 0xB0
    #define eeprom_step_l_max 0xC0
    然后程序就没有再跑飞了!^_^

          在其它论坛上还有一些讨论EEPROM读写错误的贴,我节选了一些,留作参考:

    EEPROM掉电丢数据这个特点可不是AVR独有的。很多年前在89C51+24C02的系统里面就遇到过,我不知道铁电有什么比24C02更牛的地方,居然能保证不丢数据。原因很简单,就是掉电过程中,电压降低到MCU无法正常工作的程度,程序跑飞了,单片机引脚状态完全不可控,某次掉电就可能发出错误的写24C02的指令。上电的时候因为RESET处于有效状态,MCU引脚状态完全确定(对于51来说就是全1),是不可能误操作24C02的。解决方案很简单,加一片MAX813L,当电压低于4.6V就锁定89C51,问题彻底解决。这么多年也没见24C02被误改写。 

    最早的一批AVR内置了EEPROM却没有BOD,所以EEPROM被误改写是家常便饭,ATMEL很快发现了这个问题,新推出的AVR全都含有BOD乐。AVR的情况比较复杂,振荡方式和复位方式都有多种,所以不仅掉电会改写EEPROM(原因同上),上电也会!RESET过程结束前,必须有若干XTAL,MCU内部寄存器(包括软件不可见的)才会清零,如果RESET结束了才来时钟,上电就是程序乱飞,同样有可能改写EEPROM。用RC振荡方式问题不大,有电就能振起来,用石英晶体就会出问题,我测过89C51的,上电后20ms才振起来,如果电源上有大的滤波电容,VCC的上升斜率变小,晶体起振时间会变得更长!有存储示波器的朋友可以自己测一下,对晶振的起振有个感性认识。

    我遇到过的问题,m8里面有写eeprom的程序段,数据已经写入到eeprom了。 
    不停的开关电,eeprom里的值有可能随机改变,不见得是0x00,0xFF 
    原因是不是上电时,程序指针跑飞到写eeprom那段,导致往eeprom随机地址写了随机数。 
    后来,采用isp下载2次程序,最后版本的程序是删除了写eeprom程序段,保留读eeprom段。 
    这样的话,开关电很多次,里面的eeprom没见有改动。 
    如果系统实际运行时,需要对eeprom写操作,可考虑存多几次数据,用校验方法来处理数据改变。

    偶的应用一般要用到EEPROM存储的数据比较少,一般采取反码冗余备份校验的方式,需要存储的数据按照原码和反码存两份,需要读取时分别读取原码和反码,进行校验,若校验不通过,则根据一定的算法恢复数据或者采取缺省值.

    我遇到过的问题,m8里面有写eeprom的程序段,数据已经写入到eeprom了。 
    不停的开关电,eeprom里的值有可能随机改变,不见得是0x00,0xFF   

    我也是一样BOD使能   就OK了 不过我还是不放心,我用两份数据,最后加校验,启动的时候读eeprom数据   如果有异常 检测出错误数据组,然后用正确的恢复。如果两组数据均遭毒手,用flash里面的默认数据覆盖。

    一般我在eeprom里间三分拷贝,位置隔的比较远

    以下是马潮老师的解决办法:

    作为一个正式的系统或产品,当系统基本功能调试完成后,一旦进行现场测试阶段,请注意马上改写熔丝位的配置,启用AVR的电源检测(BOD)功能。 

    对于5V系统,设置BOD电平为4.0V;对于3V系统,设置BOD电平为2.7V。然后允许BOD检测。 

    这样,一旦AVR的供电电压低于BOD电平,AVR进入RESET(不执行程序了)。而当电源恢复到BOD电平以上,AVR才正式开始从头执行程序。保证了系统的可靠性! 

    原因分析如下: 
    AVR是宽电压工作的芯片,当电压跌至2.5V,系统程序还能工作。这是有2个可怕的现象可能出现, 
    1。外围芯片工作已经混乱,AVR读到的东西不正确,造成程序的执行发生逻辑错误(不是AVR本身的原因)。 
    2。当电源低到临界点,如2.4V时,并且在此互上互下的,AVR本身的程序执行也不正常,取指令、读数据都可能发生错误,或程序乱飞、不稳定(AVR本身的原因,实际任何的单片机都是这样的),非常容易造成EEPROM、FALSH的破坏。有人问51怎么不会?实际上51也是这样,只是51内部没有直接写EEPROM、FLASH的指令,它的程序乱飞留不下痕迹。还有人有疑问:外挂EEPROM,掉电时怎么不会改写?实际是外挂EEPROM,当电压低于4V(2.7V)时,它已经不工作了,程序去改内容也改不了。而AVR内部的东西在临界电压时都能工作,但非常不稳定。 

    AVR的BOD功能必须要使用,我早期使用51时,凡是产品外部都要使用电源监测芯片,现在AVR自己本身就有该功能,一定要使用。


    展开全文
  • 经验分享——EEPROM读写及数据管理

    千次阅读 2015-05-07 23:22:49
    (1)片内集成的感觉挺便宜的,和MCU一起卖的,对成本要求严格的,写次数很少的场合一般会考虑,至少能省个2、3毛钱吧; (2)缺点的话,可能擦写次数、稳定性没有外挂的专用芯片厉害; 2)
    1)有关 芯片内部自带的E2PROM


    有的资深的工程师可能不是很愿意用MCU自带的E2PROM,大概是这些家伙上过什么当、受过骗还是什么的。简单说一下优缺点吧:


    (1)片内集成的感觉挺便宜的,和MCU一起卖的,对成本要求严格的,写次数很少的场合一般会考虑,至少能省个2、3毛钱吧;
    (2)缺点的话,可能擦写次数、稳定性没有外挂的专用芯片厉害;

    2)有关常用的外挂E2PROM

    如果是学生或者刚从学生时代走来的人们,大概也就知道ATMEL 24C0X系列吧,就好像我毕业的时候以为世界只有51和AVR,开个玩笑!
    工程师主要考察E2PROM的参数无非就是擦写次数、功耗、稳定性、价格,其中10万次擦写次数和 100万次擦写次数正在较量,至于从工程师的角度考虑 擦写次数自然是没有上限最好,太低的擦写次数会让程序员死很多脑细胞。
    3)有关E2PROM的数据管理

    (1)操作注意事项:分页操作需要有5ms延迟等待时间才可以(以类AT24C04的产品为例),也就是模块化程序设计中,在写数据之前、写数据完毕后、度数据之前、读数据之后都需要考虑加5ms的延时时间。本来IIC的读写速率就不是很高,外加这些延迟一定会势必影响系统设计的实时性,但也不得不从读写性能的角度出发。


    (2)上拉电阻的选择:出于稳定性考虑,WP、SDA、SCL引脚都会设置上拉电阻,常用的电阻值为 4.7K 、10K电阻,个人比较推荐4.7K。

    (3)硬件IIC与软件模拟IIC的比较:对MCU资源不是很敏感的应用,都会考虑软件模拟的方式,毕竟这个移植起来真的很方便,只有第一做软件部分的时序、保护性设计作为足够好,后面拿过来修改时钟就可以直接,确实方便。

    (4)默认参数的写入:设置新E2PROM的时间戳标志,每次系统启动时检查这个时间戳和MCU自身存储的时间戳是否一致,不一致则初始化整个E2PROM为默认参数;当然软件程序的升级,这个时间戳表示也有必要做更改。

    (5)数据容错和管理
    把数据以有意义的数据块作分类管理,在数据的块的头、位加固定标识和CS/CRC校验 模式,格式如
      
    数据块开始字
      
    数据长度
    数据
    校验
    结束
    0xA5
    Length
    Byte0---ByteN
    CS/CRC
    0x5A

    实际用于产品中,可以挑选这个格式内容里面的部分内容使用,比如去掉结束符等。
    个人之所以建立写入开始字、结束字,原因是方便最好读出来的数据做数据格式检查,确认写入、读出的数据可靠性最高。
       为增强实际的可靠性,在需要写入的时候,可以在写入后,再读出来进行数据的比对,确认写入是否正确;或者在需要读出的时候,读两次、或者多次,检查每次的数据是否一致。
       对于出现异常的数据,最好有容错机制,可以回到默认状态值,不至于系统此时因为某个参数改变的崩溃。

    (6)实际底层操作是否需要关闭主程序的中断:一般按照上述(5)操作,有多次冗余操作设计,可以不关闭主程序中断。而且,IIC为等待型操作,一般不会因为系统延迟导致时钟脉宽拉长,影响字节写入、读出。

    (7)E2PROM擦写次数的延长: 如果现在手上的E2PROM的擦鞋次数是10万次,项目要求为100万次,且E2PROM内有很多空闲字节的没有使用。

    可以这样操作,将数据整理好,以数据块的方式存储,一组数据分10个块地址存储,每次写完后转移到下一块写,即10次写操作中每个物理的数据存储地址只操作了1次。 注意此时的写块数据的指针不能单独存、操作,不然这个字节的操作频率高,也就受到10万次的限制,这个关键的链子在10万次的时候掉了,其他字节也就挂了。这个表征操作哪个块的指针或者说标示符,当然也需要是移动的,至于具体怎么实现,就是见仁见智的事了。
    展开全文
  • AVR单片机的多数型号都有芯片内置的EEPROM,这些EEPROM可以用来保护芯片掉电后要保存的数据。对于ATmega16来说,芯片内置的EEPROM的...本实例就利用WINAVR中自带的EEPROM读写函数来对ATmega16的内部EEPROM进行读写
  • EEPROM 数据存储器 读写

    千次阅读 2017-02-28 09:31:18
    1、用内部EEPROM记录CPU启动次数,并在PB口上显示出来 (8位LED来显示十六进制) 2、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)短路块。 3、通过此实验,可以对对内部EEPROM有个初步认识,了解EEPROM
    /*******************************************************************************
    1、用内部EEPROM记录CPU启动次数,并在PB口上显示出来
    (8位LED来显示十六进制)
    2、进行此实验请插上JP1的所有8个短路块,JP7(LED_EN)短路块。
    3、通过此实验,可以对对内部EEPROM有个初步认识,了解EEPROM读写函数的操作。
    4、可通过复位键让系统重启,这样就可以更新显示MCU启动的次数了。
    *******************************************************************************/
    #include <iom16v.h>
    #include <macros.h>
    /*-----------------------------------------------------------------
    函数名称: void AdcInit(void) 
    函数功能: EEPROM读取函数
    说    明:addr:地址;number:长度;p_buff:读出数据存放指针
    -----------------------------------------------------------------*/
    void eeprom_read(unsigned int addr, unsigned char number, unsigned char *p_buff) 
    {
        while(EECR & (1 << EEWE));
        EEARH = 0x00;
        while(number --) 
        {
            EEARL = addr ++;
            EECR |= (1 << EERE);
            *p_buff++ = EEDR;
        }
    }
    /*-----------------------------------------------------------------
    函数名称: void AdcInit(void) 
    函数功能: EEPROM写入函数
    说    明:addr:地址;number:长度;p_buff:写入数据存放指针
    -----------------------------------------------------------------*/
    void eeprom_write(unsigned int addr, unsigned char number, unsigned char *p_buff) 
    {
        EEARH = 0x00;
        while(number --) 
        {
            while(EECR & (1 << EEWE));  //EECR为EEPROM控制寄存器,EEWE写使能
            EEARL = addr ++;            //EEAR为EEPROM地址寄存器
            EEDR = *p_buff ++;          //EEDR为EEPROM数据寄存器
            EECR |= (1 << EEMWE);
            EECR |= (1 << EEWE);
        }
    }
    
    /*主函数*/
    void main(void) 
    {
        unsigned char temp;
    
        DDRA = 0x00;                /*方向输入*/
        PORTA = 0xFF;               /*打开上拉*/
        DDRB = 0xFF;                /*方向输出*/
        PORTB = 0xFF;               /*电平设置*/
        DDRC = 0x00;
        PORTC = 0xFF;
        DDRD = 0x00;
        PORTD = 0xFF;
    
        DelayMs(250);               /*启动延时*/
        eeprom_read(0x10, 0x01, &temp);     /*读出记录*/
        PORTB = ~temp;             /*显示记录*/
        temp ++;                /*刷新记录*/
        eeprom_write(0x10, 0x01, &temp);        /*写入记录*/
    
        while (1);
    }
    
    
    展开全文
  • STM32单片机内部EEPROM读写

    千次阅读 2015-07-23 15:33:00
    STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块...但从EEPROM使用方式看,其不适用于被反复修改的数据存储使用,一般作为配置参数,其修改次数往往是比较少量的。  

    STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块区域被开放出来专门用作EEPROM操作而已。STM32L的EEPROM使用寿命设计为100000次擦写以上,容量为2K-4K,这对于一般设备的参数存储来说是非常理想的。但从EEPROM使用方式看,其不适用于被反复修改的数据存储使用,一般作为配置参数,其修改次数往往是比较少量的。

        STM32L的EEPROM和FLASH是统一编址,操作共用同一个读写电路,所以在EEPROM读写的时候STM32L核对于FLASH的一切访问和操作都将暂停,只有当EEPROM的操作完成后,才继续执行后续代码,在这期间只有EEPROM的读写电路工作,CPU处于挂起状态。

        读操作,和FLASH以及内存一样,EEPROM的数据读取直接用总线读周期读出即可,不需要进行额外操作和设置。

    1. #define EEPROM_BASE_ADDR    0x08080000    
    2. #define EEPROM_BYTE_SIZE    0x0FFF  
        以上定义EEPROM区的起始位置和大小,给定偏移量之后,可以按字节/半字/字/双字方式读出,但要注意的是最好偏移地址都按四字节对齐,以免产生总线访问错误或是取不正确:

        

    1. /*------------------------------------------------------------ 
    2.  Func: EEPROM数据按字节读出 
    3.  Note: 
    4. -------------------------------------------------------------*/  
    5. void EEPROM_ReadBytes(uint16 Addr,uint8 *Buffer,uint16 Length)  
    6. {  
    7.     uint8 *wAddr;  
    8.     wAddr=(uint8 *)(EEPROM_BASE_ADDR+Addr);  
    9.     while(Length--){  
    10.         *Buffer++=*wAddr++;  
    11.     }     
    12. }  
        
    1. /*------------------------------------------------------------ 
    2.  Func: EEPROM数据读出 
    3.  Note: 
    4. -------------------------------------------------------------*/  
    5. void EEPROM_ReadWords(uint16 Addr,uint16 *Buffer,uint16 Length)  
    6. {  
    7.     uint32 *wAddr;  
    8.     wAddr=(uint32 *)(EEPROM_BASE_ADDR+Addr);  
    9.     while(Length--){  
    10.         *Buffer++=*wAddr++;  
    11.     }     
    12. }  


        以上方法使用字节和字方式读出,在后面方法中,在一个字的存储空间内只使用了16个位,另16位不用,这样以避免产生对齐问题。

        EEPROM的编程比读操作要复杂的多,本质上来说,擦除操作和写入操作是一样的,擦除只是在相应的地方写入0x00000000,但在STM32L的实现上,根据其手册说明貌似把这种擦除和写入区分开了,当写入0x00或0x0000或0x00000000时,自动执行一次擦除操作,在值为非0时,才执行一次所谓的写入操作。数据的写入过程先要对EEPROM进行解锁,这通过对特殊寄存器写入特殊序列实现,然后在写入之前进行擦除操作,其擦除是按字/ 双字/页进行的,推荐使用页擦除方式进行,先把参数读到内存,并修改,再进行页擦除,最后将参数写回,这种方式比较通用,否则很容易出现地址对齐或长度问题。在数据擦除完成之后,即可进行写入,每写一字节/半字/双字,都需要判断其是否写入完成,这和内部高压擦写电路有关,只有在上次操作完成之后再进行其它操作才有意义。最后,对EEPROM进行加锁,以保护数据。

     

        下是手册给出的解锁命令码:

        

    1. #define PEKEY1  0x89ABCDEF      //FLASH_PEKEYR  
    2. #define PEKEY2  0x02030405      //FLASH_PEKEYR  
        以下分别实现按字节和字方式写入:   

    1. /*------------------------------------------------------------ 
    2.  Func: EEPROM数据按字节写入 
    3.  Note: 
    4. -------------------------------------------------------------*/  
    5. void EEPROM_WriteBytes(uint16 Addr,uint8 *Buffer,uint16 Length)  
    6. {  
    7.     uint8 *wAddr;  
    8.     wAddr=(uint8 *)(EEPROM_BASE_ADDR+Addr);  
    9.     DIS_INT  
    10.     FLASH->PEKEYR=PEKEY1;                //unlock  
    11.     FLASH->PEKEYR=PEKEY2;  
    12.     while(FLASH->PECR&FLASH_PECR_PELOCK);  
    13.     FLASH->PECR|=FLASH_PECR_FTDW;        //not fast write  
    14.     while(Length--){  
    15.         *wAddr++=*Buffer++;  
    16.         while(FLASH->SR&FLASH_SR_BSY);  
    17.     }  
    18.     FLASH->PECR|=FLASH_PECR_PELOCK;  
    19.     EN_INT  
    20. }  
        
    1. /*------------------------------------------------------------ 
    2.  Func: EEPROM数据按字写入 
    3.  Note: 字当半字用 
    4. -------------------------------------------------------------*/  
    5. void EEPROM_WriteWords(uint16 Addr,uint16 *Buffer,uint16 Length)  
    6. {  
    7.     uint32 *wAddr;  
    8.     wAddr=(uint32 *)(EEPROM_BASE_ADDR+Addr);  
    9.     DIS_INT  
    10.     FLASH->PEKEYR=PEKEY1;                //unlock  
    11.     FLASH->PEKEYR=PEKEY2;  
    12.     while(FLASH->PECR&FLASH_PECR_PELOCK);  
    13.     FLASH->PECR|=FLASH_PECR_FTDW;        //not fast write  
    14.     while(Length--){  
    15.         *wAddr++=*Buffer++;  
    16.         while(FLASH->SR&FLASH_SR_BSY);  
    17.     }  
    18.     FLASH->PECR|=FLASH_PECR_PELOCK;  
    19.     EN_INT  
    20. }  
        以上代码中,在写入数据之前先关闭系统中断DIS_INT,写入完成之后打开系统中断EN_INT,这样避免在执行写操作的过程中被中断过程所打断,引起CPU异常或锁死,在在使用中一定要注意。在MDK环境中,两个可以这样定义:

        

    1. #define EN_INT          __enable_irq();     //系统开全局中断  
    2. #define DIS_INT         __disable_irq();    //系统关全局中断  


    展开全文
  • STC15F2K60S2内部EEPROM读写操作

    千次阅读 2018-10-17 17:18:44
    利用ISP/IAP技术可将内部Date Flash当EEPROM,擦写次数在10万次以上。EEPROM可分为若干个扇区,每个扇区包含512个字节。使用时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要...
  • STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块区域...但从EEPROM使用方式看,其不适用于被反复修改的数据存储使用,一般作为配置参数,其修改次数往往是比较少量的。 ...
  • EEPROM和FLASH的区别

    2018-11-22 15:04:13
    EEPROM和FLASH的区别: ...(2)EEPROM读写次数较多,一般超过10万次;FLASH较少,一般一万次,所以FLASH用来存储不需要经常改变的东西,如程序;而EEPROM用来存贮需要反复读写的信息,如用户设定值。 ...
  • STM32L系列单片机内部提供了EEPROM存储区域,但实质上,其FLASH也是EEPROM类型,只不过有一块...但从EEPROM使用方式看,其不适用于被反复修改的数据存储使用,一般作为配置参数,其修改次数往往是比较少量的。 STM3...
  • FRAM的学术名字叫做FERAM,利用铁电晶体的铁电效应实现数据存储,其的特点是...1、寿命,读写的次数比较多, EEPROM和flash都达不到EEFROM的读写次数; 2、功耗,同样写入64byte的数据,FRAM的功耗仅仅是EEPROM的1/10
  • EEPROM???

    2021-03-30 14:41:30
    EEPROM Electrically Erassable Programmable Read Only Memory,E2PROM。电可擦除可编程只读存储器。 一种常用的非易失性存储器,掉电...存储容量64Kbit,内部分成256页,每页32个字节,总共8192个字节,读写操作以字
  • 芯片的使用寿命、就是芯片的读写次数,在使用存储过程中最重要就是数据的可靠性,如果写进去和读上来的不一致,可能会造成很大的损失。 芯片手册上一般会注明芯片的读写寿命是多少。 如BL24C128A芯片手册上标明的...
  • 注意:EEPROM也是有读取次数寿命的,不要过于频繁的读写;大小计算错误会导致溢出或数据重叠等问题 实例核心代码: #include <EEPROM.h> //应用头文件 //EEPROM(Electrically Erasable Programmable Read-...
  • 一般地,EEPROM存储器(如93C46/56/66系列)的擦写次数为10万次,超过这一极限时,该单元就无法再使用了。但在实际应用中,可能有些数据要反复改写。这时,可通过变址寻址的方式来突破EEPROM存储器的擦写寿命极限。 我们...
  • 基础实验7-E2PROM读写实验 实验目的: 掌握芯片内部E2PROM的使用方法。 (注意:因为是按照‘字’的方式写入的,...文章目录基础实验7-E2PROM读写实验一、实验代码二、EEPROM_Read函数三、HAL_FLASHEx_DATAEEPROM_Unlock
  • 24C02介绍 24C02 现在基本是开发板的标配,对于需要掉电存储的应用来说... Flash读写次数EEPROM 少很多。 容易误操作,把 Flash 内部的代码擦除掉。 影响中断的响应时间。 24C02 有 256 字节的数据,一般说来...
  • ex6 E2PROM读写实验 实验目的:掌握芯片内部E2PROM的使用方法。 (注意:因为是按照‘字’的方式写入的,所以写入的地址必须是‘4’的整数倍,否则会进入hard fault) 实验内容:将LED灯闪烁次数写入E2PROM,每次...
  • “采用FRAM 的RFID的读写次数可以达到1012,而采用EEPROM 的RFID的读写次数多只有一百万次,这就是为何高速收费处偶尔会出现数据读不出的问题。”富士通半导体(上海)有限公司市场部经理蔡振宇指出:“在RFID中嵌入...
  • “采用FRAM 的RFID的读写次数可以达到1012,而采用EEPROM 的RFID的读写次数最多只有一百万次,这就是为何高速收费处偶尔会出现数据读不出的问题。”富士通半导体(上海)有限公司市场部高级经理蔡振宇指出:“在RFID...
  • 开车的朋友可能会有这样的经历,当您经过高速公里收费站时,您的交通收费卡在进站和出站时偶尔会无法读取,原因是您的交通卡使用的频率比较高,超过了它的...“采用FRAM 的RFID的读写次数可以达到1012,而采用EEPROM...
  • Arduino提供一种功能,把信息持久的保存在EEPROM中,直到它死信息可能还在。要使用这一功能,首先需要引用外部库:...因为EEPROM有一定的读写次数(10万次左右),所以不要过于频繁的更新这些内容。一般,我们可以将...
  • stm32例程.rar

    2020-05-11 15:25:54
    10,74HC595串转并控制小灯 11,74HC165并转串控制小灯 12,外部中断 13,按键智能控制EEPROM读写(LCD显示) 14,EEPROM记录开关机次数(24C16应用) 15,AD-DA 16,LCD1602 17,定时器 18,串口通信 19,DS18B20 ...
  • 但由于其读写速度与读写次数的限制,使得EEPROM不能完全代替RAM。  三是采用备份电池,掉电后保护系统中全部或部分数据存储单元的内容。  显然,上述第三种方法是比较可行的。实际应用中,往往采用内置锂
  • 区别于EEPROM如AT24C04,除了操作时序那方面,作用上的区别是在于铁电的读写速度较快,可读写次数多,可保存年限长,价格较之稍高。 1.2 通信方式 IIC 二.使用环境及出现问题 2.1 环境 芯片: STM32F767IGT6 ...
  • 关于ATSHA204a的使用流程

    千次阅读 2019-03-20 17:30:59
    ATSHA204含有一个EEPROM 和 一个 SRAM EEPROM :包含 1个 Data Zone(512Bytes) :一般用来...1)作为密钥使用 还是简单的数据,作为密钥是否可读可写 是明文读写 还是 加密读写 使用的次数 2)存储有9位的芯片唯...
  • 摘要:    目前的Flash有nand和nor两种,我们可以认为flash是EEPROM的变种。intel在1988年开发出nor flash技术,彻底改变了EEPROM一统天下的... <br />1、读写次数较差  MLC读写效能更
  • FRAM 铁电存储器

    2015-07-01 13:10:00
    铁电存储器与传统存储器的区别。... 优点:读写速度快,读写寿命无次数限止。 缺点:掉电会丢失数据。 二:现在非易失性存储器包括EEPROM和Flash,不过它们都是在ROM技术上发展而成的。 优点:掉电数据会保存。...
  • 驱动开发 字符设备,块设备,网络设备 字符设备 以字节流的方式访问, ...flash 擦写次数有限,一百万次,容易有坏块 块设备 能随机访问 以”块“为单位进行访问 块大小一般为512字节 块的大小由硬件决定 ...

空空如也

空空如也

1 2 3
收藏数 45
精华内容 18
关键字:

eeprom读写次数