EEPROM存储数据耗时问题探究分析*
2023-08-28石永慧
石永慧
(山西职业技术学院,山西 太原030006)
0 引言
EEPROM ,全称为Electrically Erasable Programmable Read Only Memory[1]。它是一种只读存储器,带电之后,可进行擦除,亦可进行编程。这种存储芯片具有的特点是可擦可编程,并且在掉电之后数据不丢失。存储器的特性决定了它的广泛应用。从市场规模来看,EEPROM存储器芯片主要应用于消费电子、工业以及汽车市场等领域。
消费电子是EEPROM存储器芯片需求量最大的细分市场,其次是汽车电子市场和工业电子市场,2018年全球消费电子EEPROM存储器芯片和汽车EEPROM存储器芯片市场需求量分别达到了21.63亿颗和17.29亿颗[2]。随着5G智能手机、通讯、计算机及周边等消费电子的发展、汽车产品电子化以及工业电子需求的提升,EEPROM存储器芯片市场在不断增长,因此,对存储器数据的读取速度也成为了一个亟待解决的问题。针对这一问题,本文以EEPROM存储器在工业领域中的应用,提出了一种加快EEPROM存储器读写方法,提高存取时间,解决了工业中时间余量问题,经过实验验证,该方法可行有效。
1 研究背景
某嵌入式压力处理传感器软件的定时周期为12.5 ms,在EEPROM存储器存储故障字时,由于存储数据读取时间太久,不满足时间余量的要求。为了缩短故障字数据存取时间,满足时间余量的要求,针对这一问题,探究影响故障字数据存储时间的因素,本文做了如下探究:
1) 使用同一类型的EEPROM存储器芯片,在不同的产品中烧注相同的故障字存储软件,数据存储耗时时间是否存在差异;
2) 故障字数据存储时间久和存储芯片本身特性是否相关;
3) 是否存在其他的芯片影响了数据存储时间。基于以上问题,本文做了相关的实验,提出了缩短故障字数据存取时间的方法,并验证了方法的准确性和可行性。
2 探究方法
结合上述提出的问题,考虑到单一变量的原则,本文存储的故障字数据均是相同的,在此基础上,本文进行了两组实验,探究并分析影响故障字数据存储时间的原因。两组实验的产品硬件状态均相同,通过两组实验得出数据,分析存储器存储数据耗时原因,实现存储器快速存储数据。
2.1 产品硬件状态
对某嵌入式压力处理传感器软件进行实验,该产品的硬件状态如图1所示。
图1 产品硬件状态
由图1可以看到,该嵌入式压力处理传感器中EEPROM存储器与收发器相连通,收发器接收到故障字数据后存储于EEPROM存储器中。
2.2 原软件实现方法
2.2.1 原软件设计方法
原软件设计中,存储数据分为两部分,一部分是索引信息,存入EEPROM存储器的第0页;另一部分是故障字信息,从第1页开始存储。在索引信息存储之后,延时20 000次,之后进行故障信息的存储。在每次存储索引信息或者故障信息数据时,首先将片选信号置低,将故障信息存入锁存器,之后存储器进行内部搬运,将数据搬运至存储器,搬运完成后,片选信号置高,存储数据流程结束。
2.2.2 实验测试
1) 测试时间:该状态下产品的运行时间进行测量,测试时间如表1所示。
表1 某嵌入式压力传感器软件在不同测试时机的测试时间
由表1可知,整个定时周期耗时11.37 ms,不满足30%时间余量。
同时,对其他三个产品的周期运行时间进行了测试,测试时间如表2所示。
表2 其他产品不同测试时机的测试时间
由表1和表2得知,烧注相同的故障字页写软件,某嵌入式压力传感器软件的索引信息存储操作时间明显高于其他产品的索引信息存储操作。
2) 脉冲分析:因为索引存储操作在第一次读取RDY状态时,EEPROM仍在片选,并没有开始进行内部搬运操作,主设备读取的RDY状态并非实际的EEPROM返回的状态,而是获取了原来的SPISOMI引脚脉冲。此时的SPISOMI引脚脉冲为收发器的高组态(收发器的高组态为高),故造成了一种EEPROM正在进行存储操作的假象。在第一次获取完RDY状态时,EEPROM无片选,内部开始存储操作,进入新一轮读取RDY状态,直到存储操作结束,RDY状态为空闲。
3) 时序图:原软件设计方法的时序图如图2所示。
图2 原软件设计的时序图
由图2可知,该状态下相当于既正常等待了/RDY,又加了延时delay(20 000),于是,在原软件设计下存储一次数据所用的时间为3.77 ms+2.97 ms=6.74 ms,时间超长。
2.3 改进后的软件设计
2.3.1 设计方法
改进后的软件设计,数据存储实现流程如图3所示。
图3 节目监测流程图
从图3(a)可以看出,存储数据分为两部分,一部分是索引信息,存入EEPROM存储器的第0页;另一部分是故障字信息,从第1页开始存储。在索引信息存储之后,没有延时,索引信息存储结束后,立即进行故障信息的存储。由图3(b)可知,每次存储数据时,片选信号置低,将故障信息存入锁存器,片选信号置高,之后存储器进行内部搬运,将数据搬运至存储器,搬运完成后,存储数据流程结束。
2.3.2 实验测试
1) 测试时间:该方法下产品的运行时间进行测量,测试时间如表3所示。
该状态的软件删除了冗余的delay(20 000)的运行时间,在最后一次执行存储操作时,内部搬运时间可以利用时间余量来完成,故主设备不再读取的RDY状态。锁存器写操作结束即可。
2) 脉冲图:改进后软件设计的SPI接口的4个引脚的脉冲如图4所示。
图4 动态环境监测流程图
图4 数据存储波形图
由图4可以看出,在开始进行索引页存储操作和故障页存储操作时,片选出现一个上升沿,EEPROM开始进行内部存储操作。获取RDY状态,判断存储操作是否结束。当存储操作结束时,RDY状态为空闲,RDY 为0。
3) 时序图:改进后的软件对应时序图如图5所示。
图5 最终状态下时序图
由图5可以看出,由于某嵌入式压力传感器软件一个周期时间为12.5 ms,常温状态下,前一个周期第二次写到第二个周期第一次写时间间隔约为9 ms,为保证软件30%时间余量,第二次写之后不再判断/RDY。经测试,高低温状态下的运行时间与常温下相差不大,时间余量符合要求,索引信息和故障信息均可正确进行存储。
3 实验结果
在不连接传感器的情况下,周期运行时间为8.4 ms,比原来减少了2.97 ms;在连接传感器的情况下,周期运行时间为4.8 ms,符合余量要求。
4 方法验证
4.1 产品1进行验证
1) 时序图:产品1原始软件设计下的时序图如图6所示。
图6 产品1原始软件设计下时序图
产品1原始软件设计和某嵌入式压力传感器软件原始设计方法相同,产品1原始设计时序图如图6所示,产品1软件在CPU把数据存入EEPROM的寄存器(临时)后,也没有及时把/CS置1,由于发数据存储指令完成后继续发冗余指令时引脚处于高阻态并被下拉,导致获取读值为0,软件判断EEPROM已经写完,结束获取/RDY信号循环,将/CS置1,此时EEPROM真正开始将寄存器中的数据写入存储器地址(长期)。从EEPROM读取数据发现并没有写入,于是软件加delay(20 000),使EEPROM完成存储操作。
按照更改后的软件,对产品1进行测试验证,由采集到的脉冲可以发现,在索引页内部存储操作执行结束后,马上进入故障存储操作,获取SOMI上的数据进行解析,数据正确,且所有数据正常存储操作均可完整执行。故无需再进行delay(20 000)的操作。
4.2 修改硬件状态后的验证
在某嵌入式压力传感器的硬件上增加下拉电阻,将设计的原软件注入该嵌入式压力传感器中,对引脚脉冲进行分析。
4.2.1 SPI接口的引脚脉冲
由于存在下拉电阻,故主设备认为/RDY=0,出循环,造成了时间短的假象。之后通过软件delay(20 000),实现EEPROM写入存储器地址,用时3.5 ms。
另外,将硬件状态更改为DSP只连接EEPROM,烧注不同的软件,均证明上述情况及结论。对不同硬件状态加下拉电阻,烧注不同的软件,不同状态下均可证明上述结果及以下结论。
测试过程中发现,国产EEPROM芯片比进口芯片存储速度慢一些,原状态软件中的dealy(20 000)并不适合所有产品。
5 结论
本文通过对原软件设计采集数据的分析,找出影响EEPROM存储数据耗时的因素,通过对原软件设计方法的改进,并且对该方法进行验证。实验结果证明,使用该方法进行数据存储,时间大大缩短了,满足了时间余量,并且数据正确有效。比原始的算法更加快速、高效,并且通过实验测试结果证明了该算法的合理性和可行性。