为什么要讲时钟?时钟的重要性想必不用多说了,众所周知。
为什么要讲时钟树?其实在我们学习51单片机的时候,基本上不会特别关注时钟,因为它的时钟非常简单,时钟源也只有1个。但是在ARM系列的单片机或者更高级的MPU里,时钟系统是非常复杂的,时钟源也不止一个,例如STM32F103的系统时钟,它就有好几个时钟源。
为什么这些芯片的时钟系统这么复杂呢?这是因为性能越高的芯片外设资源就非常丰富,但是并不是所有外设都需要系统时钟这么高的频率,比如RTC功能只需要几十KHz的时钟,而且,同一个电路,时钟快有的时候不一定是好事,比如会有更大的功耗,抗电磁干扰能力也会弱。所以对于较为复杂的单片机,一般都是采取多时钟源的方法来解决这些问题。
下面来看下STM32F103芯片的引脚中,和时钟相关的就5个。OSC_IN、OSC_OUT、OSC32_IN、OSC32_OUT、MCO。这些引脚分别对应的是什么呢?
OSC_IN与OSC_OUT,是外接高速时钟源,频率范围为4MHz~16MHz,典型值是8M,电路是皮尔斯振荡电路。
OSC32_IN与OSC32_OUT是外接低速时钟源,一般接32.768kHz的晶振。
MCO是Microcontroller Clock Output,是单片机时钟输出引脚,可以对外部器件或电路提供时钟信号,一般最高时钟输出频率不得超过I/O的输出速率。
除了可以外接8M和32.768kHz晶振之外,在STM32内部还有自带的RC振荡时钟,8 MHz高速时钟和40KHz低速时钟。
在STM32中,可以用内部时钟,也可以用外部时钟的。什么时候选外部,什么时候用外部呢。在要求精度高的应用场合,最好用外部晶体震荡器,因此内部时钟会由于芯片的温度等一系列原因,存在一定的精度误差,具体的原因可以回看下之前我们讲过的为什么不把晶振集成在芯片内。这里就不再扩展的说了。
这些时钟到STM32内部是怎么工作的呢?这就是涉及到SMT32的内部时钟树了。
时钟树这个概念的由来,是让控制芯片时钟的系统更加清晰,通常由以下几个部分组成:
1、时钟源:包括内部振荡器和外部晶振,用于提供系统时钟的基本频率,就是我们上面说到的。
2、PLL(锁相环):用于将时钟源的频率倍频,从而得到需要的主时钟频率。像STM32F103就是通过PLL倍频到72MHz,这个就是我们通常说的单片机的工作频率。
3、时钟分频器:就是将PLL倍频得到的主时钟,再通过分频得到其他需要的时钟频率,例如外设的时钟频率、总线时钟频率等。
这个STM32的时钟树,这里我把它分成几级来看:
先看第一级,在 STM32 中,有六个时钟源,为 HSI、HSE、 LSI、LSE、PLL以及RTC。
HSI(高速内部时钟):HSI时钟源是内部RC振荡器提供的高速时钟源,其频率为8MHz。
HSE(高速外部时钟):HSE时钟源是外部晶体振荡器提供的高速时钟源,其频率范围为4MHz至16MHz。
PLL(锁相环):PLL是通过将HSI或HSE时钟源输入到PLL模块来生成高速时钟源的,其输出频率可以是2倍、4倍、6倍或8倍于输入频率。
LSI(低速内部时钟):LSI时钟源是内部RC振荡器提供的低速时钟源,其频率为40kHz。
LSE(低速外部时钟):LSE时钟源是外部低速晶体振荡器提供的低速时钟源,其频率为32.768kHz。
RTC(实时时钟):RTC时钟源是LSE时钟源输入到RTC模块来提供的,用于提供实时时钟和日历功能。
从时钟频率来分可以分为高速时钟源和低速时钟源,在这 6个中 HSI、HSE 、PLL 是高速时钟,LSI、LSE、RTC是低速时钟。从来源可分为外部时钟源和内部时钟源。
第二级中,是直接使用了时钟源的时钟的,有flash的时钟,使用的是HSI 8MHz,RTC的时钟可以使用LSE时钟、也可以使用LSI,或者HSE的128分频,独立的看门狗时钟则是LSI时钟,还有USB时钟使用的是PLL倍频后又进行分频的48MHz。
第三级则倍频得到系统72MHz之后,预分频器AHB,这里的时钟就开始给外设使用,比如外设的时钟使能SDIO,FSMC。
然后下一级是APB1和APB2。其中,APB1 上面连接的是低速外设,包括CAN、USB、I2C1、I2C2、UART2、UART3等等, APB2 上面连接的是高速外设包括 UART1、 SPI1、 Timer1、ADC1、 ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。
一眼看去时钟树非常复杂,但是一级一级分解去看,就会很好理解了。
了解了时钟树之后,就需要在寄存器里进行时钟系统的配置了,在技术参考手册stm32 reference manual文档中可以查看。需要注意的是不同的外设对时钟频率有不同的要求,一定要根据具体的应用需求来确定各个时钟频率。
好了,关于芯片的时钟引脚解读就到这里了。
审核编辑:刘清
相关推荐
赢得越来越多的关注。时钟芯片是高性能通讯系统中必不可少的核心芯片,其性能及可靠性直接影响着通讯系统的主要性能和系统稳定性。高速数据通信为了降低误码率,需要保持尽可能低的系统抖动及时钟抖动。5G网络需要
发表于 06-08 12:54
在蓝牙的例程中,在睡眠中醒来后,总是要等待32M时钟稳定。 但是在时钟管理中看到,CK32K时钟,可以作为HCLK的时钟,为什么不用CK32K时钟作为系统时钟呢?CK32K在睡眠中不会关闭,在唤醒任务中是否会更省电?
发表于 08-05 07:06
如题为什么ARM这么流行呢?
发表于 03-28 14:28
每天的效率怎么这么低呢
发表于 05-11 16:11
应用系统的子系统,例如处理器、FPGA、数据转换器等。此类复杂系统需要动态更新参考时钟的频率,以实现 PCIe 和以太网等其它诸多协议。时钟 IC 属于 I2C 从器件,需要主控制器来配置内部 PLL
发表于 08-27 09:46
TLC5510模数转换芯片,如果我需要转换10M的信号,那么芯片的采样时钟频率则至少需要20M,或者更大,单片机无法产生这么高的时钟频率,我该如何得到高频率的时钟信号呢
发表于 06-10 08:52
,采用一个系统时钟不是很简单吗?为什么 STM32 要有多个时钟源呢? 因为首先 STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十
发表于 09-01 17:33
,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢?我们在学习51单片机时,其最小系统必有晶振电路,这块电路就是单片机的时钟来源,晶振的振荡频率
发表于 07-20 06:03
时钟系统概述定义时钟系统,它是由振荡器(信号源)、定时唤醒器、分频器等组成的电路。常用的信号源有晶体振荡器和RC振荡器。功能时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作
发表于 08-02 08:32
STM32为什么要有复杂的时钟系统首先STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十 k 的时钟源即可。同一个电路,时钟越快
发表于 08-06 08:36
IWDG独立看门狗时钟四、MCO时钟输出五、stm32时钟系统的编程5.1 系统启动文件的默认时钟配置5.2 时钟配置函数为什么stm32要设计如此复杂的时钟树?大大节省功耗,需要用到的外设开启时钟,不需...
发表于 08-06 08:52
的心跳一样。所以时钟系统对于单片机来讲是一个非常重要的东西。STM32F7的时钟系统比较复杂,有多个时钟源,为什么STM32要有多个时钟源呢?因为首先STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统
发表于 08-10 06:36
的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。 为什么 STM32 要有多个时钟源呢? 因为首 先STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高
发表于 08-10 06:36
stm32时钟系统基于stm32f407zgt6芯片给单片机提供一个时钟信号(一个非常稳定的频率信号),使单片机各内部组件同步工作,并且在和外部设备通信时是也能达到同步。为什么要了解时钟体系呢?动态
发表于 08-10 08:10
1. STM32L4 时钟树概述时钟系统是 CPU 的脉搏,就像人的心跳一样。STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率。比如看门狗以及 RTC 只需要几十
发表于 08-10 06:40
运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢? STM32本身十分复杂,外设非常多但我们实际使用的时候只会用到...
发表于 08-10 06:07
的各个时钟都是由分频器或者PLL锁相环来确定的。STM32时钟树图(如下图)那么问题就来了,这些分频器和锁相环的参数以及系统时钟源的选择是从哪里设置的呢?是什么时候设置的?答案:在system_stm32f10x.c文件和启动文件中。(这里以STM32f103为例)STM32启动文件中会调
发表于 08-11 09:03
,重要性不言而喻。不同于51单片机一个系统时钟解决一切问题,STM32 有多个时钟源。这是因为STM32本身的外设非常多,但并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需几十
发表于 08-12 06:10
单片机一样一个系统时钟就可以担负整个系统的使用。那么STM32F4时钟系统较为复杂到底牵扯到了那些地方呢。STM32F4中是有很多外设的,并不一定所有外设都用同一个时钟,看门狗、RTC就只需要几...
发表于 08-12 07:00
心跳,人才能做其他的事情,而单片机有了时钟,才能够运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢?STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启
发表于 08-12 06:40
“我们一直都说STM32有一个非常复杂的时钟系统,然而在原子或者野火的例程中,只要涉及到时钟,我们却只能看到类似的库函数调用,如RCC_APB2PeriphClockCmd
发表于 08-12 06:54
非常多,但是并非所有外设都需要系统时钟这么高的频率,比如看门狗和RTC只需要几十K的时钟即可。同一个电路,时钟越快,功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般采用多时钟源的方法来
发表于 08-12 06:45
的时钟是25M,由于该单片机时钟系统较为复杂,有内部高/低、外部高/低 、PLL锁相环时钟,又有AHB总线时钟、APB1/2时钟,而例子中很少讲到系统时钟的默认配置是怎么配置呢?那么就发点时间研究下这个单...
发表于 08-12 08:09
复杂的时钟配置,主要是考虑到系统的性能和功耗两个方面的因素吧。单一时钟的话可能会导致性能过剩并且功耗过高。多个时钟的话可以平衡功耗和性能之间的平衡。特此说明一下,系统复位后,默认初始化的是HIS时...
发表于 08-18 06:21
运行的基础,时钟信号推动单片机内各个部分执行相应的指令。时钟系统就是CPU的脉搏,决定cpu速率。为什么这么多个时钟源:STM32系统是复杂的,高精度、低精度、高速、低速等,且可以对每个时钟源进行开关操作,可以把不需要使用的关闭掉。这可以让单片机适
发表于 08-18 07:00
复杂的时钟配置,主要是考虑到系统的性能和功耗两个方面的因素吧。单一时钟的话可能会导致性能过剩并且功耗过高。多个时钟的话可以平衡功耗和性能之间的平衡。特此说明一下,系统复位后,默认初始化的是HI...
发表于 08-18 06:26
个系统时钟就可以解决一切。于 是有人要问,采用一个系统时钟不是很简单吗?为什么 STM32 要有多个时钟源呢? 因为首先 STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这...
发表于 08-19 06:43
记录一下,方便以后翻阅~主要内容:1) 时钟系统框图解读;2) 时钟系统配置相关函数解读。1. 为什么 STM32 要有多个时钟源呢?因为STM32非常复杂,外设多,但并不是所有外设都需要系统时钟
发表于 08-19 08:17
系统时钟不是很简单吗?为什么 STM32 要有多个时钟源呢?因为首先STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十 k 的时钟
发表于 08-19 06:27
运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。为什么 STM32 要有多个时钟源呢?STM32本身十分复杂,外设非常多但我们实际使用的时...
发表于 08-20 06:30
时钟系统就是CPU的脉搏,像人的心跳一样,重要性不言而喻。由于STM32本身十分复杂,外设非常多,但并不是所有的外设都需要系统时钟那么高的频率,比如看门狗以及RTC只需要几十k的时钟即可。并且
发表于 08-20 07:59
众所周知,时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人要问,采用一个系统时钟不
发表于 08-23 08:19
有哪几种不同的时钟源可以用来驱动系统时钟呢?有哪些操作步骤?
发表于 09-24 07:19
2C1的工作时钟是由哪几部分成的?如何去使用STM32F0芯片的I2C1工作时钟呢?
发表于 11-01 06:11
STM32为什么要有复杂的时钟系统呢?STM32有几个时钟源呢?
发表于 11-05 07:46
STM32中有几个时钟源呢?如何对STM32时钟系统进行配置呢?
发表于 11-08 06:23
RCC的主要作用是什么?RCC时钟结构是由哪些部分组成的?怎样去配置RCC系统时钟呢?
发表于 11-08 09:09
如何去配置STM32芯片的系统时钟频率呢?怎样去验证STM32芯片的系统时钟频率呢?
发表于 11-10 07:23
RCC时钟树是由哪些部分组成的?如何去实现RCC系统时钟的软硬件设计呢?
发表于 11-10 07:20
在STM32上如果不使用外部晶振会怎样?如何配置RCC的系统时钟呢?
发表于 11-11 06:11
RCC系统时钟是由哪些部分组成的?怎样去设置系统时钟的库函数呢?有哪些步骤?
发表于 11-12 07:02
STM32时钟系统有哪几种时钟源可以驱动系统时钟呢?STM32时钟系统是由哪些部分组成的?
发表于 11-22 06:17
STM32为什么会有这么复杂的时钟配置呢?STM32F4芯片在ST MCU应用开发中该选择哪种工作模式呢?
发表于 11-22 07:05
STM32系统为什么要有时钟?为什么有这么多个时钟源?STM32系统时钟的框架是由哪些部分组成的?
发表于 11-22 07:00
STM32的最小系统是由哪些部分组成的?STM32的时钟系统有哪几个时钟源呢?
发表于 11-22 06:42
什么是RCC系统呢?RCC时钟框图是由哪些部分组成的?怎样通过RCC时钟框图进一步了解某些时钟呢?
发表于 11-22 07:55
在STM32中共有几个时钟源呢?STM32的时钟系统有哪些相关的寄存器呢?
发表于 11-23 07:26
如何对STM32f407系统定时器的时钟进行配置呢?怎样去计算STM32f407系统定时器的时钟频率呢?
发表于 11-24 06:42
为什么STM32要有多个时钟源呢?时钟源是怎么给STM32各个外设以及系统提供时钟的呢?
发表于 11-24 06:29
什么叫推挽输出?什么叫开漏输出?如何对STM32芯片的时钟进行初始化呢?
发表于 11-26 06:42
stm32的启动过程是怎样的?stm32的时钟系统是由哪些部分组成的?stm32时钟系统的中断编程该如何去实现呢?
发表于 11-29 06:11
RT-Thread代码启动过程是怎样的?如何对RTOS系统时钟(滴答定时器)进行初始化呢?如何去配置其系统时钟呢?
发表于 11-30 07:48
STM32系统架构基础名词有哪些呢?STM32时钟系统有哪些性能呢?
发表于 12-14 07:49
时钟在芯片运行中的地位如同心脏在人体中的地位。所以好代码的前提自然需要一个配置正确的时钟!时钟乱了,代码九重天都能飞上去!但是一款芯片的时钟系统是复杂的,我们需要时间去了解,尤其在涉及到带睡眠唤醒
发表于 01-10 07:24
时钟系统为硬件系统的各个模块提供时钟信号,就像人的脉搏心跳一样不可或缺,而stm32的结构较为复杂,不同的硬件可能对时钟信号有不同的要求,因此在系统中设置多个振荡器,分别提供时钟信号,实际中经常从一
发表于 01-11 07:31
关注+星标公众号,不错过精彩内容编排|strongerHuang微信公众号 |嵌入式专栏有很多初学者都会问:我到底是该学C语言,还是学C++,或者JAVA呢?为什么有这么多编程语言呢...
发表于 01-12 06:34
为什么要有时钟RCC呢?STM32系统时钟是由哪些部分组成的呢?
发表于 01-26 06:50
ZYNQ主要由哪几大部分组成呢?怎样使用ZYNQ去实现一种复杂嵌入式系统的设计呢?
发表于 01-26 07:16
,ADC),时钟的重要性不言而喻。为什么STM32要有多个时钟源呢? STM32本身十分复杂,外设非常多但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同速度的设备,有些高速,
发表于 02-14 07:52
和动态显示,动态显示需要占用cpu大量时间来运行,不需要复杂的驱动程序,制作成本不高。第二种是LCD1602液晶显示,能显示出较多的信息并且数字清晰,应用广泛,但是不便于观察。总设计思路阐述1.时钟方案设计及选择:目前有DS3231、DS302、DS12C887三种时钟芯片。本次设计选择DS32
发表于 02-28 06:05
如何对实时时钟RTC芯片进行调试呢?
发表于 03-04 07:33
时钟系统设计:本系统使用专用时钟芯片DS1302产生时间,对8051系列单片机编程,用8051系列单片机控制时钟芯片,产生时间,读时间及显示时间,利用外部中断服务程序控制键盘设
发表于 06-28 00:05
•32次下载
对于一些测控系统或者手持式设备,经常需要显示以及设定时间。目前,市场上有多种实时时钟芯片提供了这类功能。这种可编程的实时时钟芯片内置了可编程的日历时钟以及一定的RAM存储器,用于设定以及保存时间
发表于 03-16 15:31
•14次下载
的子系统,例如处理器、FPGA、数据转换器等。此类复杂系统需要动态更新参考时钟的频率,以实现PCIe 和以太网等其它诸多协议。时钟IC属于I2C从器件,需要主控制器来配置内部PLL逻辑,其控制逻辑可以写入微控制器内。作为I2C 主机,微控制器将配置写入
发表于 11-03 10:40
•0次下载
RTX51tiny 复杂应用---时钟、温度显示、按键解析
发表于 11-21 13:06
•22次下载
STM32为什么要有复杂的时钟系统首先STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及 RTC 只需要几十 k 的时钟源即可。同一个电路,时钟越快
发表于 11-23 18:21
•8次下载
STM32F4时钟系统概述时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。 STM32F4 的时钟系统比较复杂,不像简单的 51 单片机一个系统时钟就可以解决一切。于是有人
发表于 11-25 20:06
•44次下载
IWDG独立看门狗时钟四、MCO时钟输出五、stm32时钟系统的编程5.1 系统启动文件的默认时钟配置5.2 时钟配置函数为什么stm32要设计如此复杂的时钟树?大大节省功耗,需要用到的外设开启时钟,不需...
发表于 12-01 14:36
•10次下载
记录一下,方便以后翻阅~主要内容:1) 时钟系统框图解读;2) 时钟系统配置相关函数解读。1. 为什么 STM32 要有多个时钟源呢?因为STM32非常复杂,外设多,但并不是所有外设都需要系统时钟
发表于 12-08 15:51
•11次下载
,ADC),时钟的重要性不言而喻。为什么STM32要有多个时钟源呢? STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到有限的几个外设,使用任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,为了兼容不同
发表于 12-09 13:21
•10次下载
运行执行指令,才能够做其他的处理 (点灯,串口,ADC),时钟的重要性不言而喻。 为什么 STM32 要有多个时钟源呢? STM32本身十分复杂,外设非常多 但我们实际使用的时候只会用到...
发表于 12-14 18:59
•1次下载
STM32本身十分复杂,外设非常多,任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,如果都用高速时钟势必造成浪费。
发表于 02-08 16:23
•1次下载
目前,在市场所比较流行的时钟芯片有很多种,并且被广泛的使用。这些时钟芯片具有着价格低廉、使用方便、功能强大的作用。那么时钟芯片有哪些呢,它的主要作用又是什么呢?接下来就和小编一起来了解一个时钟芯片吧。
发表于 10-18 15:18
•3.9w次阅读
本文主要介绍了时钟芯片有哪些、时钟芯片结构与工作原理,其次介绍了时钟芯片布线与时钟芯片的作用,最后介绍了时钟芯片选型以及爱普生实时时钟芯片规格书与选型手册。
发表于 01-29 08:44
•3.7w次阅读
为今天的高速系统设计时钟定时电路不是一件简单的事情。不断提高的时钟频率、不断缩小的定时裕度和越来越紧张的电路板布局导致一系列的偏移、噪声、串扰及其他信号完整性问题。在今天的许多复杂系统中,设计师必须
发表于 11-13 16:14
•80次阅读
了解如何在System Generator中使用多个时钟域,从而可以实现复杂的DSP系统。
发表于 11-27 06:42
•3072次阅读
首先,我们看一下时钟信号中最常见到的波形 - 矩形波(尤其是方波更常用)。在较低时钟频率的系统中我们看到的基本上都是以矩形波为主的时钟信号,因为电路基本上都是靠时钟的边沿(上升沿或下降沿)进行
发表于 12-06 11:53
•5.5w次阅读
Kyle Beckmeyer特别于近期撰写一篇技术文章,说明关于新型智能汽车的时钟设计关键需求与理想的时钟发生器解决方案。 您将了解到 汽车电子中所需的精密参考时钟数量正在增加系统设计的复杂性并改变最佳实践方法。 将时钟需求从石英换成硅芯片的好处
发表于 05-03 18:31
•1061次阅读
很多朋友或许都会注意到,像手机、电脑等一些科技产品都有一个共同的特点——能够准确的显示时间,不管我们何时开机或者关机,其都能够将准确的时间现实给我们。这到底是为什么呢?下面,小编就为朋友们揭晓答案:因为这些产品中存在时钟芯片。下面我们就一起看看时钟芯片有哪些,时钟芯片
发表于 05-18 09:06
•3629次阅读
芯片想必大家都很熟悉,光刻机是是制造芯片的核心装备,并且光刻机只有一小部分国家拥有,那么光刻机为什么这么难呢? 据说越小的东西,建造起来就越困难。 这句话不是没有道理的。 尽管手机中的芯片只有指甲
发表于 07-10 17:37
•5869次阅读
如果用一个自由振荡的振荡器,给MCU提供时钟。会咋样呢?
发表于 10-25 14:05
•223次阅读
评论