相信很多单片机的初学者都用过DS1302,它可以做为实时时钟,外接一片纽扣电池,即便主电源掉电,纽扣电池也能供它跑个几年,而且耗电量极低。
到底有多低?如下图所示:
供电电压2V的时候,电流只有300nA。
当然,今天我们要说的并不是它的时钟功能,而是另一个功能:
DS1302内部有31个8bit的中间结果暂存器(简单来说就是31个8bit的RAM),也就是说,可以存31个char或者uchar型的数据。而且,只要有纽扣电池,掉电数据也不丢。
那么,这个功能有什么用呢?
可能年纪较大的工程师或者经验多点的工程师应该猜到了,这是早期时候用来保存控制过程的中间数据的!
这是什么意思?
EEPROM大家都用过吧?掉电后数据不丢。但你知道什么时候掉电吗?
不要跟我说每隔一段时间刷一遍EEPROM,那样没几天它就挂了。
所以需要一个掉电检测电路,当检测到外部停电的时候,利用电容里的剩余电量把重要数据存入EEPROM。
但是用RAM的话,不用考虑使用寿命的问题,因为RAM的寿命几乎是无限的。偷懒一点的方法,你可以每隔一段时间刷一遍RAM,把重要数据存进去。因为DS1302有电池供电,即便掉电也不会丢数据,反而还省了掉电检测电路。
当然,如果刷到一半的时候停电了,这种情况还是要考虑一下。
今天提到的这个东西,并不是说用RAM的方式比EEPROM的方式好。相反,RAM的方式现在已经很少用到了,但并不是说不可用。
合适的才是最好的,假如一台设备需要实时时钟,恰好又需要掉电保存几个数据,那么看来DS1302还是可以选的。