历史上的今天
今天是:2026年02月03日(星期二)
2023年02月03日 | MCU时钟相关功能引脚有什么作用
2023-02-03 来源:zhihu
今天给大家介绍的是i.MXRT1xxx系列MCU时钟相关功能引脚作用。
如果我们从一颗 MCU 芯片的引脚分类来看芯片功能,大概可以分为三大类:电源、时钟、外设功能。作为嵌入式开发者,大部分时候关注得都是外设功能引脚,而对于时钟相关引脚往往不太在意,其实有些时候利用时钟功能引脚也能助你定位问题。今天痞子衡就带你梳理一下 i.MXRT1xxx 系列的时钟系统以及相关功能引脚:
一、时钟系统简介
目前 i.MXRT1xxx 系列主要分为 i.MXRT10xx 和 i.MXRT11xx 两大分支。这两个分支的时钟系统设计是有一些差异的,不过总体来说,架构差别不大,我们以如下 i.MXRT1170 的时钟架构为例来具体介绍。
在时钟系统架构图里我们能看到有五大组件:OSC_PLL、CCM、LPCG、GPC、SRC,其中最核心的功能在前两个,OSC_PLL 主要负责产生时钟,CCM 主要用于分配时钟。

二、关于时钟源头
上一节里我们知道 OSC_PLL 模块负责所有时钟的生成,但那些时钟并不是凭空产生的,也是需要源头的。这个源头既可以来自芯片内部,也可以来自外部引脚输入。
先说芯片内部的 RC OSC,在芯片设计时,为了保证在没有外部时钟/晶振输入的情况下,芯片也能工作,所以内部集成了一些振荡器/振荡电路(RC Oscillator),32KHz 和 24MHz(48MHz) 是标配,部分型号上还有 16MHz、400MHz,不过这些内部振荡器精度有限(有可能误差20%),适用芯片低速运行场合。
如果是芯片高速运行的场合(或者对精度要求高的场合),那一定需要外接高精度振荡器,包含从 XTALI/XTALO 引脚进来的 24MHz OSC,以及从 RTC_XTALI/RTC_XTALO 引脚进来的 32.768KHz OSC,这两个外部时钟源是由 OSC_PLL 大模块内部的 XTALOSC 小模块负责管理的,XTALOSC 模块优先检测外部是否有 32.768KHz / 24MHz OSC 存在,如果存在则用外部源,如果不存在则启用内部 32KHz / 24MHz RC OSC 源。
24MHz OSC(内部或者外部源)是 OSC_PLL 内部 PLL 的主要时钟源,有了基准的 24MHz 时钟,PLL 就能将其倍频得到想要的高频时钟,芯片内部 PLL 有很多个,大部分 PLL 都只是输出固定原始频率时钟,少部分含 PFD 功能的 PLL(一般是 System PLL)可以调节原始频率输出。除了 24MHz OSC 外,PLL 也可以接受来自 CLK1_P/CLK1_N 引脚输入的源。
1. 对于 i.MXRT10xx 系列,PLL 时钟源选择在 CCM_ANALOG->PLL_xxx[BYPASS_CLK_SRC] 位
2. 对于 i.MXRT11xx 系列,PLL 时钟源由 Set Point 设置
| 时钟源输入 | i.MXRT1011 | i.MXRT1015/102x | i.MXRT105x/106x | i.MXRT11xx (116x/117x/118x) | i.MXRT118x |
|---|---|---|---|---|---|
| XTALI XTALO | LQFP80 - 37,38 | LQFP100 - 46,47 LQFP144 - 67,68 | BGA196 - N11,P11 | BGA289 - U16,T16 | BGA144 - M9,L9 |
| RTC_XTALI RTC_XTALO | LQFP80 - 27,28 | LQFP100 - 36,37 LQFP144 - 57,58 | BGA196 - N9,P9 | BGA289 - T13,U13 | BGA144 - M7,L7 |
| CLK1_P CLK1_N | N/A | N/A | BGA196 - N13,P13 | BGA289 - U15,T15 | BGA144 - M11,L11 |
三、关于时钟输出
前面讲了 32KHz / 24MHz OSC 是比较重要的时钟源头,它的精度对系统性能有很大影响,因此我们需要有一种方法实测这两个时钟的精度,芯片设计时特意在一些 I/O 引脚复用功能里做了 REF_CLK_24M / REF_CLK_32K 选项,当 I/O 配置为该功能时,便可用示波器量得具体时钟频率。
我们知道 CCM 模块负责 OSC_PLL 输出的时钟资源的分配,芯片里所有外设的具体时钟源指定以及分频系数、开关控制均由 CCM 来完成。如果你想观测某 PLL 最终输出或者常用外设时钟源最终配置,也可以通过指定 I/O 输出观测,即下面的 CCM_CLKO1 / CCM_CLKO2 复用功能选项。当然 CCM_CLKOx 不仅仅用于观测频率,也可以用于给外部芯片提供时钟源。
1. 对于 i.MXRT10xx 系列,CCM_CLKOx 时钟输出控制在 CCM->CCOSR 寄存器
2. 对于 i.MXRT11xx 系列,CCM_CLKOx 时钟输出控制在最后两个 CCM->CLOCK_ROOT_CONTROL 寄存器
| 时钟信号输出 | i.MXRT1011 | i.MXRT1015/102x | i.MXRT105x/106x | i.MXRT116x/117x | i.MXRT118x |
|---|---|---|---|---|---|
| REF_CLK_24M | GPIO_AD_14 | GPIO_AD_B0_01 GPIO_AD_B0_03 GPIO_AD_B0_13 | GPIO_AD_14 | N/A | |
| REF_CLK_32K | GPIO_AD_07 | GPIO_AD_B0_00 | GPIO_AD_13 | N/A | |
| CCM_CLKO1 | GPIO_SD_02 | GPIO_SD_B1_02 | GPIO_SD_B0_04 | GPIO_EMC_B1_40 | GPIO_EMC_B2_02 GPIO_SD_B1_00 |
| CCM_CLKO2 | GPIO_SD_01 | GPIO_SD_B1_03 | GPIO_SD_B0_05 | GPIO_EMC_B1_41 | GPIO_EMC_B2_08 GPIO_SD_B1_01 |
总结一下,时钟功能引脚尤其是输出引脚对于确认时钟频率具有重要意义,如果你的应用严重依赖时钟精度,遇到问题时不妨先检查一下时钟频率的准确性以及精度。
至此,i.MXRT1xxx系列MCU时钟相关功能引脚作用便介绍完毕了,
史海拾趣
|
1.示波器 示波器是一种测量电压波形的电子仪器,它可以把被测电压信号随时间变化的规律,用图形显示出来。使用示波器不仅可以直观而形象地观察被测物理量的变化全貌,而且可以通过它显示的波形,测量电压和电流,进行频率和相位的比较,以及描绘特 ...… 查看全部问答> |
|
组合逻辑的输出仅与当前的输入有关; 而时序逻辑的输出不但与输入有关,还和系统上一个状态有关。 这个话很清楚,可是具体是有些迷糊: 请达人分析下这个:PC=Int_Sev?Int_Sev_addr:{PC[31:5]+1\'b1,PC[4:0]},这个应该是组合逻辑呢?还是时序逻 ...… 查看全部问答> |
|
1.录音程序是参考微软官方网站的代码修改的 2.在虚机上第一次录音成功,但是第二次录音却失败了 3.在第一次录音结束,调用waveInReset方法的时候,声音消失 请教大家有遇到这样的问题吗,我使用的是Visual PC 如果有,请问用什么方法能避免这样 ...… 查看全部问答> |
|
最近在弄 wince6.0的multi-bin遇到了一些问题,想请教一下: 在BSP中我的config.bib是这样设置的: MEMORY XIPKERNEL 80200000 002FF000 RAMIMAGE &nbs ...… 查看全部问答> |
|
谁有EVB的打包程序啊,我下的EVB没有打包程序,编译出来的.VB程序无法在WIN CE上运行,谁能帮我做个打包程序嘛? 程序中要用到WIN CE file控件,MS CE comm控件,image控件,急需~~… 查看全部问答> |
|
各位老兄,一起收集较好的嵌入式论坛(ARM,DSP,FPGA,单片机都行) 我先来 eeworld 硬件嵌入式板块,自是不用说了,俺就是在这里成长的。 www.armce.com/bbs——这个专门wince的,我感觉也不错,里面收藏了很多原创和非原创工具 驱动开发网wince板块,以前很火,不知道为啥现在堕落了。 www.2@1i ...… 查看全部问答> |
|
一个高性能的交流伺服可以用哪些指标来衡量?比如调速范围,稳速精度,响应频率等再有就是这些指标具体多大(大概的一个数值)才算是高性能? 比如调速范围:满载条件下,不低于5000:1,不要动辄相信谁的伺服都能达到10000:1; 稳速精度:满载 ...… 查看全部问答> |




