STM32那点事(2)_时钟树(上)
时钟树属于STM32内部资源,是整个芯片内部模块种最难看懂的一部分,相对于其他高性能CPU芯片,STM32时钟树相对没有那么复杂,了解STM32时钟树对熟悉整个芯片内部架构非常有帮助,进一步学习其他高性能CPU芯片也不再话下。
STM32整个时钟树图如下:
整个时钟树第一次看起来比较复杂,可以按照分块进行一一介绍,将其进行拆解(复杂东西合理拆解,看起来就没那么复杂,哈哈)
时钟来源
STM32时钟来源有两个,一个是外部时钟HSE,一个内部16MHZ HSI,由于精度问题一般都是采用外部时钟,当外部时钟出现问题时,可以通过配置寄存器时自动切换到外部时钟。
外部时钟频率范围可以是4~26MHz,分为有源和无源晶振,其中OSC_IN 引脚进入, OSC_OUT 引脚悬空 。无源晶振,OSC_IN和OSC_OUT 都需要链接,并且要配相应的外设电路。
PLL锁相环
PLL主要作用是对输入的时钟频率倍频,将时钟倍频到相应所需要的时钟频率输出到各个功能部件种。STM32有两个PLL,如下图所示:
两个PLL一个是主PLL用于产生PLLCLK用于系统时钟,一个是PLLl2SCLK,专门用于I2S模块。
主PLL
主PLL主要是产生系统时钟,其主要流程主要如下,下面将按照如下箭头分别描述
以外部时钟输入为例子,外部时钟选取为8MHz作为用例,外部时钟输入首先遇到第1分频因子M
1:M
M作为外部时钟遇到的第一个分频因子,其分频值可以为(2~63),主要是将分频的时钟作为VCO的输入,VOC的频率为1MHz或2MHz, VOC的输入频率fvoc 等于HSE的频率/M, 例子种HSE的频率为8MHz,将fvoc的频率配置为1Mhz,则 M=8.在代码种M为 PLL_M
HSE的频率宏定义为:HSE_BYPASS_INPUT_FREQUENCY
2和3: VOC/N
VOC猜测是为了得到更准确得时钟频率,需要首先将外部时钟进行初步分频,以排除干扰。VOC经过N倍分频之后得到VOC的输出频率,VOC的输出频率位于VCO 时钟必须在 192~432MHz 之间,才能保证时钟准确性,因为STM32系统时钟工作在168MHz,所以将VOC的输出频率配置为336MHz, VOC的输出频率为VOC的输入频率*N,(可以看出系统时钟树中的框图XN,代表为乘以N),则N配置为336.
由上述几步可以得知以下VOC的输出时钟公式:
f(VCO 时钟) = f(HSE 时钟输入) × (PLLN / PLLM)
M和N的值可以通过RCC_PLLCFGR寄存器来配置。寄存器不再详细描述,可以查看datasheet.
4,5,6:分频因子
VOS输出之后有三个分频因子:P, Q和R,其中P分频之后为系统时钟PLLCLK,PLLCLK为168MHz,故P为2. Q分频之后为外设时钟,供给USB OTG FS/RNG/SDIO时钟为48MHz,故 Q=336/48=7. R STMF407系列没有使用,只有F466系列才有。
P,Q,R也可以通过RCC_PLLCFGR寄存器来配置。
参考文档
《 零死角玩转STM32》
《STM32F4XX中文参考手册》
《arm体系结构与编程》
STM32那点事(2)_时钟树(上)相关推荐
- STM32那点事(2)_时钟树(下)
上两篇主要讲述了系统时钟,APB1, APB2, AHB配置的整个过程,是系统启动的关键,剩余部门将单独介绍 独立看门狗(IWDGCLK) 独立看门够采用内部单独时钟LSIRC,用于与其他系统时钟隔离 ...
- STM32那点事(2)_时钟树(中)
上篇主要介绍了外部时钟通过PLL分频或者倍频之后得到PLLCLK的整个流程,此流程是芯片启动过程中首先根据硬件需要进行相应配置.只有将上述流程搞清楚,系统才能正常启动. 系统时钟 系统频率为168Mh ...
- STM32那点事(3)_中断(上)
中断是STM32核心模块之一,几乎所有的模块都需要和中断打交道.了解STM32运作机制非常重要.在<STM32那点事(1)_STM32F40_41xx启动文件详解>中讲解启动流程中提到,中 ...
- STM32那点事(6)_定时器(上)
STM32定时器是CPU中的基本功能模块之一,最基本的功能是提供定时,STM32定时器共用16个定时器,主要分为两个基本定时器,10个通用定时器,2个高级定时器,以及两个看门狗定时器.看门狗定时器后面 ...
- STM32那点事(3)_中断(下)
上节主要讲述了STM32 的中断基础知识以及一般配置过程.外部中断与其他模块中断相对要复杂一点.外部中断一般都是由GPIO触发,是在整个系统中需要经常用到. 介绍 STM32F4 有多达23个中断,每 ...
- STM32-RCC时钟-时钟树介绍
本篇文章主要讲解STM32的时钟部分,解读时钟树.本片文章较长请耐心看完.那么你会了解对于STM32的一切时钟的来龙去脉.且本片文章大量的对照着STM32Fxx手册.请读者们提前下好手册的链接我放这了 ...
- stm32时钟树_先学STM8,还是学STM32?
有朋友问:我学习过51,接下来我是先学习STM8,还是STM32呢? 物联网STM32入门 - 直播课程 - 创客学院www.makeru.com.cn 嵌入式开发直播课 - STM32 USART ...
- 【STM32】7—通用定时器 时钟树学习
目录 0 实验预期效果 1 相关原理图 2 定时器TIM2与时钟树 2.1 TIM2 简介与特性 2.2 时钟树 3 软件配置 3.1 配置GPIO 3.2 配置定时器TIM2 4 代码编写 0 实验 ...
- 参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)
微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动--往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟"能量"扩散流动的路径,犹如大 ...
最新文章
- 对标以太坊的EOS再火,也拼不过InterValue的区块链4.0
- 【基础算法】算法,从排序学起(一)
- 命令行下执行带参数php
- 程序员,如何三十而立?
- 矩阵乘法计算速度再次突破极限,我炼丹能更快了吗?| 哈佛、MIT
- T-SQL 将存储过程结果插入到表中
- 【数据平台】python语言NLP库Gensim初识
- php lararel,laravel整合tinymce和ckeditor编辑器,并用elfinder上传图片
- CVPR 2019 | APDrawingGAN:人脸秒变艺术肖像画
- 一个判断字符串是否是数字的正则表达式
- 剑指offer 翻转链表
- 1566:基础练习 十六进制转八进制
- [JZOJ P1281] [DP]背包的第k优解
- php 上传类 缩略图,php图片文件上传类 (附自动生成缩略图) | 学步园
- 苹果将削减iPhone SE及AirPods产量 iPhone 13也要求减产
- 程序员想早点下班被经理拒绝,一气之下要辞职,经理慌了
- rsync+lsync实现多服务器多文件夹双向同步
- 【Win10 应用开发】实现数据的增量加载
- 7-模块开发卷宗(GB8567——88)
- ios UIView sizeToFit sizeThatFits
热门文章
- Jeecg-Boot 快速开发平台,前后端分离—开发环境搭建
- 【JEECG技术文档】Redis与Eache切换文档
- 【jeecg-mybatis版本】 mybatis+spring mvc 完美整合方案 查询,保存,更新,删除自动生成
- 记录hadoop HDFS与hadoop YARN无法访问问题
- angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
- sed的高级命令和软件包管理器rpm
- CentOS 7系统上部署Apache+PHP+MariaDB+xcache使用rpm,php module
- Linux通过端口查找tomcat的路径
- c# 使用GDAL处理大图
- “用户、组或角色'XXX'在当前数据库中已存在”问题