方法|如何正确使用STM32L4 MCU的五种振荡器?

对于可穿戴和物联网中的电池供电应用 , 低功耗是对MCU最基本的要求 。 虽然现今的arm核心MCU都冠以超低功耗标签 , 如何使用不当就未必能够达到datasheet效果 。 例如 , STM32L4xx系列MCU基于ARM Cortex-M4 , 具有FPU内核、高度灵活性和高级外设集 , 所需供电电压可低至1.71V , 可实现首屈一指的超低功耗性能 。
与一般MCU只有4路时钟相比 , STM32L4xx多提供了一个时钟源 , 具有多功能的时钟管理 , 5个时钟源(HSE、LSE、 LSI、HSI、MSI)可通过复位和时钟控制器(RCC)外设来管理 。 如果使用不当 , 就会导致过高的能耗 。 以下简单介绍下这些时钟源的使用方法 。
方法|如何正确使用STM32L4 MCU的五种振荡器?
文章图片

五个时钟源:HSE、LSE、 LSI、HSI、MSI 通过HSE、LSE两个外部振荡器 , 应用能获得高精度:
◆ HSE时钟(4至80MHz的高速外部时钟) , 通常用来馈送PLL , 并能产生高达80MHz的CPU时钟频率 , 以及USB控制器和音频时钟所需的独立频率 。
◆ LSE(典型的32.768kHz低速外部时钟)一般用于为实时时钟提供低功耗时钟源 , 不过也能用作LCD时钟 。
对于多种不同的任务 , STM32L4xx有3个内部振荡器可供选择:
◆ LSI时钟(32kHz低速内部时钟)是超低功耗源 , 能够馈送实时时钟(精度有限)、LCD控制器和独立看门狗
◆ HSI时钟(16MHz高速内部时钟)是高速电压补偿振荡器 。
◆ MSI时钟(100kHz至48MHz多种速率内部时钟)是振荡器 , 具有可调的频率和低电流消耗 。 它的工作电流与频率成比例 , 以便最小化内部振荡器在低CPU频率下的功耗开销 。
配置为PLL模式时 , 该振荡器利用LSE自动校准 , 能够实现高精度 。
RC48可用时 , 利用时钟恢复系统(HSI48):内部48MHz时钟源(HSI48)可用于驱动USB、SDMMC或RNG外设 。 此时钟可在MCO上输出 。
此外 , STM32L4xx微控制器嵌入了三个PLL , 每个都具有多达3个独立输出 , 并可由HSI、HSE或MSI馈送 。 这九个输出可分别配置为:
【方法|如何正确使用STM32L4 MCU的五种振荡器?】- 系统时钟
- ADC接口时钟
- USB时钟
- 串行音频接口SAI1时钟
- 串行音频接口SAI2时钟
外设时钟的选择 多个其他外设可由非系统时钟提供时钟:USARTx(x= 1、2、3、4、5) , LPUART , SWPMI和I2Cx(x=1、2、3、4)接收独立时钟 。
消除外设在系统时钟上的限制条件 , 这可降低系统和APB总线频率 , 并保持通信外设波特率不变 , 与系统时钟频率独立 。
- 在运行和低功耗运行模式下 , 所有外设时钟可单独使能或禁用 。
- 在睡眠和低功耗睡眠模式下 , 所有外设时钟也可单独使能或禁用 。
HSI和LSI的校准
在成本敏感的应用中 , 晶体振荡器的价格可能无法忽略 。 出于这个原因 , STM32L4xx提供了多种选择来测量内部振荡器 。 尽管HSI和MSI是工厂修调的 , 但它们能在运行时间内进一步修调0.5%个单位 , 以补偿因温度和电压变化引起的频率偏移 。
当应用中存在LSE时 , MSI可利用LSE(PLL模式配置)自动校准 , 从而可能长期达到LSE精确度 。 该模式可提供USB时钟 , 具有器件模式中运行所要求的精确度 , 节约了高速晶振的成本 。 而且 , 当MCU从Stop模式退出时 , 系统时钟在任意频率范围内均可配置为HSI或MSI 。 这允许在48MHz时直接退出停止模式 , 无需等待PLL启动时间 。

    推荐阅读