大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是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时钟相关功能引脚作用痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页知乎主页微信公众号 平台上。

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

痞子衡嵌入式:浅谈i.MXRT1xxx系列MCU时钟相关功能引脚的作用的更多相关文章

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

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT10xx系列MCU外接24MHz晶振的作用. 痞子衡之前写过一篇关于时钟引脚的文章 <i.MXRT1xxx系列MCU时 ...

  2. 痞子衡嵌入式:利用i.MXRT1xxx系列ROM提供的FlexSPI driver API可轻松IAP

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT系列ROM中的FlexSPI驱动API实现IAP. 痞子衡的技术交流群里经常有群友提问: i.MXRT中的FlexSPI驱动 ...

  3. 痞子衡嵌入式:利用i.MXRT1xxx系列内部DCP引擎计算Hash值时需特别处理L1 D-Cache

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是利用i.MXRT1xxx系列内部DCP引擎计算Hash值时需特别处理L1 D-Cache. 关于i.MXRT1xxx系列内部通用数据协处 ...

  4. 痞子衡嵌入式:原来i.MXRT1xxx系列里也暗藏了Product ID寄存器

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1xxx系列里暗藏的Product ID寄存器. MCU 厂商在定义一个产品系列时,通常是会预先规划产品发展路线的(即会有一 ...

  5. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(1)- KBOOT架构

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT架构. Bootloader是嵌入式MCU开发里很常见的一种专用的应用程序,在一个没有Boo ...

  6. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(2)- KBOOT形态(ROM/Bootloader/Flashloader)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT形态. 痞子衡在前一篇文章里简介了 KBOOT架构,我们知道KBOOT是一个完善的Bootl ...

  7. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(3)- KBOOT配置(FOPT/BOOT Pin/BCA)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT配置. KBOOT是支持配置功能的,配置功能可分为两方面:一.芯片系统的启动配置:二.KBO ...

  8. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(9)- KBOOT特性(IntegrityCheck)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之完整性检测(Integrity Check)特性. Application完整性检测是非常 ...

  9. 痞子衡嵌入式:飞思卡尔Kinetis系列MCU启动那些事(11)- KBOOT特性(ROM API)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔Kinetis系列MCU的KBOOT之ROM API特性. KBOOT的ROM API特性主要存在于ROM Bootloader ...

随机推荐

  1. kafka指定partiton生产

    kafka发送一个消息的时候需要封装成一个ProducerRecord : public ProducerRecord(String topic, Integer partition, Long ti ...

  2. Idea中使用Lombok 编译报找不到符号

    1.问题描述 项目中使用了lombok,但是在idea编译过程是出现找不到符号.报错如下图所示:   file @Data @ApiModel(value = "HeadTeacherVO& ...

  3. Redis List Type

    Redis列表的操作命令和对应的api如下: lpush/rpush [list] [value] JedisAPI:public Long lpush/rpush(final String key, ...

  4. 您对 Distributed Transaction 有何了解?

    分布式事务是指单个事件导致两个或多个不能以原子方式提交的单独数据源的突 变的任何情况.在微服务的世界中,它变得更加复杂,因为每个服务都是一个工 作单元,并且大多数时候多个服务必须协同工作才能使业务成功 ...

  5. 使用 Docker, 7 个命令部署一个 Mesos 集群

    这个教程将给你展示怎样使用 Docker 容器提供一个单节点的 Mesos 集群(未来的一篇文章将展示怎样很容易的扩展这个到多个节点或者是见底部更新).这意味着你可以使用 7 个命令启动整个集群!不需 ...

  6. centos 安装solr6

    1.到solr官网下载.tgz 结尾的文件 2.tar zxvf solr*.tgz 解压文件 3.进入solr的解压目录里的bin目录 执行 ./solr start -force 执行成功后 可访 ...

  7. 4.7 ROS分布式通信

    4.7 ROS分布式通信 ROS是一个分布式计算环境.一个运行中的ROS系统可以包含分布在多台计算机上多个节点.根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信. 因此,ROS对网络配置 ...

  8. Python中的numpy库介绍!

    转自:https://blog.csdn.net/codedz/article/details/82869370 机器学习算法中大部分都是调用Numpy库来完成基础数值计算的.安装方法: pip3 i ...

  9. TL431常用电路整理

    熟悉电路制作的人大多对TL431并不陌生.由于TL431的动态抗阻的特性,其经常在电路设计当中被用于替代稳压二极管.不仅如此,TL431的开态响应速度快输出噪音低,并且价格低廉.因此受到电源工程师和初 ...

  10. HTML中meta标签详解;property=og标签详解

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.META标签是HTML语言HEAD区的一个辅助性标签,它位于HTML文档头部的<HEAD>标记和<TITLE>标记之 ...