在嵌入式系统中快速实现高效的实时时钟/日历功能

许多嵌入式应用需要知道时间,以便在特定的时间和日期,或针对时间戳事件,或同时依据两者执行特定的任务。执行此功能的 RTCC(实时时钟和日历)芯片问世已有数十年,但设计人员在缩减元件数目和基底面,同时最大限度减少功耗和设计时间方面一直面临着挑战。
集成式 RTCC 器件和创新式模块如今可以应对这些挑战。
本文将讨论如何选择 RTCC 芯片,并快速应用于嵌入式系统的设计中,同时最大限度减小空间,降低功耗。文中还会讨论具有内置 RTCC 的 MCU,以及将可用的 RTCC 模块与表面贴装 RTC 及其他元件一同使用,协助原型开发。
整合到模块中的 RTCC 芯片通常由 Arduino 库和 Raspberry Pi Raspbian 驱动程序覆盖层提供支持,利用它们可以更轻松地使用上述器件开展嵌入式实验和原型开发。

RTCC 的角色

许多嵌入式应用需要以极低的功耗跟踪相对于真实世界的时间,同时减少在主处理器中所占用的空间,便与其处理其他任务。
然而,就其本身而言,RTCC 芯片能力有限。它需要一个用于计时的精确晶体(可能为可实现极精确计时的温度补偿型晶体),还需要备用电池电源,以便在嵌入式系统断电时仍能继续跟踪时间。这些辅助元件决定了 RTCC 执行其两项主要任务的能力:
  1. 在所有条件下持续记录精确的时间和日期
  2. 在嵌入式系统的其余部分断电后消耗极少的功率

部分微控制器采用 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 芯片。
Adafruit 的 255 Chronodot 图片
图 1:Adafruit 的 255 Chronodot 在一个通孔式模块中整合了 RTCC 芯片和电池。(图片来源:Adafruit)
表 1 列出了基于两家 IC 供应商的三款不同 RTCC 芯片的六个不同 RTCC 模块。
RTCC 模块 RTCC 芯片 接口 电池 电池寿命最小值(典型值)
DFRobot DFR0151 Maxim DS1307 I²C CR1225 9 (17) 年
SparkFun BOB-12708 Maxim DS1307 I²C CR1225 9 (17) 年
Adafruit 3103 Maxim DS3231 I²C CR1220 不适用
Adafruit 255 Chronodot Maxim DS3231 I²C CR1632 8 年
Maxim DS3231MPMB1# Maxim DS3231 I²C CR1025 不适用
STM STEVAL-FET001V1 STMicro M41T62 I²C 外置 不适用
表 1:六个 RTCC 模块诠释了 RTCC 模块的广泛适用性和多样性。(数据来源:Digi-Key Electronics)
利用类似表 1 所列的六款 RTCC 模块,可以轻松地在原型系统中增加计时功能。在开发整合了底层 RTCC 芯片的电路板时,如果仔细观察这些模块的设计方法,就能发现一些有用的信息。
表 1 中需要注意的第一点是,所有这些 RTCC 模块都有一个共同点,即 I2C 接口。上世纪 70 年代的早期 RTCC 芯片使用并行地址和数据总线来模拟小型 SRAM。在那个年代,并行微处理器总线非常普遍,而板载串行协议则尚未广泛应用。
如今,芯片到芯片串行协议,尤其是 I2C,已成为带宽要求相对较低的外设的首选。RTCC 芯片绝对符合条件,因为它只需要很少的字节便能传输日期和时间信息。
表 1 中显示的前两个 RTCC 模块,即 DFRobot 的 DFR0151 和 SparkFun 的 BOB-12708,均基于 Maxim Integrated 的 8 引脚器件 DS1307RTCC 芯片。由于它的普及程度,人们针对基于此芯片的模块提供了各种 Arduino 库和一个 Raspberry Pi Raspbian 驱动程序覆盖层。
DS1307 RTCC 具有单独的电源轨和电池引脚,可在系统电源出现故障时,在嵌入式系统的电源轨与备用电池之间提供自动切换(图 2)。
Maxim Integrated 的 DS1307 RTCC 芯片示意图
图 2:Maxim Integrated 的 DS1307 RTCC 芯片在 VCC 引脚电压降至约 4.5 V 以下时,会自动从 VCC 切换至 VBAT。(图片来源:Maxim Integrated)
图 2 还显示了 DS1307 RTCC 芯片与晶体之间的连接。对于 RTCC 芯片,此晶体几乎总是便宜的 32768 Hz 钟表晶体,例如 IQD Frequency Products 的 WATCH-2X6。此晶体引入了使用 RTCC 芯片开展设计时需要考虑的两个新的方面。
第一个因素是晶体的温度稳定性。大多数 RTCC 使用最初为腕表而设计的“音叉”晶体。这些晶体会随着温度变化而偏离其额定频率(图 3)。
32768 Hz 晶体的共振频率图
图 3:32768 Hz 晶体的共振频率随温度变化,这会影响 RTCC 的计时精度。(图片来源:IQD Frequency Products)
IQD WATCH-2X6 晶体的共振频率随温度变化,这会改变振荡器的频率,导致计时误差。请注意,振荡器频率发生 20 ppm 的偏移对应每月大约 1 分钟的计时误差。
第二个因素被图 2 中晶体与 RTCC 芯片之间过度简化的连接所隐藏。RTCC 芯片的晶体输入引脚通常具有极高的阻抗,导致钟表晶体的引线和 PC 板的印制线起到类似天线的作用。此“天线”可以将系统其余部分的高频信号和噪声耦合到 RTCC 的内部晶体振荡器。
任何通过钟表晶体与 RTCC 芯片之间的印制线耦合的噪声,都可能导致 RTCC 芯片的振荡器电路中出现额外转换,进而导致时钟运行加快。解决方案是采用细致的 PC 板布局。这包括将晶体置于尽可能接近 RTCC 芯片的振荡器引脚的位置,以及在晶体输入引脚和整个钟表晶体主体的下面放置一个接地平面(图 4)。
RTCC 封装下面以阴影线表示的禁布区示意图
图 4:接地平面上细致的 PC 板布局可预防有害的噪声影响 RTCC 芯片的计时精度。(图片来源:Maxim Integrated)
此外,图 4 显示的 RTCC 封装下面用阴影线表示的禁布区,可以防止间距很近的印制线将噪声耦合到 RTCC 芯片的晶体输入引脚。如果可能,在 PC 板的元件层上增加一个环绕晶体和 RTCC 芯片晶体输入引脚的保护环,也有助于防止噪声对计时精度产生影响。

从 PC 板取下钟表晶体并插入芯片中

为了规避外部晶体面临的一些与 PC 板布局相关的挑战,可选择采用 STMicroelectronics 提供的带有内置晶体的 M41T62 RTCC。具有 24 引脚 DIP 基底面的 STMicroelectronics STEVAL-FET001V1 评估板上提供了此 RTCC 芯片。图 5 显示了此电路板的示意图。其中有一个 Arduino 库和一个 Raspberry Pi Raspbian 驱动程序覆盖层可供 M41T62 使用。
STMicroelectronics M41T62 RTCC 芯片示意图
图 5:采用 24 引脚 DIP 封装的 STEVAL-FET001V1 评估板上提供了 STMicroelectronics M41T62 RTCC 芯片(中央)。(图片来源:STMicroelectronics)
如示意图所示,M41T62 只有一个 VCC 引脚。它没有在主电源轨出现故障时可选择切换的单独 VBAT 引脚,因为该器件的尺寸仅为 1.5 x 3.2 毫米,专门用于可穿戴设备和数码相机。在这些嵌入式应用中,电池往往是唯一的电源,而且空间非常宝贵。
请注意,也可以使用一个超级电容器作为 M41T62 的电源。在嵌入式系统中,系统电源或充电器可通过阻流二极管 D1,连接到 M41T62 的 VCC 引脚(图 6)。
该二极管必须是与以上图 5 中显示的 1N4148WS 相似的低漏电类型,以防止超级电容器在系统的其余部分断电时,通过系统电源反向放电。
为 M41T62 RTCC 芯片供电的可充电超级电容器示意图
图 6:可使用可充电超级电容器为 M41T62 RTCC 芯片供电。(图片来源:STMicroelectronics)

温度补偿可满足晶体要求

表 1 中所列的三种 RTCC 模块(Adafruit 3013、Adafruit 255 Chronodot 和 Maxim DS3231MPMB1#)均基于 Maxim 的 DS3231 RTCC 芯片(图 7)。除集成式晶体之外,该器件还包括一个温度传感器,这也是该器件拥有较长正式名称“超精准 I²C 集成式 RTC/TCXO/晶体”的原因所在。
Maxim DS3231 RTCC 芯片示意图
图 7:DS3231 RTCC 芯片集成了 32768 Hz 钟表晶体、一个温度传感器和一个开关式电容器阵列,以便将器件的计时精度保持在每年 ±2 分钟以内。(图片来源:Maxim Integrated)
如方框图中所示,DS3231 的温度补偿型晶体振荡器 (TCXO) 由内部晶体、一个温度传感器和一个开关式电容器阵列构成。与 DS1307 RTCC 类似,DS3231 也有单独的主电源 (VCC) 和备用电池 (VBAT) 引脚。
与 STMicroelectronics M41T62 RTCC 芯片一样,DS3231 RTCC 芯片消除了外部晶体存在的布局挑战。它的 TCXO 减少了温度摆动造成的计时精度波动。DS3231 的内部 TCXO 能在极宽的工作温度范围(-40°C 至 +85°C),将器件的计时精度保持在每年正负 2 分钟以内。
由于它的普及程度,人们针对基于 DS3231 RTCC 芯片的模块还提供了多个 Arduino 库和一个 Raspberry Pi Raspbian 驱动程序覆盖层。

电池能持续使用多长时间?

电池需保养维护,无法永久续航。在将 RTCC 添加至嵌入式设计时,务必注意 RTCC 芯片所需的电池电流,以适当调整备用电池的大小。
RTCC 应用中的电池寿命将取决于 RTCC 芯片在计时时的漏极电流、RTCC 芯片所需的最低工作电压,以及电池在其输出电压降至低于该最小工作电压之前能够供应所需电流的时间量(图 2)。
RTCC 芯片 电池电流 (nA) 典型值(最大值)
Maxim DS1307 300 (500)
Maxim DS3231 840 (3000)
STMicro M41T62 5000 (7000)
表 2:RTCC 芯片的电池供电电流额定值有助于调整合适的备用电池大小。(数据来源:Digi-Key Electronics)
之前表 1 中显示的 RTCC 模块均已选定备用电池。一些模块供应商在模块的规格书上包含了电池寿命数字,此数字同样显示在表 1 中。锂纽扣电池目前是这些模块首选的电池类型。表中所列器件的电池直径不外乎 10、12 和 16 毫米。当然,电池容量越大,增加的空间和重量往往也更多,但显而易见的好处是,给定电流下的电池寿命更长。

总结

在选择 RTTC 器件、选择配套的晶体和电池以确保精准操作,以及为 PC 板布局时,都应格外小心。另一方面,基于 RTCC 芯片的可用模块为试验板和原型开发提供了捷径,大幅缩短了开发时间。

用户喜欢...

超移动便携式嵌入式系统的三大基本技术

SB的新型通用Type-C连接器,充电配置文件以及需要转向器的超高速度都是您口袋中携带的变化之一。 更大的屏幕,更长的电池寿命,更快的视频游戏和更好的云连接定义了现代超移动嵌入式平...


利用 Armv8-M 架构和 TrustZone 提高嵌入式系统安全性

确保基于微控制器的物联网应用的安全性可能会很棘手。安全性始于硬件层次,然后扩展到嵌入式软件。为了成功保障软件安全,开发人员要求底层硬件支持以下等关键特性: 安全启动 存储器...


嵌入式系统之基础概念篇

1 、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 (2)嵌入式系统发展...


基于嵌入式系统智能手环的设计开发

随着科技的进步,智能化成为了人们关注的焦点,同时也越来越贴近人们的生活。人们对于健康生活方式的需求催生出了智能可穿戴设备,智能手环就属于其中的一种代表性产物。其主要应用...


【干货】以0 MIPS运行你的嵌入式系统

即使是在诸如物联网应用的无线连接这种主导功耗的事件中,让尽可能多的进程自主运行,也可大大提高电池寿命。降低功耗一直是微控器(MCU)市场的一个主要关注点。超低功耗MCU现在可以...


V3学院杯:全可编程SoC嵌入式系统设计大赛入围名单出炉了!

V3学院杯:全可编程SoC嵌入式系统设计大赛入围名单出炉了!经过大赛评审专家的审核筛选,恭喜以下10位参赛选手入围。我们将在近期安排快递开发板。 V3学院杯:全可编程SoC嵌入式系统设...


嵌入式系统开发中驱动程序设计的5个窍门

在嵌入式系统的开发中,驱动程序的设计和实施是一个关键组成部分,是满足系统实时性需求的关键。本文由资深嵌入式软件开发专家Jacob Beningo撰写,总结了设计驱动程序开发者应该掌握的...


学习嵌入式系统你需要掌握的基础知识!

嵌入式系统基础 1、嵌入式系统的定义 (1)定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 (...


嵌入式系统之WATCHDOG(看门狗)概述

WATCHDOG对于没有底层开发经验的开发人员来说,可能比较陌生,但是它在系统起到非常重要的作用,相当于系统警察,当系统发生严重错误(如程序进入死循环等)不能恢复的时候,WATCHDOG能...


浅析 MCU 嵌入式系统的领域分析方法

在不断的发展的 MCU 嵌入式系统领域中,软件危机所带来的危害也日渐显现。如何利用软件重用的相关方法来解决这一问题成为当今研究的热点。领域分析是识别、捕捉、组织、分析和表示软...


单片机与嵌入式系统有什么区别与联系

随着电子信息科学技术信息化,智能化,网络化的发展,单片机与嵌入式也获得了广阔的应用空间。本文简单分析了单片机与嵌入式系统的联系、组成结构对比等基础知识,并列举了几种适用...


嵌入式系统应用中的USB主设备功能分析

USB已经成为设备和PC之间通信的标准方式,从通用设备(如闪存设备和鼠标)到专用设备,该标准几乎完全替代了其他的串行通信协议。 USB外围设备彼此之间不能相互通信,它们只能与具有控制...


【培训课程】使用PetaLinux工具进行嵌入式系统设计

课程对象 对如何在 ARM 处理器设计上为 Xilinx Zynq® All Programmable SoC 定制 PetaLinux 内核感兴趣的嵌入式软件开发人员。 必备条件 FPGA 设计基础课程 (入门级 FPGA 设计课程) 嵌入式系统软件开发课...


嵌入式系统知识体系、学习误区及建议

1 嵌入式系统的知识体系 嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制、现代农业、家用电器、汽车电子、测控系统、数据采集等),计算机应用的延伸(MP3、手机...


十年经验分享如何学好嵌入式系统开发(连载)--参加“连载--我与FPGA”活动--ZT

一、嵌入式系统的概念 着重理解”嵌入”的概念 主要从三个方面上来理解。 1、从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是有运算器...


FPGA与嵌入式系统的关系

在许多领域中广泛应用的嵌入式计算系统(简称为嵌入式系统),是在更大的电子器件中嵌入的重复完成特定功能的计算系统,它经常不被器件的使用者所识别,但在各种常用的电子器件中能够...