RIoTboard和大多数低成本ARM开发板一样,都有片上RTC,但是板子的设计者并没有提供连接备用电池的方法,这让片上RTC几乎没有什么意义。因为每次你关闭电源,数据和时间都会丢失,再次打开电源后,板子的日期会回到45年前。
这显然是个问题,因为很多事情都需要有一个有效的日期和时间。比如有时我们需要定时打开和关闭某些东西,或者根据时间来记录传感器的数据。因此有一个基本准确的日期和时间非常重要。
有几个不同的方法来获取我们需要的日期和时间信息。
1. 用Internet NTP服务器同步时间
2. 用GPS接收器同步时间
3. 每次启动手动设置时间
4. 用电池供电的RTC来保持本地时间
这些方法都可以使用。但是方法1-3有一些缺点。假如遇到大范围停电,在电力恢复时交换机启动、DSL线路重新同步等,到恢复Internet连接可能需要一些时间。与之类似,GPS也可能需要时间来重新锁定卫星。最后如果我们是手动设置时间,那么最好在我们工作的时候永远不要断电。
当然并不是说第4种方法可以解决所有的问题,但是它能够在断电后直到恢复时间同步这段时间起作用。
在其他板子上,比如CubieBoard,BeagleBone Black,Sabre-Lite等,设计者倾向于将RTC后备电源引脚直接连接到主电源层上。这让我们完全失去了添加电池的机会。
当第一次看到RIoTboard的原理图时,我又燃起了希望
看起来可以去掉R30- 假如能在板子上找到的话 – 然后添加一个电池!
但是最终我们没有必要这样做。
RIoTboard有一个Freescale MMPF100电源管理芯片。该芯片的数据手册指明了芯片有一个针对纽扣电池的输入,并且能够帮我们处理细节上的事情。当然另一个问题是,电源管理芯片上的纽扣电池输入是否被简单的连接到主电源上?
幸好不是,下面是证据:
好了,现在找到板子上的C75,旁边有标注。
元件确实很小。
现在用放大镜和烙铁把连线焊接到上面,以便连接电池。
下面是焊接好的样子。
扩展接口的pin3是接地 – 焊接这里比焊接C75的另一面更容易。这些连线看起来很粗,其实这些铜绞线非常细。
连线的另一端连接电池座,像这样
现在可以启动板子并设置时钟了。
root@riotboard:~# date -s \"2014-06-02T16:58\"
Mon June 2 16:58:00 UTC 2014
root@riotboard:~# hwclock -u -w
root@riotboard:~# hwclock
2014-06-02 16:58:16 UTC -0.942526 seconds
然后断开所有电源,去喝一杯饮料,等半个小时再回来。
如果你用的3.15版内核,那么在重新上电后,在内核日志中会发现以下信息:
[ 1.484102] snvs_rtc 20cc034.snvs-rtc-lp: setting system clock to 2014-06-02 15:08:08 UTC (1401721688)
你的时钟应该从RTC获取设置信息。如果你用的Debian,那么还需要进行一些调整来避免断电时的时钟覆盖RTC提供的时钟。
更多关于RIoTboard的信息,请访问英蓓特官方网站。
RIoTboard, RTC, 电池, 英蓓特 |