我现在的系统就是计量芯片加上zigbee,芯片型号为CC2530,CC2530内部带有mcu.现在有个问题:就是掉电时如何保存电量信息?我需要实现的功能是要统计出一个月中每天的用电量和一年中每个月的用电量,然后在电视上用曲线和柱状图表示出来。所以要保存时间信息和电量信息到存储器中。
有下面几个方法:
1、使用2530内部的Flash。擦写次数为2万次。如果来一个脉冲就向Flash写一次,很快就会将Flash写坏。现在设想1个小时往Flash里面写1次,只能写2.28年。或者1度电的时候往Flash里面写一次,假设家庭用户1年消耗1万度电,也只能写2年。 然后再设想,在Flash数据区开5个块,设计程序计算某个单元的擦写次数,到一定次数后(比如说1.5万次),停止向这个区写入数据,自动写到下一个块。这样加起来大概有7.5万次,应该可以写7年,和产品寿命差不多了。 因为对计量精度不是很高,在掉电的时候,SRAM中的脉冲计数可以直接丢掉。 这个方法看起来应该可行,但是我不太清楚软件上实现是否很复杂。
2、外加一片EEPROM。擦写次数为100万次,价格大约1块钱。我可以按每10分钟把电量信息往EEPROM写一次,够用19年。但是EEPROM写入数据的时候有10ms的写等待时间,如果采用这个方法我就要外加掉电检测电路,使用大容量的电解电容,空间太大,在壳子里不一定能放下。另外CC2530,没有硬件I2C,是使用IO模拟的,已经挂上了RTC时钟芯片。如果再挂上一片EEPROM,用IO模拟的I2C会不会有时序上的问题。我不太清楚。
3、使用FRAM。可以实时的将电能脉冲写入FRAM.如果使用I2C接口的,也会遇到上面说的用IO口模拟I2C的问题。并且FRAM价格较贵,FM24CL04B,4Kbit的就要4块钱左右。
请您帮忙看下,哪种方式会更好一点。谢谢。 |