基于MCU的高级时钟控制模块设计方案

要长高

描述

  随着 MCU 扩展到越来越多的功率受限设计,处理效率成为系统设计人员日益关注的问题。以更低的功率获得额外处理能力的驱动力不仅在电池供电的产品中很重要,而且在许多“插入式”模块中,功率也越来越受到模块规格的限制。在这些情况下,一个高效的设计将能够提供更多的功能,并相对于效率较低的实施创造竞争优势。

  MCU 设计中一个被忽视的方面是时钟控制领域。设计人员通常可以通过使用时钟控制模块的高级功能来调整 CPU、外设和其他功耗资源的时钟,从而创建更高效​​的设计。本文将探讨高级时钟控制模块的一些常见特性的功能,并展示它们如何在大多数基于 MCU 的设计中提高处理效率。

  时钟源

  MCU 的整体操作由时钟控制块管理,许多时钟控制块具有可用于选择、控制和管理 CPU、存储器、外设和模拟块的时钟源的功能。通过控制这些模块的时钟,甚至关闭某些处理例程中未使用的功能的时钟,电源可以仅在 MCU 的需要它的部分以及它们需要时提供,从而实现非常高效执行。时钟管理和控制的起点是可供各种子模块使用的各种时钟源。了解每个时钟源的优缺点是高效 MCU 实施的起点。

  STMicroelectronics ST32F37xx 提供许多常见的时钟源和控制功能MCU 时钟控制模块,如图 1 所示。ST32F37xx 有多个时钟源,每个时钟源都有一个特定的功能,并针对它进行了优化。例如,高速外部 (HSE) 时钟(如图 1 左中所示)使用外部晶体/陶瓷谐振器或现有用户提供的时钟。外部晶体/陶瓷谐振器的工作频率范围为 4 至 32 MHz,并产生非常准确的主时钟速率。如果现有的外部时钟已经可用,或者如果用户希望对时钟源进行额外的控制(可能停止或减慢时钟以进行更精细的低功耗操作控制),则可以使用外部时钟输入。这也释放了一个额外的 GPIO 引脚,因为在实现谐振器时需要少一个引脚。

pYYBAGLsn76AH0PIAAJ97ilFa9w617.png

  图 1:STM32F37xx 时钟控制模块。(意法半导体提供)

  高速内部 (HIS) 时钟信号由内部 8 MHz RC 振荡器生成,可直接用作系统时钟或在被 PLL 使用之前进行二分频。HIS RC 振荡器的优点是可以低成本提供时钟源,因为它不使用外部元件。它还具有比HSE晶振更快的启动时间;然而,即使经过校准,频率也不如外部晶体振荡器或陶瓷谐振器准确。请注意,CPU 时钟只能由高速时钟之一或 PLL 的输出驱动。

  STM32F37xx 还有两个低速时钟源。低速外部 (LSE) 晶体/陶瓷振荡器显示在图 1 的顶部,它使用高精度 32.768 kHz 谐振器为实时时钟 (RTC) 外设创建精确的时钟源。低速内部 RC 振荡器提供 40 kHz 信号,用于驱动独立的看门狗定时器和可选的 RTC,用于从低功耗停止/休眠模式自动唤醒。低功耗时钟独立于高速时钟运行,因此即使主系统时钟关闭,其外围设备也可以运行,从而节省大量电力。

  这些时钟源是您可以在大多数 MCU 中找到的典型时钟源。如图 1 所示,时钟源只是大多数 MCU 中时钟架构的起点。通常可以进一步选择、处理时钟(通常使用一个或多个锁相环或 PLL 块),或在 MCU 控制下启用所有时钟。在下一节中,我们将通过查看 PLL 模块的典型功能来继续探索时钟控制。

  锁相环操作

  各种时钟操作模块,如锁相环 (PLL) 和锁频环 (FLL) 模块,是时钟控制模块中最重要但通常不太了解的元素。飞思卡尔Kinetis K10MCU 子系列具有多用途时钟发生器 (MCG) 模块,如图 2 所示,其中包括 FLL 和 PLL,因此这是一个很好的示例。Kinetis K10 MCG FLL 可由内部或外部参考时钟控制。PLL 可由外部参考时钟控制。该模块可以选择 FLL 或 PLL 输出时钟或内部或外部参考时钟作为 MCU 系统时钟源。MCG 与晶体振荡器一起工作,晶体振荡器允许外部晶体、陶瓷谐振器或其他外部时钟源产生外部参考时钟。

poYBAGLsn8uAYqPUAALKMxBekwA751.png

  图 2:飞思卡尔 Kinetis K10 MCU 系列中的多用途时钟发生器模块。(由飞思卡尔提供)

  FLL 模块(如图 2 中间所示)采用选定的时钟源并对其进行操作以创建所需的时钟频率。输入时钟可以除以十六个不同的值,从 1 到 1536,以创建介于 31.25 kHz 到 39.0625 kHz 之间的基本频率。然后将基频与数控振荡器 (DCO) 相乘,以产生介于 20 MHz 和 96 MHz 之间的所需输出频率。通过使用 FLL 从各种频率中进行选择的能力,可以轻松地将时钟速率调整为特定操作模式所需的正确频率,从而提高处理效率。PLL 以类似的方式工作,但使用压控振荡器 (VCO) 来调整时钟输出频率。PLL 的输入时钟可以通过预分频器进行 2 到 25 倍的分频。相位检测器将 PLL 输入时钟和 VCO 输出时钟相结合,将输入信号乘以 24 到 55 倍。所有这些除法和乘法的结果是一个时钟信号,它是应用所需的精确值。通常,PLL 比 FLL 需要额外的功率,但 PLL 具有更精细的调整和更高的精度。请注意,如果不需要 PLL 或 FLL 来生成应用所需的频率,例如,在外部时钟信号提供所需的确切频率的情况下,可以禁用 PLL 或 FLL 以降低功耗。所有这些除法和乘法的结果是一个时钟信号,它是应用程序所需的精确值。通常,PLL 比 FLL 需要额外的功率,但 PLL 具有更精细的调整和更高的精度。请注意,如果不需要 PLL 或 FLL 来生成应用所需的频率,例如,在外部时钟信号提供所需的确切频率的情况下,可以禁用 PLL 或 FLL 以降低功耗。所有这些除法和乘法的结果是一个时钟信号,它是应用程序所需的精确值。通常,PLL 比 FLL 需要额外的功率,但 PLL 具有更精细的调整和更高的精度。请注意,如果不需要 PLL 或 FLL 来生成应用所需的频率,例如,在外部时钟信号提供所需的确切频率的情况下,可以禁用 PLL 或 FLL 以降低功耗。

  外设时钟控制

  在使用 PLL 或 FLL 调整源时钟(如果需要)后,时钟分配网络将负责为每个关键 MCU 模块提供单独的时钟。CPU 及其相关的内存系统将需要自己的时钟,但通常各种外围设备也将拥有自己的时钟。外围时钟网络划分得越细,就越容易单独选择和控制时钟,并将工作频率调整到应用所需的频率。控制时钟网络的常用方法是添加时钟分频器电路(因为外设运行速度通常比 CPU 慢),如果根本不需要外设,甚至可以添加时钟禁用电路。可用的控制越多,可以调整的功率和性能就越多,但在某些时候,必须考虑额外的裸片空间(及其相关成本)和所需的额外功率。制造商通常限制时钟网络提供完全的灵活性,但试图为大多数应用提供足够的能力以获得显着的功率和处理效率。

  恩智浦,在其LPC15xx上MCU 已将每个关键外围功能的时钟分频器按照非常实用的线进行分段,如图 3 所示,从而可以轻松确定每个子块使用哪些设置。例如,图 3 中右侧所示的 USART 模块的时钟信号来自主时钟,但可以使用 USART 外设时钟分频器进行预分频(从 1 到 255 或完全禁用) 。 然后,每个 USART 模块内的各个小数波特率发生器(具有 16 位时钟分频值可用)可以使用该时钟信号,以便轻松单独设置每个 USART 的波特率。其他外设时钟分频器可在通用功能基础上使用,以便于配置和控制性能,从而降低所有关键外设模块的功耗。

poYBAGLsn9iAdgixAAInHMIIPuE100.png

  图 3:NXP LPC15xx MCU 上的外设时钟分频器。(恩智浦提供)

  沿功能线对外设时钟进行分组是一个简单的概念,但是当外设​​可以协同工作时,这个概念就变得更加复杂。例如,请注意 ADC 时钟分频器可以来自 SC Timer PLL。这似乎是一个不必要的连接,直到您意识到 ADC 可以与 SC 定时器一起工作以在没有 CPU 干预的情况下进行周期性转换。在创建所需操作所需的灵活性而不使时钟控制块因额外的复杂性而超载时额外注意,这是经过深思熟虑的实现的标志。

  动态时钟控制

  一旦您以最节能和处理效率最高的方式为各种外设选择了时钟,您可能会认为您已经完成了。为了获得更高的性能和功率控制,您可能还需要根据 MCU 所处的功能或模式动态调整某些处理或外围模块的速度。灵活的时钟选择网络是使用动态时钟所需的关键特性。 Silicon Labs Gecko MCU的一部分图 4 所示的时钟控制模块说明了这一点。图中左上方的高频时钟开关可以选择高频时钟(HFXO 或 HFRCO)或低频时钟(LFXO 或 LFRCO)。这使得根据设备运行的模式类型轻松“混合和匹配”低频源或高频源成为可能。

poYBAGLsn-WAL0AlAAEIqx3Xt_c178.png

  图 4:Silicon Labs Gecko MCU 的时钟控制模块部分。(由 Silicon Labs 提供)

  当进入和退出传统低功耗模式需要太多“启动”时间时,动态时钟选择最有用(即使是节能的 Gecko MCU 系列也可能需要 2 微秒的 EM2 低功耗唤醒时间)功耗状态,在极低功耗 EM4 状态下可达 160 μsec)。通过动态选择低频时钟,节省的电量较少,但快速响应时间(通常仅在时钟周期的数量级上)要快得多。这可以在捕获异步事件或丢失它之间产生差异。当在操作状态期间需要中等处理性能时,拥有这种级别的时钟控制还可以增加低功耗状态的使用。在您的设计中寻找动态时钟控制机会,以实现最高的功率和处理效率水平。

  总结

  高级时钟控制模块提供了一些令人惊讶的功能,可以帮助管理 MCU 内的电源使用。控制外围设备的时钟、管理 CPU 的时钟速率以及在处理过程中动态改变时钟速率只是可用于创建更高效​​设计的一些技术。

打开APP阅读更多精彩内容

电子工程师必装软件(附AD封装库

值得收藏!用过都说好!

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分