STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式

从时钟源的角度,分为两类外部时钟(E)和内部时钟(I)。

从时钟速率的角度,分为两类高速时钟(HS)和低速时钟(LS)。
而把它们组合起来就有四种时钟:HSE、HIS、LSE、LSI。至于为什么会有这么复杂的时钟配置,主要是考虑到系统的性能和功耗两个方面的因素吧。单一时钟的话可能会导致性能过剩并且功耗过高。多个时钟的话可以平衡功耗和性能之间的平衡。
特此说明一下,系统复位后,默认初始化的是HIS时钟提供sysclock。也就是16MHZ。为了提示系统性能,我们需要使能外部时钟晶振(板载25MHz)。使能后也明显可以看出来芯片的温度升高了(使用内部的温度传感器测试,在后续有图片为证)。
这四类时钟在芯片内部通过配置,完成对各个外设的驱动。到了芯片内部,对应到那么多的外设,时钟的分类就更多了,但是主要考虑到桥的存在,分为五类:AHB3、AHB2、AHB1、APB2、APB1。芯片内的所有外设都分别挂载在这五个总线上,至于哪个外设挂歪在哪个总线上,我们就需要查看芯片的RM0410 Reference manual(Page74)了。
今天为了测试时钟的配置,我就用通用定时器TIM2做下示范操作:
首先查看TIM2挂载在哪条总线:
可知挂载在APB1总线上。

接着就可以查看TIM的时钟回路

不论STM8还是STM32系列的MCU,芯片复位后默认时钟源都是内部HSI,要使用外部时钟源HSE的话,得通过软件对相关控制寄存器进行使能配置才行。

如果使用外部HSE的话,一般有两种模式:

1、外部晶体/陶瓷谐振器(HSE晶体)模式

这种模式用得比较常见,HSE晶体可以为系统提供较为精确的时钟源。在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。在启动时,直到这一位被硬件置’1’,时钟才被释放出来。HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。

该时钟源是由外部无源晶体与MCU内部时钟驱动电路共同配合形成,有一定的启动时间,精度较高。为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容必须尽可能地靠近振荡器引脚。负载电容值必须根据所选择的晶体来具体调整。手册里明确地写明了这句,很多时候似乎被无视了。关于这点,ST官方有专门出了个应用笔记,编号为AN2867。可以去www.stmcu.com.cn 或者www.st.com 搜索下载。

整体上讲,陶瓷晶体和石英晶体的主要区别就在于精度和温度稳定性上。石英晶体比陶瓷晶体精度要高,温度稳定性要好。

2、外部时钟源(HSE旁路)模式

该模式下必须提供外部时钟。用户通过设置时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN引脚,此时OSC_OUT引脚对外呈高阻态。

所谓HSE旁路模式,是指无需上面提到的使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。

不过,在使用该模式时,经常有人出现配置错误,即使用跟HSE晶体模式一样的配置。这点在STM8/STM32应用中都有人发生。 所幸的是使用这个旁路模式的情形不像使用外部晶体模式那么多,不然可能更多人在这里遇到麻烦。

我们不妨以STM3F4系列芯片为例。

关于寄存器位上面已经提到了,旁路模式除了配置HSEON还得配置HSEBYP位。

对于标准库函数voidRCC_HSEConfig(uint32_t RCC_HSE)

或CUBE库函数__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState)里的相关参数可能是:RCC_HSE_ON、 RCC_HSE_Bypass或RCC_HSE_OFF的其中之一。

如果使用STM32CUBEMX图形配置界面的话可以看到3个选项:

在ST MCU应用开发中,常有人会用到有源晶振作为时钟源。如果用它该选择哪种工作模式呢?

有源晶振一般是四脚封装,电源、地线、振荡输出和一个控制端【或者悬空端】。相比无源晶体,有源晶振本身就是个完整的振荡器件,只需要供给适当的电源就能输出时钟,无须额外的振荡驱动匹配电路。其时钟输出不依赖于外部器件振荡电路,相对更不容易受外部线路不稳定性的影响。自然其价格往往要高于无源晶体,不过其输出电平幅度往往不能像无源晶体那样随着应用电路的变化而变化。

不难看出,如果使用有源晶振作为外部时钟源的话,我们应该配置为HSE旁路模式,而不是HSE晶体模式。将有源晶振的输出脚接到MCU的OSC_IN脚。
---------------------
作者:无语僧314
来源:CSDN
原文:https://blog.csdn.net/wuyusheng314/article/details/78947096
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/-colin/p/9880421.html

时间: 2024-10-10 05:43:40

STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式的相关文章

LVS三种模式配置及优点缺点比较 转

LVS三种模式配置及优点缺点比较   作者:gzh0222,发布于2012-11-12,来源:CSDN   目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.linuxvirtualserver.org/VS-NAT.html http://www.linuxvirtualserver.org/VS-IPTunneling.html http://www

LVS三种模式配置及优点缺点比较

LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.linuxvirtualserver.org/VS-NAT.html http://www.linuxvirtualserver.org/VS-IPTunneling.html http://www.linuxvirtualserver.org/VS-DRouting.html 首先是安装ipvsadm管理程序

正则基础之——贪婪与非贪婪模式

转载自:http://blog.csdn.net/lxcnn/article/details/4756030 1        概述 贪婪与非贪婪模式影响的是被量词修饰的子表达式的匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配.非贪婪模式只被部分NFA引擎所支持. 属于贪婪模式的量词,也叫做匹配优先量词,包括: “{m,n}”.“{m,}”.“?”.“*”和“+”. 在一些使用NFA引擎的语言中,在匹配优先量词后加上“?”

深入 CSocket 编程之阻塞和非阻塞模式

有时,花上几个小时阅读.调试.跟踪优秀的源码程序,能够更快地掌握某些技术关键点和精髓.当然,前提是对这些技术大致上有一个了解. 我通过几个采用 CSocket 类编写并基于 Client/Server (客户端 / 服务端)的网络聊天和传输文件的程序 ( 详见: 源代码参考 ) ,在调试这些程序的过程中,追踪深入至 CSocket 类核心源码 Sockcore.cpp , 对于CSocket 类的运行机制可谓是一览无遗,并且对于阻塞和非阻塞方式下的 socket 程序的编写也是稍有体会. 阅读本

keepalived 非抢占模式

keepalived 非抢占模式 抢占模式为当keepalived的某台机器挂了之后VIP漂移到了备节点,当主节点恢复后主动将VIP再次抢回,keepalived默认工作在抢占模式下,而非抢占模式则是当主节挂了再次起来后不再抢回VIP.此处需要注意非抢占模式的keepalived其工作机制必须都为BACKUP,并且开启nopreempt选项. 实现keepalived 非抢占模式 准备主机2台 server host ip keepalived s1 172.20.27.10 keepalive

oracle非归档模式与归档模式的备份

不一致性备份:因为备份操作不可能瞬时完成,而数据文件时刻都在写,SCN时刻都在变,备份完第n个数据文件时, 第n+1个数据文件的SCN有可能已经与之前的都不同了. 不一致性的备份在恢复后必须借助归档日志文件和联机重做日志,将数据库修复到一致性的状态才能打开.因此,创 建不一致性备份除了备份数据库启动时必须的数据文件和控制文件之外,还需要备份归档日志文件. 一致性备份:备份的数据文件和控制文件拥有相同的SCN,即一致性备份.只有数据库以shutdown immediate方式关闭 .并且数据库未被

XCode工程中ARC模式与非ARC模式共用(转)

Xcode 项目中经常会融合一些老的代码,它们可能采用非ARC的模式.混合编译时,就会碰到编译出错的情况. 如何共用ARC模式和非ARC模式呢? XCode除了提供整个项目是否使用ARC模式的选择外,还可以对单个文件添加标签来指定是否采用ARC模式. 添加标签的方法: 打开:你的target -> Build Phases -> Compile Sources. 双击对应的 *.m 文件 在弹出窗口中输入上面提到的标签-fobjc-arc / -fno-objc-arc (1)如果你的项目使用

第15章 RCC—使用HSE/HSI配置时钟

本章参考资料:<STM32F7xx参考手册>RCC章节. 学习本章时,配合<STM32F7xx参考手册>RCC章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分. RCC :reset clock control  复位和时钟控制器.本章我们主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树,F767的一切时钟的来龙去脉都会了如指掌. 15.1  RCC主要作用-时钟部分 设置系统时钟SYSCLK.设置AHB分频因子(决定HCLK等于多少).设置APB2分频因子(决定PCL

RCC—使用HSE/HSI配置时钟

1.1 RCC主要作用—时钟部分 设置系统时钟SYSCLK.设置AHB分频因子(决定HCLK等于多少).设置APB2分频因子(决定PCLK2等于多少).设置APB1分频因子(决定PCLK1等于多少).设置各个外设的分频因子:控制AHB.APB2和APB1这三条总线时钟的开启.控制每个外设的时钟的开启.对于SYSCLK.HCLK.PCLK2.PCLK1这四个时钟的配置一般是:HCLK = SYSCLK=PLLCLK = 180M,PCLK2=HCLK/2 = 90M,PCLK1=HCLK/4 =