STM32时钟树

STM32时钟系统简介

在CPU中时钟系统就像人的心脏一样,给系统一个稳定的类似于人脉搏一样的一个工作时间基准,其重要性是不可言喻的。而STM32F4的时钟系统还是较为复杂的,不像51单片机一样一个系统时钟就可以担负整个系统的使用。那么STM32F4时钟系统较为复杂到底牵扯到了那些地方呢。STM32F4中是有很多外设的,并不一定所有外设都用同一个时钟,看门狗、RTC就只需要几十K的时钟就可以了,但是如果遇到速度要求比较高的呢,那么就需要有更高的时钟频率来解决了。更如果在一个系统中牵扯了很多的外设但是这些外设对时钟的要求又有不一呢。还有一个问题就是,在一个系统中,时钟越快其对应的功耗也就越大,相对应的系统抗干扰能力也就越弱,那么对于一个较为复杂的系统而言,采取多时钟源的方法则是较为合适的。

STM32时钟系统框图简介

为了更好地了解STM32时钟系统,将整个系统的时钟源,时钟流向都放在一个框图里面则就形成了时钟框图。如下图所示:

在STM32F411中一共有5个时钟源,分别是:LSI、LSE、HST、HSE、PLL。这五个是整个系统的时钟源。从高速和低速可以分为:LSE和LSI是低速时钟源,HSI、HSE、PLL是高速时钟源。从时钟来源看其中HSE和LSE是外部时钟源,其他的是内部时钟源。下面我们依次介绍一下以上五种时钟源:

  1. LSI 是低速内部时钟,RC振荡器,频率为32kHz左右。供独立看门狗和自动唤醒单元使用。

  2. LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体。 这个主要是 RTC 的时钟源。

  3. HSI 是高速内部时钟,RC 振荡器,频率为16MHz。可以直接作为系统时钟或者用作 PLL输入。

  4. HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 4MHz~26MHz。我们的DragonFly学习平台接的是8M的晶振。HSE 也可以直接做为系统时钟或者 PLL 输入。

  5. PLL 为锁相环倍频输出。 STM32F411有两个PLL:

  • 主PLL是由HEI和HSE提供时钟信号,有两个输出时钟。

第一个输出PLLP用于产生高速时钟(最高为100MHz)。

第二个输出PLLQ用于USB OTG的时钟(48MHz)、随机数发生器的时钟和SDIO的时钟。

  • 专用PLL(PLLI2S)用于实现高品质音频性能时输出精确时钟。

PLL锁相环内部参数配置

计算公式如下:

f(VOC时钟):PLL输出时经PPM分频和PPN倍频后的时钟。

f(PLL时钟输入):由HSI和HSE得到。

PLLN:VCO的主PLL的倍频系数。

PLLM:时钟分频系数。

f(PLL常规时钟输出):用于系统时钟选择,输出到系统时钟选择器。

PLLP:主系统时钟的主PLL分频系数。

PLLQ:主PLL分频系数,适用于USB OTG FS、SDIO

f(USB\SDIO时钟输出):用于USB OTG FS、SDIO等时钟

通过以上所述,我们可以配置输出我们所需要的时钟。在小马哥四轴学习平台中,使用的是100MHz,过程是将8M外部晶振经过倍频分频之后得出。下面以小马哥四轴案例来说明一下SYSCLK100MHz得出。

F(SYSCLK) = F(HSE)*PLLN/PLLM*PLLP = 8M*400/4*8 =100MHz

以上公式中,PLLN=400、PLLM=8、PLLP=4,经过PLL环输出的时钟就为100MHz。具体的参数参考范围可以参考《RM0383_STM32F411CCU6_Reference manual》第六章节的RCC_CFGR寄存器查看。

以上配置其实在STM32的标准库中都已经用函数封装好了,并且在启动文件里面自动调用。

STM32系统时钟详解相关推荐

  1. CW32L083系列MCU系统时钟详解

    时钟是单片机运行的基础,是同步单片机各个模块工作时序的最小时间单位.时钟的速度取决于外部晶振或内部RC振荡电路.单片机拥有丰富的外设,但实际使用的时候只会用到有限的外设,且有的外设需要高速时钟提升性能 ...

  2. stm32 DMA使用详解

    转自:http://www.cnblogs.com/121792730applllo/p/3154447.html STM32 DMA使用详解 DMA部分我用到的相对简单,当然,可能这是新东西,我暂时 ...

  3. STM32启动文件详解-比较清晰的一篇

    STM32启动文件详解 启动文件使用的 ARM 汇编指令汇总 启动程序源码注释(点此下载) 1. Stack-栈 Stack_Size EQU 0x00000400AREA STACK, NOINIT ...

  4. STM32串口通信详解以及通信异常或者卡死常见问题分析

    STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...

  5. STM32的定时器详解(嵌入式学习)

    STM32的定时器详解 0. 前言 1. Systick定时器 概念 工作原理 时钟基准 Systick练习 2. HAL_Delay函数分析 3. 定时器 基本概念 定时器分类 定时器组成 计数器 ...

  6. STM32 CAN通信协议详解—小白入门(二)

    文章目录 (一)CAN通信协议简介 (二)CAN物理层 2.1.闭环总线网络2.2.开环总线网络2.3.通信节点2.4.差分信号2.5.CAN协议的差分信号 (三)协议层 3.1.CAN的波特率及位同 ...

  7. S5PV210时钟详解

    S5PV210时钟详解 1.S5PV210时钟分类: 2.S5PV210时钟流: 3.S5PV210时钟经典配置: 初始化时钟步骤: Step1:选择是否开启PLL,使用PLL(PLL输出时钟为800 ...

  8. LPC11xx 系列-时钟详解

    LPC11xx 系列-时钟详解 注:本文是从一个网站上看的内容,后整理出了这份. 原创是哪位,我已经找不到了. 如果有侵权,请及时告知. 我会删除.(这篇文章整理自 2018年. 当时没有Markdo ...

  9. EasyPR中文开源车牌识别系统 开发详解

     在上篇文档中作者已经简单的介绍了EasyPR,现在在本文档中详细的介绍EasyPR的开发过程. 正如淘宝诞生于一个购买来的LAMP系统,EasyPR也有它诞生的原型,起源于CSDN的taotao ...

最新文章

  1. tf.keras.activations.softmax 激活函数 示例
  2. RV1108开发环境搭建
  3. c#sort升序还是降序_被玩坏的数组排序之sort函数
  4. nagios监控单网卡双IP
  5. VMware install MikroTik RouterOS
  6. OAF_开发系列19_实现OAF对话框提示dialogPage(案例)
  7. 粮草先行——Android折叠屏开发技术点番外篇之运行时变更处理原则
  8. java嵌入浏览器_Java嵌入浏览器Chrome内核
  9. 斐讯路由器k2p a1刷官改只能刷入k2p_57_v*_*固件无法刷入k2p_mtk_v*_*版本--刷入后无法进入主页面/刷入后无法启动
  10. 早这么讲运算放大器的开环增益,我现在都是高手了
  11. android跳转到rn界面,第五章 RN与Native—由原生页面跳转到Rn页面;在Rn页面调用Android Native组件和Native数据...
  12. 计算机软件实习每日学习打卡(1)20201130
  13. java秒表计时器_Java-计时器/秒表GUI
  14. 计算机科学大师唐纳德,现代计算机科学的鼻祖,编程界的上帝,视全世界的码农当作艺术家...
  15. 京东数科与中铁武汉电气化局达成战略合作 数字科技助力电气化铁路建设
  16. GPRSsim800c
  17. java插入flash_如何在java中添加flash?
  18. 疲劳驾驶监测方案_一种基于手机的疲劳驾驶监测方法与流程
  19. 看房没戴头盔,损失二十万 。。。
  20. 达芬奇密码 第七十四章

热门文章

  1. 支付宝小程序支付(统一收单交易创建接口)
  2. unraid教程贴备忘
  3. 海航金鹿公务机队规模稳居亚太之首;奥森多生物科技创新中心在沪揭牌 | 美通企业日报...
  4. Python的自省函数
  5. Linux网络容灾,一个简单的两个Linux之间的容灾备份的Demo
  6. 企查查爬虫循环获取信息
  7. 怎么降低软件开发成本风险_降低开发人员成本的5种方法
  8. 攻防世界——web新手题
  9. 全网惟一面向软件测试人员的Python基础教程-在Python中怎么干倒字符串?
  10. 对数函数 (logarithmic function)