电路设计:在嵌入式系统中实现实时时钟/日历功能

2019年07月12日 作者:Teardown

许多嵌入式应用需要知道时间,以便在特定的时间和日期,或针对时间戳事件,或同时依据两者执行特定的任务。执行此功能的 RTCC(实时时钟和日历)芯片问世已有数十年,但设计人员在缩减元件数目和基底面,同时最大限度减少功耗和设计时间方面一直面临着挑战。

集成式 RTCC 器件和创新式模块如今可以应对这些挑战。

本文将讨论如何选择 RTCC 芯片,并快速应用于嵌入式系统的设计中,同时最大限度减小空间,降低功耗。文中还会讨论具有内置 RTCC 的 MCU,以及将可用的 RTCC 模块与表面贴装 RTC 及其他元件一同使用,协助原型开发。

整合到模块中的 RTCC 芯片通常由 Arduino 库和 Raspberry Pi Raspbian 驱动程序覆盖层提供支持,利用它们可以更轻松地使用上述器件开展嵌入式实验和原型开发。

RTCC 的角色

许多嵌入式应用需要以极低的功耗跟踪相对于真实世界的时间,同时减少在主处理器中所占用的空间,便与其处理其他任务。

然而,就其本身而言,RTCC 芯片能力有限。它需要一个用于计时的精确晶体(可能为可实现极精确计时的温度补偿型晶体),还需要备用电池电源,以便在嵌入式系统断电时仍能继续跟踪时间。这些辅助元件决定了 RTCC 执行其两项主要任务的能力:

  • 在所有条件下持续记录精确的时间和日期
  • 在嵌入式系统的其余部分断电后消耗极少的功率
  • 部分微控制器采用 RTCC

一些微控制器,例如 Microchip Technology 的 32 位 PIC32MZ2064DAA288 微控制器,采用了内部 RTCC 块。将此类器件用于设计需要精确计时的系统似乎是个不错的主意,尤其是,PIC32MZ2064DAA288 微控制器在其用于为器件供电的正常电源引脚(VDDCORE 和 VDDIO)电压不足时,会自动将内部电源切换至其电池输入引脚 (VBAT)。

但是,这类与 RTCC 以上所列两项关键任务(即精确计时和低功耗运行)直接相关的器件,还存在一些其他挑战。

首先,PIC32MZ2064DAA288 微控制器的 RTCC 块需要在其两个次级振荡器引脚上连接一个 32768 赫兹 (Hz) 晶体,以便在微控制器断电时维持精确的时间。虽然可以使用微控制器的主时钟振荡器来运行 RTCC 块,但当微控制器处于深度睡眠模式时,该振荡器会停止运行。

片载 RTCC 采用了一个校准寄存器,Microchip 也提供了一个校准程序,可在晶体振荡器频率偏移最多 260 ppm 时将计时误差减小至每个月 0.66 秒。但固定校准无法计入温度波动,而这也会影响振荡器的频率,进而影响计时精度。

其次,除 RTCC 块之外,微控制器在切换至电池电源后并未完全断电。根据软件控制,微控制器中的其他块在电池运行期间可能启用也可能未启用。这样带来的挑战是,电池的消耗和寿命变得高度依赖软件。

这一挑战并非 PIC32MZ2064DAA288 微控制器所独有。任何采用 RTCC 块的微控制器都会出现此问题。使用单独的 RTCC 芯片可以克服该问题,将计时功能与微控制器明确隔离,而且,在微控制器不含内部 RTCC 时,这也是唯一的设计选择。

RTCC 芯片和模块

数十年来,设计工程师一直使用单独的 RTCC 芯片,在各种嵌入式和计算应用中计时。尽管现在有多家 IC 供应商提供此类芯片,但表面贴装技术 (SMT) 让 RTCC 芯片的评估变得非常复杂,因为这些器件无法轻松进行手动焊接或插入插座。

一种有效的解决方案是使用基于这些 RTCC 芯片的低成本模块,消除与小型表面贴装 IC 相关的原型开发挑战。这些模块还包含电池(通常为纽扣电池),以便在主系统断电时保持电力。

Adafruit 的 255 Chronodot(图 1)便是此类模块一个很好的例子。此类模块便于评估试验板和原型开发中的 RTCC 芯片,许多情况下甚至适用于评估批量制造中的 RTCC 芯片。

表 1 列出了基于两家 IC 供应商的三款不同 RTCC 芯片的六个不同 RTCC 模块。

利用类似表 1 所列的六款 RTCC 模块,可以轻松地在原型系统中增加计时功能。在开发整合了底层 RTCC 芯片的电路板时,如果仔细观察这些模块的设计方法,就能发现一些有用的信息。

表 1 中需要注意的第一点是,所有这些 RTCC 模块都有一个共同点,即 I2C 接口。上世纪 70 年代的早期 RTCC 芯片使用并行地址和数据总线来模拟小型 SRAM。在那个年代,并行微处理器总线非常普遍,而板载串行协议则尚未广泛应用。

如今,芯片到芯片串行协议,尤其是 I2C,已成为带宽要求相对较低的外设的首选。RTCC 芯片绝对符合条件,因为它只需要很少的字节便能传输日期和时间信息。

表 1 中显示的前两个 RTCC 模块,即 DFRobot 的 DFR0151 和 SparkFun 的 BOB-12708,均基于 Maxim Integrated 的 8 引脚器件 DS1307 RTCC 芯片。由于它的普及程度,人们针对基于此芯片的模块提供了各种 Arduino 库和一个 Raspberry Pi Raspbian 驱动程序覆盖层。

DS1307 RTCC 具有单独的电源轨和电池引脚,可在系统电源出现故障时,在嵌入式系统的电源轨与备用电池之间提供自动切换(图 2)。

图 2 还显示了 DS1307 RTCC 芯片与晶体之间的连接。对于 RTCC 芯片,此晶体几乎总是便宜的 32768 Hz 钟表晶体,例如 IQD Frequency Products 的 WATCH-2X6。此晶体引入了使用 RTCC 芯片开展设计时需要考虑的两个新的方面。

1 2

相关文章

tracer