ESP32学习笔记(七) 复位和时钟

ESP32学习笔记(七) 复位和时钟

目录:
ESP32学习笔记(一) 芯片型号介绍
ESP32学习笔记(二) 开发环境搭建 VSCode+platformio
ESP32学习笔记(三) 硬件资源介绍
ESP32学习笔记(四) 串口通信
ESP32学习笔记(五) 外部中断
ESP32学习笔记(六) 定时器
ESP32学习笔记(七) 复位和时钟

1.复位

2.系统时钟

2.1时钟树

image-20230104142954532

2.2时钟源

从时钟树可以看出 时钟源共七种

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

2.2.1 快速时钟

PLL_CLK

320 MHz 或 480 MHz 内部 PLL 时钟

XTL_CLK

2 ~ 40 MHz 外部晶振时钟,模组板载的是40MHz晶振

2.2.2 低功耗慢速时钟

XTL32K_CLK

32 KHz 外部晶振时钟,模组不含此晶振,但io被引出来了

RC_FAST_CLK

8 MHz 内部时钟,频率可调

RC_FAST_DIV_CLK

由 RC_FAST_CLK 经 256 分频所得,频率为 (RC_FAST_CLK/256)。当RC_FAST_CLK 的初始频率为 8 MHz 时,该时钟以 31.250 KHz 的频率运行。

RC_SLOW_CLK

150 KHz 内部低功耗时钟,频率可调

2.2.3 音频时钟

APLL_CLK

16 ~ 128 MHz 内部 Audio PLL 时钟

2.3时钟信号

2.3.1 CPU时钟

CPU_CLK

它在高效工作模式下,主频可以达到 240 MHz。同时, CPU 能够在超低频下工作,以减少功耗。

CPU_CLK 由 RTC_CNTL_SOC_CLK_SEL 来选择时钟源,允许选择 PLL_CLK, APLL_CLK, RC_FAST_CLK,XTL_CLK 作为 CPU_CLK 的时钟源。

image-20230104145910906

2.3.2 外设时钟

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

image-20230104144455788

APB_CLK

APB_CLK 时钟频率由 CPU_CLK 源决定

image-20230104144738502

REF_TICK

REF_TICK 时钟频率由 APB_CLK 分频产生, APB_CLK 时钟频率由 CPU_CLK 源决定。 REF_TICK 的时钟频率应固定,因此当切换 CPU_CLK 源时,应配置分频寄存器,使其频率固定。

image-20230104144920798

例如,当 REF_TICK 时钟频率固定为 1 MHz 时,如果 CPU_CLK 源为 PLL_CLK,则 REF_TICK 频率 = 80 MHz /(APB_CTRL_PLL_TICK_NUM+1) = 1 MHz,那么 APB_CTRL_PLL_TICK_NUM 应配置为 79 (0x4F)。

LEDC_SCLK

LEDC_SCLK 时钟源由寄存器 LEDC_APB_CLK_SEL 决定

image-20230104145034552

APLL_CLK

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

**PLL_D2_CLK **

PLL_D2_CLK 是 PLL_CLK 的二分频时钟。

2.3.3 Wi­Fi BT 时钟

APB_CLK(特例)

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

2.3.4 RTC时钟

RTC_SLOW_CLK

允许选择 RC_SLOW_CLK, XTL32K_CLK 或 RC_FAST_DIV_CLK,用于驱动 PowerManagement 模块。

RTC_FAST_CLK

允许选择 XTL_CLK 的分频时钟或 RC_FAST_CLK,用于驱动 On-chip Sensor 模块。

2.3.5 音频 PLL

Audio PLL

来自系统的时钟源都不精确 并且不支持高精度的时钟频率配置。 所以esp32集成了APLL_CLK时钟源 如下通常是40MHz

通过公式可配置出Audio PLL 时钟信号

image-20230104151715151

2.8 时钟配置注意事项

大多数外设一般在选择 PLL_CLK 时钟源的情况下工作。

3.相关API

arduino框架下的时钟配置函数

//function takes the following frequencies as valid values:
//  240, 160, 80    <<< For all XTAL types
//  40, 20, 10      <<< For 40MHz XTAL
//  26, 13          <<< For 26MHz XTAL
//  24, 12          <<< For 24MHz XTAL
bool setCpuFrequencyMhz(uint32_t cpu_freq_mhz);

uint32_t getCpuFrequencyMhz();  // In MHz
uint32_t getXtalFrequencyMhz(); // In MHz
uint32_t getApbFrequency();     // In Hz

通过上位机 看出默认的时钟信号频率

说明CPU_CLK选取内部PLL_CLK为时钟源480MHz 然后二分频

所以APB就为80MHz

image-20230104160610971

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ESP32的FreeRTOS使用上与传统的FreeRTOS有一些区别。在ESP32中,基本不需要单独配置FreeRTOSConfig.h文件,因为ESP-IDF中的menuconfig功能可以对所有涉及到的内容进行配置,使用起来更加直观和便利。主要的数据类型说明中,有一个重要的数据类型是TickType_t。 在ESP32的魔改版FreeRTOS中,很少使用正经的事件集,而是使用ESP-IDF提供的更方便的事件循环。这使得在ESP32中使用事件循环更加方便。 另外,ESP32的分区表是采用二进制格式而不是CSV文件。ESP-IDF提供了gen_esp32part.py工具来配置和构建分区表。默认情况下,使用的是默认分区表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【ESP32+freeRTOS学习笔记-(一)freeRTOS介绍】](https://blog.csdn.net/weixin_45499326/article/details/128226443)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [ESPIDF开发ESP32学习笔记ESP32上的FreeRTOS】](https://blog.csdn.net/qq_40500005/article/details/114794039)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值