首页 > 其他分享 >痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用

痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用

时间:2022-12-16 12:34:23浏览次数:66  
标签:24MHz 浅谈 痞子 晶振 RC24M MXRT10xx PLL 时钟


  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT10xx系列MCU外接24MHz晶振的作用

  痞子衡之前写过一篇关于时钟引脚的文章 ​​《i.MXRT1xxx系列MCU时钟相关功能引脚的作用》​​,里面简单提及了外部晶振相关引脚的作用,但是并没有详细展开。最近在客户支持中,有客户咨询项目板级设计上能否将外部 24MHz 晶振完全去掉,就使用芯片内部集成的 RC24M 做初始时钟源。今天痞子衡就详细展开这个话题:

  • Note: 本文中图片代码均以 i.MXRT1050 为例,但内容基本也适用其他 i.MXRT10xx 系列。

一、外部24MHz晶振作用

  i.MXRT 系列共有两组外接晶振专用引脚,XTALI/O 用于连接 24MHz 晶振,RTC_XTALI/O 用于连接 32.768KHz 晶振。其中低频 32.768KHz 晶振主要用于低功耗场景(SNVS 域),而高频 24MHz 晶振(即本文主角)主要是给内部 PLL 提供时钟源,它是高性能应用的保证。

  • Note: i.MXRT1011/102x 的 PLL 时钟源仅能是 OSC 24MHz,而 i.MXRT105x/106x 的 PLL 时钟源除了 OSC 24MHz 外,还可以是专门时钟输入引脚(CLK1_P/N)。

痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用_引脚

  外部 24MHz 晶振(XTAL24M)并不是直接连到 PLL 模块的,中间会经过芯片内部 OSC 24MHz 模块,而 OSC 24MHz 模块本身还包含了一个 RC24M 震荡电路,这是为了确保在没有外部 XTAL24M 的情况下,PLL 也能正常工作。

  • Note1: OSC 24MHz 模块的源可来自外部 XTAL24M 也可以是内部 RC24M,但这种切换不是自动的,需要在代码里主动切换。
  • Note2: RC24M 主要用于低速应用场合,并且以 RC24M 为源的功耗比以 XTAL24M 为源的功耗小很多。

痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用_嵌入式_02

二、内部RC24M振荡器能否替代外部24MHz晶振?

  我们知道内部 RC24M 精度较差,最差的情况甚至有 20% 的精度误差,这种情况下一些对精度要求高的外设(比如 USB、ENET)是无法使用 RC24M 为源的 PLL 输出作为时钟源的。

  如果你的应用里不涉及 USB、ENET 等外设,就使用了一些简单的 LPUART/LPSPI 等外设,那么是完全可以禁掉外部 XTAL24M 的使用的,切换代码如下。其中需要注意的是如果当前内核时钟源来自 PLL,那么必须先将内核时钟切到 OSC24M,否则 OSC24M 时钟源切换操作会直接导致代码跑飞(一旦 PLL 时钟源发生变化,输出会不稳,此时内核运行会出现异常):

void ClockSelectRcOsc(void)
{
// 将内核时钟源从 PLL 切换到 OSC 24M
CLOCK_SetMux(kCLOCK_PeriphClk2Mux, 1);
CLOCK_SetMux(kCLOCK_PeriphMux, 1);

// 将 OSC 24M 时钟源从外部 XTAL24 切换到内部 RC24M
CLOCK_InitRcOsc24M();
CLOCK_SwitchOsc(kCLOCK_RcOsc);
CLOCK_DeinitExternalClk();

// 恢复内核时钟源(这里的 m、n 为切换之前的配置)
CLOCK_SetMux(kCLOCK_PeriphClk2Mux, m);
CLOCK_SetMux(kCLOCK_PeriphMux, n);
}

  更多 RC24M 的应用详见 \SDK_2_12_0_EVKB-IMXRT1050\boards\evkbimxrt1050\demo_apps\power_mode_switch\bm 例程。

三、能否完全去掉外部24MHz晶振?

  既然在低速或者低功耗应用场合,RC24M 可以替代 XTAL24M,那么我们能不能直接把 XTAL24M 完全去掉呢?答案很遗憾,不能!因为芯片系统(内核、PLL)默认就是以 XTAL24M 为初始时钟源:

XTALOSC24M->LOWPWR_CTRL[OSC_SEL]    = 1'b0   // 24MHz clock from XTAL OSC
CCM_ANALOG->PLL_ARM[BYPASS_CLK_SRC] = 2'b00 // clock from REF_CLK_24M
CCM->CBCMR[PRE_PERIPH_CLK_SEL] = 2'b11 // clock from divided PLL1 (PLL_ARM)
CCM->CBCDR[PERIPH_CLK_SEL] = 1'b0 // clock from pre_periph_clk_sel

痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用_晶振_03

  如果没有外部 XTAL24M,芯片系统上电后,内核没有正确的时钟源,BootROM 代码无法正常执行,这时候甚至仿真器也没法找到内核,那后续设计也就没有任何意义。看到这里,你可能会明白,i.MXRT毕竟是跨界处理器,它是为高性能场景而生的,运行起来后切换到内部 RC24M 来降功耗只是它的附带功能而已。

  至此,i.MXRT10xx系列MCU外接24MHz晶振的作用便介绍完毕了,掌声在哪里~~~

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用_引脚_04

  最后欢迎关注痞子衡个人微信公众号【痞子衡嵌入式】,一个专注嵌入式技术的公众号,跟着痞子衡一起玩转嵌入式。


痞子衡嵌入式:浅谈i.MXRT10xx系列MCU外接24MHz晶振的作用_晶振_05


  衡杰(痞子衡),目前就职于恩智浦MCU系统部门,担任嵌入式系统应用工程师。

  可以关注痞子衡的Github主页 ​​https://github.com/JayHeng​​,有很多好玩的嵌入式项目。





标签:24MHz,浅谈,痞子,晶振,RC24M,MXRT10xx,PLL,时钟
From: https://blog.51cto.com/henjay724/5947129

相关文章

  • 一起来浅谈一下科技的产生吧!
       现阶段,手机、电脑、电视、空调、汽车等等,这些都是科学技术给人类带来的便利,科技在我们身边无处不在,无所不能,可以说我们的生活就离不开科技!   那我们现阶段的......
  • 【机器学习】李宏毅——浅谈机器学习原理+鱼与熊掌兼得的深度学习简述
    如何评判一个训练集的好坏如果我们希望得到一个训练集,并且用该训练集所训练出来的模型,在训练集上的误差和在整个数据空间上的误差相距较小,即写成如下表达式:\[L(h^{train}......
  • 浅谈CMakeLists.txt 增加软件版本信息(很方便)
    1.从一个CMakeLists.txt下手,如下:include_directories(${CMAKE_CURRENT_BINARY_DIR})应该放在最后,但是在引用lib前。#@warninghere:addthevariablesweneedand......
  • 浅谈单例模式的几种实现
     单例模式(来自菜鸟教程)单例模式(SingletonPattern)是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一......
  • 浅谈电能管理系统在某轧钢厂的应用
    罗轩志安科瑞电气股份有限公司 上海嘉定 201801 摘要:结合某轧钢厂的现状和电能管理软件的优势应用,在节能降耗方面利用电能管理软件对轧钢厂电能损耗进行实时监控,为实现......
  • 浅谈电能预付费系统在物业客户中的设计及应用
    罗轩志安科瑞电气股份有限公司上海嘉定201801【摘要】随着我国供电企业的不断发展,而用电模式也在不断改革,预付费技术在气、电等部门得到普遍的使用,本文主要针对预付费系......
  • 浅谈字节码增强技术系列1-字节码增强概览
    作者:董子龙前言前段时间一直想参照lombok的实现原理写一篇可以生成业务单据修改记录插件的专利,再查阅资料的过程中,偶然了解到了字节码增强工具-byteBuddy。但是由于当时时间......
  • 浅谈古建筑电气火灾的防控与管理
    罗轩志安科瑞电气股份有限公司 上海嘉定201801摘要:我国古建筑多为砖木结构,当发生火灾事故时具有蔓延快、扑救难的特点,而火灾对古建筑的损害性很大,电气火灾事故在我国火灾......
  • 《激励》读后浅谈--结合自己的一些实际管理经验讲点能懂的话
        人力资源是一个企业最重要的资源之一,其也可以作为公司核心竞争的重要因素。    公司要发展取决于人,所以公司员工的素质和活力是一个企业的根本动力,也是一个企业......
  • 浅谈Redis大Key与热Key
    如何定义大Key和热Key如何定义大Key如何定义热Key大Key和热Key产生的原因大Key和热Key有哪些危害大Key的危害热Key的危害如何发现大Ke......