RCC—使用 HSE/HSI 配置时钟 ---时钟树

本章参考资料:《 STM32F4xx 中文参考手册》 RCC 章节。
学习本章时,配合《 STM32F4xx 中文参考手册》 RCC 章节一起阅读,效果会更佳,特
别是涉及到寄存器说明的部分。
RCC : reset clock control 复位和时钟控制器。本章我们主要讲解时钟部分,特别是要
着重理解时钟树,理解了时钟树, F429 的一切时钟的来龙去脉都会了如指掌。

HSE时钟

HSE:High Speed External Clock signal,即高速的外部时钟。
来源:有源晶振(1-50M)、无源晶振(4-26M)
控制:RCC_CR 时钟控制寄存器的位16:HSEON控制

HSI时钟

HSI:High Speed Internal Clock signal,即高速的内部时钟。
来源:芯片内部,大小为16M,当HSE故障时,系统时钟会自动
切换到HSI,直到HSE启动成功。
控制: RCC_CR 时钟控制寄存器的位0:HSION控制

问题:有源晶振和无源晶振的区别?

为什么要通过PLL到180M而不直接接180M的晶振?

无源晶振有2个引脚,需要借助于外部的时钟电路(接到主IC内部的震荡电路)才能产生振荡信号,自身无法振荡。

有源晶振有4个引脚,是一个完整的振荡器,其中除了石英晶体外,还有晶体管和阻容元件.只需要电源,就可输出比较好的波形。

晶振频率越高,受温度的影响越大,这是制造工艺决定的....所以一般是外部接8-12M的晶振,然后内部锁相环升频,就会得到高频的时钟信号。

锁相环时钟
锁相环时钟:PLLCLK
来源:HSI、 HSE。由PLLSRC位配置。
HSE或者HSI先经过一个分频因子M进行分频,然后再经过一个
倍频因子N,然后再经过一个分频因子P,最后成为锁相环时钟
PLLCLK = (HSE/M) * N / P = 25/25 * 360 / 2 = 180M
控制: RCC_PLLCFGR :RCC PLL 配置寄存器
PLL48CK:USB_FS、 RANG、 SDIO提供时钟

系统时钟
缩写:SYSCLK,最高为180M,F407最高为168M。
来源:HSI、 HSE,PLLCLK。
控制: RCC_CFGR 时钟配置寄存器的SW位

HCLK时钟
HCLK:AHB高速总线时钟,最高为180M。为AHB总线的外设
提供时钟、为Cortex系统定时器提供时钟(SysTick)、为内核
提供时钟(FCLK)。
AHB为advanced high-performance bus。
来源:系统时钟分频得到。
控制: RCC_CFGR 时钟配置寄存器的HPRE位

PCLK1时钟
PCLK1:APB低速总线时钟,最高为45M。 为APB1总线的外设
提供时钟。 2倍频之后则为APB1总线的定时器提供时钟,最大
为90M。
来源:HCLK分频得到。
控制: RCC_CFGR 时钟配置寄存器的PPRE1位

PCLK2时钟
PCLK2:APB高速总线时钟,最高为90M。为APB2总线的外设
提供时钟。 2倍频之后则为APB2总线的定时器提供时钟,最大
为180M。
来源:HCLK分频得到。
控制: RCC_CFGR 时钟配置寄存器的PPRE2位

RTC时钟
RTC:为芯片内部的RTC提供时钟。
来源:HSE_RTC(HSE分频得到)、 LSE(外部32.768KHZ的晶
体提供)、 LSI(32KHZ)。
控制: RCC备份域控制寄存器RCC_BDCR:RTCSEL位控制
独立看门狗时钟:IWDGCLK,由LSI提供

I2S时钟:由外部的引脚I2S_CKIN或者PLLI2SCLK提供。
以太网PHY时钟:429没有集成PHY,只能外接PHY芯片,
比如LAN8720,那PHY时钟就由外部的PHY芯片提供,大小
为50M。
USB PHY时钟:429的USB没有集成PHY,要想实现USB高
速传输,只能外接PHY芯片,比如USB33000。那USB PHY时
钟就由外部的PHY芯片提供。

完整时钟树参考手册。

不得不说,ST给我们做好固件库之后,开发速率直线提升,比起2440好上手,这种时钟配置不需要我们关心,但2440什么都要自己来,相辅相成。

F103 系列中,使用 HSI 最大只能把系统设置为 64M,并不能跟使用 HSE 一样把系统
时钟设置为 72M,究其原因是 HSI 在进入 PLL 倍频的时候必须 2 分频,导致 PLL 倍频因子
调到最大也只能到 64M,而 HSE 进入 PLL 倍频的时候则不用 2 分频。
在 F429 中,无论是使用 HSI 还是 HSE 都可以把系统时钟设置为 180M,因为 HSE 或
者 HSI 在进入 PLL 倍频的时候都会被分频为 1M 之后再倍频。
还有一种情况是,有些用户不想用 HSE,想用 HSI,但是又不知道怎么用 HSI 来设置
系统时钟,因为调用库函数都是使用 HSE, 下面我们给出个使用 HSI 配置系统时钟例子,
起个抛砖引玉的作用。 BH有个参考历程,如果需要可以参考修改。

时间: 2024-08-24 09:59:36

RCC—使用 HSE/HSI 配置时钟 ---时钟树的相关文章

第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 =

Linux下时钟框架实践---一款芯片的时钟树配置

关键词:时钟.PLL.Mux.Divider.Gate.clk_summary等. 时钟和电源是各种设备的基础设施,整个时钟框架可以抽象为几种基本的元器件:负责提供晶振 Linux内核提供了良好的CCF(Common Clock Framework),框架的两端一个是provider,一个是consumer. provider指的是提供时钟模块,包括晶振.PLL.Mux.Divider.Gate等,consumer指的是使用这些时钟的模块. 1. Linux时钟框架基础 相关文档对时钟框架做了详

【stm32】时钟树解析

有时候会突然忘了这个重要的时钟树,这里转载一个比较好的,以防忘记. STM32时钟系统 在STM32中,有五个时钟源,为HSI.HSE.LSI.LSE.PLL. ①HSI是高速内部时钟,RC振荡器,频率为8MHz. ②HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz. ③LSI是低速内部时钟,RC振荡器,频率为40kHz. ④LSE是低速外部时钟,接频率为32.768kHz的石英晶体. ⑤PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2.HSE或

转 STM32 时钟树

本文章来自: http://www.openedv.com/posts/list/302.htm 作者 张洋 时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32.    下面是从网上找的一个STM32时钟框图,比<STM32中文参考手册>里面的是中途看起来清晰一些: 重要的时钟:  PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1.HSI:高速内部时钟信号 stm32单片机内带的时钟 (8M频率) 

AM335x时钟树

个人比较菜鸟,搞了AM335x快一年了,依旧对其时钟一脸蒙蔽,虽然RTM已经有对时钟的详细描述,但是依旧感觉不太熟悉,偶然机会逛TI论坛(http://www.deyisupport.com)知道有一个叫CTT的软件,其专门针对AM335x等开发板,直观的显示系统时钟,让我们能够很快知道该配置那些时钟,那些是已经设置好而不需要配置的. 1.CTT是什么,有什么用? CTT为Clock Tree Tool英文缩写,其主要针对TI部分CPU,用于快速便捷配置系统时钟,由于AM335x时钟比较麻烦,分

EFM32G232F64时钟树

1.为了熟悉MCU的时钟树,先看看EFM32G232F64的CMU(ClockManagementUnit) 时钟管理单元(CMU)用于管控晶振(时钟源)和各个时钟节点.出于降低功耗和启动时间的目的,EFM32G的时钟源支持数个不同规格的晶振.另外还有一个独立的RC振荡器用于烧写Flash和调试.当然,时钟管理单元也从硬件级别上支持RC振荡器的校准. 晶振和系统时钟树,对于降低MCU的系统功耗有巨大意义.有了低功耗的晶振再结合弹性的时钟控制策略,就可以在各种应用场合下降低功耗.不使用的外设就关掉

Lichee (六) 配置内核时的一点小优化

我们在分析<Lichee(二) 在sun4i_crane平台下的编译 >的时候,居然没有一个步骤是在配置内核 make ARCH=arm menuconfig 仔细的读过的代码的会发现,在build_kernel有这么一段话 if [ ! -e .config ]; then echo -e "\n\t\tUsing default config... ...!\n" cp arch/arm/configs/sun4i_crane_defconfig .config fi

配置openGL时遇到的一些问题

今天在配置openGL时遇到了一些问题,在各种"玩弄“后终于配置好了.(汗) 电脑为windows10(X64),原本是装好vs2015的,所以只需要下载一些头文件.OpenGL 下有一些重用的辅助库,比如glut,glew等等,在windows平台下需要自己安装,因为微软为了推广自己的DX,在windows下只支持openGL 1.1版本. 现在openGL已经发展到3.0了,因此我们需要自己下载配置这些库,在这里我们来安装glut, glee,  glew这三个库,以及一些OpenGL扩展支