基于STM8S微处理器内部EEPROM的数据存储方法

分享到:

 EEPROM(Electrically Erasable Programmable Read-Only Memory)指的是电子擦除式只读存储器,它是一种非易失的存储器,供电消失后,存储的数据依然保留,要擦除或改写其中的内容只要以电子信号的方式直接操作即可。EEPROM广泛应用于单片机数据存储领域,主要形式是串行I2C总线控制独立EEPROM元器件。随着单片机的集成度越来越高,许多芯片厂家在单片机的内部集成有一定数量的EEPROM存储空间,如Microchip、ST等等。本文首先介绍了比较典型的串行EEPROM和集成EEPROM的单片机并比较了各自的优点与缺点,并在分析单片机数据存储特点的基础上引用实例说明如何采用STM8S内置EEPROM设计数据存储。

  1.器件简介

1.1.STM8S系列微处理器

ST公司的STM8S系列通用8位微处理器采用STM8内核,具备真嵌入式EEPROM和可校准RC晶振,大大降低了产品的研发和生产成本。以STM8S105xx为例,该微处理器是具备16MHz时钟主频的8位单片机。最大可提供32K字节ROM和2K字节RAM。其片内的真EEPROM存储器最大1K字节,至少可以擦写循环30万次。同时具备四路定时器和丰富的外设接口,如UART、SPI、I2C等等。

1.2.串行EEPROM

串行EEPROM中,较为典型的有ATMEL公司的AT24CXX系列产品。AT24CXX支持I2C总线数据传送协议,最高时钟频率400KHz,器件连接到总线上串行器件不仅占用很少的资源和I/O线,而且体积大大缩小,同时具有工作电源宽、抗干扰能力强、功耗低、数据不易丢失和支持在线编程等特点。

1.3.不同存储方式的比较

表1中罗列了三种不同存储方式的不同,由于片内EEPROM和串行EEPROM的存储介质均为EEPROM,所以其擦写的操作时间是差不多的,不同之处是串行EEPROM在进行写操作时会受到I2C总线速度的影响。相比而言读时间则是片内器件占有优势,因为片内EEPROM是直接访问片内地址的方式读出数据,效率上比总线方式访问会快很多。

表 1两种EEPROM的比较

  2.单片机存储的特点

单片机的数据存储模式与一般计算机系统的有所不同,主要特点有数据量一般不大,很少每次刷新整个存储区域,如果是作为记录作用的单片机系统,一般数据呈线性方式增长,少有删除或插入的操作。另一方面,单片机存储对数据的安全性要求比较高,要求至少有两个以上的热备份数据以防止意外造成的数据丢失。因此,在实际应用场合时就需要考虑如下几个方面的因素:存储的数据量的大小;每次更新数据量的大小;数据量更新的频度;是否为增量数据的存储;对于数据校验和冗余的考虑。

  3.应用实例

本节以应用实例分析不同场合的数据存储应用。以下应用方案的主控单片机均采用STM8S105K4,片内集成1K字节EEPROM存储器。

3.1.智能电表应用

在智能电表应用中的一个重要的问题就是数据的保存和数据的安全,不仅要求数据要及时的保存而且要求所保存的数据不能有错误,所以重点需要考虑的是数据的冗余和校验。出于成本和数据安全的考虑,可以采用两种方案实现电量计量,一是当电量有变化时周期性将当前的电量存入EEPROM中;二是只在意外断电时将当前电量存入EEPROM中。第一种方案需要考虑的是EEPROM的擦写次数是否能满足使用要求。第二种方案需要考虑的是备用电源的供电时间能否满足存储时间的要求。

前一种方案,单片机每隔10秒向EEPROM存入写入一次当前的电量,如果当前电量与前一次写入的值相等则不写入以节约EEPROM的写入寿命。存储时采用不固定的存储地址,从0地址开始每次写入两次数据,占用8个字节,作为备份。下次写入时将写入地址向后移动2个数据的宽度,即8个字节。循环写入整个EEPROM的空间,如此可以计算出(1024 * 300,000次) / 8 = 38,400,000次,每隔10秒存储一次大约可以使用12年。

后一种方案,单片机的ADC管脚连接电压采集转换,利用采集到的ADC值判断当前主电源的供给状况。一旦ADC值降低的某一阀值则认为主电源断电,开始采用备用电源供给。备用电源采用大电容的方案,单片机写入双备份8个字节的时间大约为50ms,写入时的电流约为2mA,单片机的运行电流(5V)约为8mA。假设电容从5V放电到3.8V,通过计算可以得知0.05s * 0.01A / (5V - 3.8V) = 417uF。故在系统的供电电源上并联两个470uF的电容即可完全满足主电源掉电后的存储电源供给。

3.2.车载收音机应用

车载收音机的应用方案需要考虑两块存储空间的安排,一块是寄存 器表区域,存储收音机调谐器寄存器表的信息。数据量大约68个字节,这部分存储信息在出厂时写入后禁止修改。一块是用户参数值区域,用于保存收音机运行时用户设置值的空间。大约需要100个字节,其中包括开关机信息、收音机频率信息、音量音色信息等等,存储时不会一次刷新整片存储区域,一般只会修改几个字节的信息。

按照车载收音机存储空间的安排,可以将1K的EEPROM空间按照128个字节一块的大小分割成8个块。第0块用于存储寄存器表,出厂时一次写入后禁止改写。从第1块到第7块组成一个循环链表作为用户数据的存储,每次上电选择相邻的两个块作为当前存储空间,下一次上电选择的两个存储空间向后移一个。如第一次上电选择1、2两个块,第二次上电选择2、3两个块,以此类推,使得EEPROM的每个块的擦写次数平均化。EEPROM空间分配如下图1所示,开机流程如下图2所示,遍历每个块直到找到有效的块并读出上次断电前存储的设置值,如果直到第7块都没有找到有效块则载入默认值。确定有效的设置值后初始化写入主数据块和备份数据块一次,程序运行时如果有设置值的改变则依次修改主数据块和备份数据块。如果遇到意外断电,至少可以保证一个数据块中的内容是合法有效的。

图 1存储块分配

图 2程序开机流程

  4.总结

综上所述,本文介绍了两种常见的单片机存储应用实例,均通过STM8S内置EEPROM实现存储。设计的方案符合设计要求并具备低成本、抗干扰等优点,适用于一般单片机存储的应用。

更多资讯和精彩内容请移至:
STM8单片机中文官网
意法半导体/ST/STM

继续阅读
三维集成数据存储与计算 超高性能异构AI芯片熠熠生辉

当前,中国乃至全球AI芯片产业仍处于产业化早期阶段,执行人工智能算法的专用芯片和集成了人工智能神经网络处理功能的通用芯片将是人工智能芯片领域热点。而每一种AI芯片的出现,都是一次技术、成果、算法等取得进展的集中展示。

华为云助力全国新冠肺炎定点收治医院应对数据存储困境

从1月下旬开始,随着新型冠状病毒肺炎疫情的发展,全国各省市医院为了及时完成对患者的诊断和排查,肺部CT影像拍摄的需求大幅增长。

人工智能可实现更为高效的下一代数据存储

如今,数据生成的速度远超人们的想象。在以前,人是数据产生的主要来源;而现在,图像设备、传感器、无人机、互联汽车、物联网设备及工业设备组件等,以多样的途径生成各类格式的数据。 然而,我们不应该将数据与信息混为一谈,对两个概念进行区分至关重要。

工信部公布28个公链评估对象:含比特币、以太坊等

全球公有链技术评估工作由赛迪(青岛)区块链研究院组织实施,联合赛迪智库、中国软件评测中心等多部门共同协作开展,其目的是客观评估全球公有链技术发展水平,准确把握区块链技术创新趋势,从而为政府、企业、科研机构、技术开发者提供更加专业的技术咨询等服务。

芯片堆叠技术,或将颠覆整个半导体现有格局

作为几乎所有日常电子产品最基础的一个组件,微芯片正出现一种很有意思的现象。通常又薄又平的微芯片,如今却堆叠得像薄煎饼那样,由二维变成三维——给电子设备带来重大的影响。