为什么有的MCU外接24MHz晶振不能去掉

发布时间:2023-03-28  

痞子衡之前写过一篇关于时钟引脚的文章 《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)。


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

  • Note1: OSC 24MHz 模块的源可来自外部 XTAL24M 也可以是内部 RC24M,但这种切换不是自动的,需要在代码里主动切换。

  • Note2: RC24M 主要用于低速应用场合,并且以 RC24M 为源的功耗比以 XTAL24M 为源的功耗小很多。


二、内部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-IMXRT1050boardsevkbimxrt1050demo_appspower_mode_switchbm 例程。


三、能否完全去掉外部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


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

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


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    也不例外。 其中主频4M8M、16M、24M、32M和48M居多,一般搭配常用日本大真空KDS、日本电波NDK 8MHZ 晶振;时钟频率即是最常见的32.768KHZ晶振。 如图所示: 一、KDS......
    电路错误的可能性,因此你可以用相应型号单片机的推荐电路进行比较。 (2) 排除外围元件不良的可能性,因为外围零件无非为电阻,电容,你很容易鉴别是否为良品。 (3) 排除晶振为停振品的可能性,因为你不会只试了一二个晶振......
    场具有龙门架、桥梁、隧道口等可以用于安装测速仪的设施。平板雷达后两种安装方式一般适用于移动测速抓拍系统。 ......
    不匹配或者电容质量有问题;⑤PCB板受潮,导致阻抗失配而不能起振;⑥ 晶振电路的走线过长;⑦晶振两脚之间有走线;⑧外围电路的影响。 解决方案,建议按如下方法逐个排除故障: ① 排除电路错误的可能性,因此可以用......
    ,给单片机提供主时钟的晶振和给RTC提供时钟的晶振。实际上,若用不到RTC功能,那么RTC晶振可不连接。 上图主时钟晶振,为了程序的通用性一般用8M。 上图是RTC时钟晶振,需要......
    详细的参数规格书发给客户确认,才能正常出货。如果晶振型号选择不当,将导致应用错误。 五、代换原则 一个晶振如果损坏了,原则上应选用原型号晶振代换。在没有原型号时,最好经过测试后,可以考虑用其他型号或其他类型的晶振来代换。 ......
    确实会自动切换到内部时钟,但是只会以8M的默认值运行,显然这是十分不可行的,8M的速度直接让我们的STM32病入膏肓,今天的任务就是让STM32失去外挂(晶振)时,依旧可以激情澎湃。 时钟......
    接触不良。只要将其补焊即可解决问题。 稳压IC和主控:稳压又称LDO,其输入端5V,输出3V,有些劣质U盘的稳压IC很小,容易过热而烧毁。还有USB电源接反也会造成稳压IC烧毁。维修时可以用......
    的信号。具体代码如下: 针对上面的分析,把RTC时钟源更改为HSE_RTC,如下图一,图二, AT slave例程可以正常运行,32MHZ晶振可以起振,使用AT指令可以测量出RF有正......
    号。具体代码如下: 针对上面的分析,把RTC时钟源更改为HSE_RTC,如下图一,图二, AT slave例程可以正常运行,32MHZ晶振可以起振,使用AT指令可以测量出RF有正常发射出信号。 图一......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>