2024-10-16 新品 0
许多嵌入式应用需要知道时间,以便在特定的时间和日期,或针对时间戳事件,或同时依据两者执行特定的任务。执行此功能的RTCC(实时时钟和日历)芯片问世已有数十年,但设计人员在缩减元件数目和基底面,同时最大限度减少功耗和设计时间方面一直面临着挑战。
集成式RTCC器件和创新式模块如今可以应对这些挑战。
本文将讨论如何选择RTCC芯片,并快速应用于嵌入式系统的设计中,同时最大限度减小空间,降低功耗。文中还会讨论具有内置RTCC的MCU,以及将可用的RTCC模块与表面贴装RTC及其他元件一同使用,协助原型开发。
整合到模块中的RTCC芯片通常由Arduino库和RaspberryPiRaspbian驱动程序覆盖层提供支持,利用它们可以更轻松地使用上述器件开展嵌入式实验和原型开发。
RTCC的角色
许多嵌入式应用需要以极低的功耗跟踪相对于真实世界的时间,同时减少在主处理器中所占用的空间,便与其处理其他任务。
然而,就其本身而言,RTCC芯片能力有限。它需要一个用于计时的精确晶体(可能为可实现极精确计时的温度补偿型晶体),还需要备用电池电源,以便在嵌入式系统断电时仍能继续跟踪时间。这些辅助元件决定了RTCC执行其两项主要任务的能力:
在所有条件下持续记录精确的时间和日期
在嵌入式系统的其余部分断电后消耗极少的功率
部分微采用RTCC
一些微,例如MicrochipTechnology的32位PIC32MZ2064DAA288微,采用了内部RTCC块。将此类器件用于设计需要精确计时的系统似乎是个不错的主意,尤其是,PIC32MZ2064DAA288微在其用于为器件供电的正常电源引脚(VDDCORE和VDDIO)电压不足时,会自动将内部电源切换至其电池输入引脚(VBAT)。
但是,这类与RTCC以上所列两项关键任务(即精确计时和低功耗运行)直接相关的器件,还存在一些其他挑战。
首先,PIC32MZ2064DAA288微的RTCC块需要在其两个次级振荡器引脚上连接一个32768赫兹(Hz)晶体,以便在微断电时维持精确的时间。虽然可以使用微的主时钟振荡器来运行RTCC块,但当微处于深度睡眠模式时,该振荡器会停止运行。
片载RTCC采用了一个校准寄存器,Microchip也提供了一个校准程序,可在晶体振荡器频率偏移最多260ppm时将计时误差减小至每个月0.66秒。但固定校准无法计入温度波动,而这也会影响振荡器的频率,进而影响计时精度。
其次,除RTCC块之外,微在切换至电池电源后并未完全断电。根据软件控制,微中的其他块在电池运行期间可能启用也可能未启用。这样带来的挑战是,电池的消耗和寿命变得高度依赖软件。
这一挑战并非PIC32MZ2064DAA288微所独有。任何采用RTCC块的微都会出现此问题。使用单独的RTCC芯片可以克服该问题,将计时功能与微明确隔离,而且,在微不含内部RTCC时,这也是唯一的设计选择。
RTCC芯片和模块
数十年来,设计工程师一直使用单独的RTCC芯片,在各种嵌入式和计算应用中计时。尽管现在有多家IC供应商提供此类芯片,但表面贴装技术(SMT)让RTCC芯片的评估变得非常复杂,因为这些器件无法轻松进行手动焊接或插入插座。
一种有效的解决方案是使用基于这些RTCC芯片的低成本模块,消除与小型表面贴装IC相关的原型开发挑战。这些模块还包含电池(通常为纽扣电池),以便在主系统断电时保持电力。
Adafruit的255Chronodot(图1)便是此类模块一个很好的例子。此类模块便于评估试验板和原型开发中的RTCC芯片,许多情况下甚至适用于评估批量制造中的RTCC芯片。
图1:Adafruit的255Chronodot在一个通孔式模块中整合了RTCC芯片和电池。(图片来源:Adafruit)
表1列出了基于两家IC供应商的三款不同RTCC芯片的六个不同RTCC模块。
表1:六个RTCC模块诠释了RTCC模块的广泛适用性和多样性。(数据来源:Digi-KeyElectronics)
利用类似表1所列的六款RTCC模块,可以轻松地在原型系统中增加计时功能。在开发整合了底层RTCC芯片的电路板时,如果仔细观察这些模块的设计方法,就能发现一些有用的信息。
表1中需要注意的第一点是,所有这些RTCC模块都有一个共同点,即I2C接口。上世纪70年代的早期RTCC芯片使用并行地址和数据总线来模拟小型SRAM。在那个年代,并行微处理器总线非常普遍,而板载串行协议则尚未广泛应用。
如今,芯片到芯片串行协议,尤其是I2C,已成为带宽要求相对较低的外设的首选。RTCC芯片绝对符合条件,因为它只需要很少的字节便能传输日期和时间信息。
表1中显示的前两个RTCC模块,即DFRobot的DFR0151和SparkFun的BOB-12708,均基于MaximIntegrated的8引脚器件DS1307RTCC芯片。由于它的普及程度,人们针对基于此芯片的模块提供了各种Arduino库和一个RaspberryPiRaspbian驱动程序覆盖层。
DS1307RTCC具有单独的电源轨和电池引脚,可在系统电源出现故障时,在嵌入式系统的电源轨与备用电池之间提供自动切换(图2)。
图2:MaximIntegrated的DS1307RTCC芯片在VCC引脚电压降至约4.5V以下时,会自动从VCC切换至VBAT。(图片来源:MaximIntegrated)
图2还显示了DS1307RTCC芯片与晶体之间的连接。对于RTCC芯片,此晶体几乎总是便宜的32768Hz钟表晶体,例如IQDFrequencyProducts的WATCH-2X6。此晶体引入了使用RTCC芯片开展设计时需要考虑的两个新的方面。
第一个因素是晶体的温度稳定性。大多数RTCC使用最初为腕表而设计的“音叉”晶体。这些晶体会随着温度变化而偏离其额定频率(图3)。
图3:32768Hz晶体的共振频率随温度变化,这会影响RTCC的计时精度。(图片来源:IQDFrequencyProducts)
IQDWATCH-2X6晶体的共振频率随温度变化,这会改变振荡器的频率,导致计时误差。请注意,振荡器频率发生20ppm的偏移对应每月大约1分钟的计时误差。
第二个因素被图2中晶体与RTCC芯片之间过度简化的连接所隐藏。RTCC芯片的晶体输入引脚通常具有极高的阻抗,导致钟表晶体的引线和PC板的印制线起到类似天线的作用。此“天线”可以将系统其余部分的高频信号和噪声耦合到RTCC的内部晶体振荡器。
任何通过钟表晶体与RTCC芯片之间的印制线耦合的噪声,都可能导致RTCC芯片的振荡器电路中出现额外转换,进而导致时钟运行加快。解决方案是采用细致的PC板布局。这包括将晶体置于尽可能接近RTCC芯片的振荡器引脚的位置,以及在晶体输入引脚和整个钟表晶体主体的下面放置一个接地平面(图4)。
图4:接地平面上细致的PC板布局可预防有害的噪声影响RTCC芯片的计时精度。(图片来源:MaximIntegrated)
此外,图4显示的RTCC封装下面用阴影线表示的禁布区,可以防止间距很近的印制线将噪声耦合到RTCC芯片的晶体输入引脚。如果可能,在PC板的元件层上增加一个环绕晶体和RTCC芯片晶体输入引脚的保护环,也有助于防止噪声对计时精度产生影响。
从PC板取下钟表晶体并插入芯片中
为了规避外部晶体面临的一些与PC板布局相关的挑战,可选择采用STMicroelectronics提供的带有内置晶体的M41T62RTCC。具有24引脚DIP基底面的STMicroelectronicsSTEVAL-FET001V1评估板上提供了此RTCC芯片。图5显示了此电路板的示意图。其中有一个Arduino库和一个RaspberryPiRaspbian驱动程序覆盖层可供M41T62使用。
图5:采用24引脚DIP封装的STEVAL-FET001V1评估板上提供了STMicroelectronicsM41T62RTCC芯片(中央)。(图片来源:STMicroelectronics)
如示意图所示,M41T62只有一个VCC引脚。它没有在主电源轨出现故障时可选择切换的单独VBAT引脚,因为该器件的尺寸仅为1.5x3.2毫米,专门用于可穿戴设备和数码相机。在这些嵌入式应用中,电池往往是唯一的电源,而且空间非常宝贵。
请注意,也可以使用一个超级电容器作为M41T62的电源。在嵌入式系统中,系统电源或充电器可通过阻流二极管D1,连接到M41T62的VCC引脚(图6)。
该二极管必须是与以上图5中显示的1N4148WS相似的低漏电类型,以防止超级电容器在系统的其余部分断电时,通过系统电源反向放电。
图6:可使用可充电超级电容器为M41T62RTCC芯片供电。(图片来源:STMicroelectronics)
温度补偿可满足晶体要求
表1中所列的三种RTCC模块(Adafruit3013、Adafruit255Chronodot和MaximDS3231MPMB1#)均基于Maxim的DS3231RTCC芯片(图7)。除集成式晶体之外,该器件还包括一个温度传感器,这也是该器件拥有较长正式名称“超精准I²C集成式RTC/TCXO/晶体”的原因所在。
图7:DS3231RTCC芯片集成了32768Hz钟表晶体、一个温度传感器和一个开关式电容器阵列,以便将器件的计时精度保持在每年±2分钟以内。(图片来源:MaximIntegrated)
如方框图中所示,DS3231的温度补偿型晶体振荡器(TCXO)由内部晶体、一个温度传感器和一个开关式电容器阵列构成。与DS1307RTCC类似,DS3231也有单独的主电源(VCC)和备用电池(VBAT)引脚。
与STMicroelectronicsM41T62RTCC芯片一样,DS3231RTCC芯片消除了外部晶体存在的布局挑战。它的TCXO减少了温度摆动造成的计时精度波动。DS3231的内部TCXO能在极宽的工作温度范围(-40°C至+85°C),将器件的计时精度保持在每年正负2分钟以内。
由于它的普及程度,人们针对基于DS3231RTCC芯片的模块还提供了多个Arduino库和一个RaspberryPiRaspbian驱动程序覆盖层。
电池能持续使用多长时间?
电池需保养维护,无法永久续航。在将RTCC添加至嵌入式设计时,务必注意RTCC芯片所需的电池电流,以适当调整备用电池的大小。
RTCC应用中的电池寿命将取决于RTCC芯片在计时时的漏极电流、RTCC芯片所需的最低工作电压,以及电池在其输出电压降至低于该最小工作电压之前能够供应所需电流的时间量(图2)。
表2:RTCC芯片的电池供电电流额定值有助于调整合适的备用电池大小。(数据来源:Digi-KeyElectronics)
之前表1中显示的RTCC模块均已选定备用电池。一些模块供应商在模块的规格书上包含了电池寿命数字,此数字同样显示在表1中。锂纽扣电池目前是这些模块首选的电池类型。表中所列器件的电池直径不外乎10、12和16毫米。当然,电池容量越大,增加的空间和重量往往也更多,但显而易见的好处是,给定电流下的电池寿命更长。
总结
在选择RTTC器件、选择配套的晶体和电池以确保精准操作,以及为PC板布局时,都应格外小心。另一方面,基于RTCC芯片的可用模块为试验板和原型开发提供了捷径,大幅缩短了开发时间。