ESP32 快速入门(七): 复位和时钟

今天我们来了解一下 ESP32 复位和时钟相关信息。

1. System 复位

1.1 概述

系统提供三种级别的复位方式,分别是 CPU 复位,内核复位,系统复位。
所有的复位都不会影响 MEM 中的数据。以下展示了整个子系统的结构以及每种复位方式:

在这里插入图片描述

  • CPU 复位:只复位 CPU 的所有寄存器。
  • 内核复位:除了 RTC,会把整个 digital 的寄存器全部复位,包括 CPU、所有外设和数字 GPIO。
  • 系统复位:会复位整个芯片所有的寄存器,包括 RTC。

1.2 复位源

大多数情况下,APP_CPU 和 PRO_CPU 将被立刻复位,有些复位源只能复位其中一个。APP_CPU 和 PRO_CPU
的复位原因也各自不同:当系统复位起来之后,PRO_CPU 可以通过读取寄存器 RTC_CNTL_RESET_CAUSE_PROCPU
来获取复位源,APP_CPU 则可以通过读取寄存器 RTC_CNTL_RESET_CAUSE_APPCPU 来获取复位源。详情请见 ESP32 技术参考手册 第 37 页。


2 系统时钟

2.1 概述

ESP32 提供了多种不同频率的时钟选择,可以灵活的配置 CPU,外设,以及 RTC 的工作频率,以满足不同功
耗和性能需求。下图为系统时钟结构。

在这里插入图片描述

2.2 时钟源

ESP32 的时钟源分别来自外部晶振、内部 PLL 或震荡电路。具体地说,这些时钟源为:

  • 快速时钟
    • PLL_CLK,320 MHz 内部 PLL 时钟
    • XTL_CLK,2 ~ 40 MHz 外部晶振时钟
  • 低功耗慢速时钟
    • XTL32K_CLK,32 KHz 外部晶振时钟
    • RTC8M_CLK,8 MHz 内部时钟,频率可调
    • RTC8M_D256_CLK 由 RTC8M_CLK 256 分频所得,频率为(RTC8M_CLK/256)。当 RTC8M_CLK的初始频率为 8 MHz 时,该时钟以 31.250 KHz 的频率运行。
    • RTC_CLK,150 KHz 内部低功耗时钟,频率可调
  • 音频时钟
    • APLL_CLK,16 ~ 128 MHz 内部 Audio PLL 时钟

2.3 CPU 时钟

如上图所示,CPU_CLK 为 CPU 主时钟,它在高效工作模式下,主频可以达到 160 MHz。同时,CPU 能够在超低频下工作,以减少功耗。
CPU_CLK 由 RTC_CNTL_SOC_CLK_SEL 来选择时钟源,允许选择 PLL_CLK,APLL_CLK,RTC8M_CLK,XTL_CLK作为 CPU_CLK 的时钟源。

2.4 外设时钟

外设所需要的时钟包括 APB_CLK,REF_TICK,LEDC_SCLK,APLL_CLK 和 PLL_D2_CLK。

  • APB_CLK 源:APB_CLK 由 CPU_CLK 产生,分频系数由 CPU_CLK 源决定。

  • REF_TICK 源:REF_TICK 由 APB_CLK 分频产生,分频值由 APB_CLK 源和 CPU_CLK 源共同决定。用户通过配置合理的分频系数,可以保证 REF_TICK 在 APB_CLK 切换时维持频率不变。

  • LEDC_SCLK 源:LEDC_SCLK 时钟源由寄存器 LEDC_APB_CLK_SEL 决定。

  • APLL_SCLK 源:APLL_CLK 来自内部 PLL_CLK,其输出频率通过使用 APLL 配置寄存器来配置。

  • PLL_D2_CLK 源:PLL_D2_CLK 是 PLL_CLK 的二分频时钟。

2.4.1 时钟源注意事项

大多数外设一般在选择 PLL_CLK 时钟源的情况下工作。若频率发生变化,外设需要通过修改配置才能以同样的频率工作。接入 REF_TICK 的外设允许在切换时钟源的情况下,不修改外设配置即可工作。
LED PWM 模块能将 RTC8M_CLK 作为时钟源使用,即在 APB_CLK 关闭的时候,LED PWM 也可工作。换而言之,当系统处于低功耗模式时,所有正常外设都将停止工作(APB_CLK 关闭),但是 LED PWM 仍然可以通过 RTC8M_CLK 来正常工作。

2.5 Wi-Fi BT 时钟

Wi-Fi 和 BT 必须在 APB_CLK 时钟源选择 PLL_CLK 下才能工作。只有当 Wi-Fi 和 BT 同时进入低功耗模式时,才能暂时关闭 PLL_CLK。
LOW_POWER_CLK 允许选择 RTC_CLK、SLOW_CLK、RTC8M_CLK 或 XTL_CLK,用于 Wi-Fi 和 BT 的低功耗模式。

2.6 RTC 时钟

SLOW_CLK 和 FAST_CLK 的时钟源为低频时钟。RTC 模块能够在大多数时钟源关闭的状态下工作。
SLOW_CLK 允许选择 RTC_CLK,XTL32K_CLK 或 RTC8M_D256_CLK,用于驱动 Power Management 模块。
FAST_CLK 允许选择 XTL_CLK 的分频时钟或 RTC8M_CLK,用于驱动 On-chip Sensor 模块。

2.7 音频 PLL

音频应用和其他对于数据传输时效性要求很高的应用都需要高度可配置、低抖动并且精确的时钟源。来自系统
时钟的时钟源可能会携带抖动,并且不支持高精度的时钟频率配置。

发布了53 篇原创文章 · 获赞 21 · 访问量 8368

猜你喜欢

转载自blog.csdn.net/zztiger123/article/details/103890462