zoukankan      html  css  js  c++  java
  • STM32学习笔记:时钟树与RCC

    导言

    如果学过单片机的同学应该不会陌生,学习51单片机时最经常听到的就是“最小系统”。

    最小系统里面少不了晶振,否则单片机无法工作。

    单片机需要晶振(时钟源)来工作,那么对于STM32芯片同样如此

    此外,同一个电路,时钟越快功耗越大,抗电磁干扰能力也随之变弱。

    所以对于较为复杂的MCU一般都是采取多时钟源的方法来解决这些问题。

    STM32是一块对于功耗可控的芯片,所以需要我们手动开启有关的时钟树,以方便后续的开发。

     

    STM32的时钟树与时钟源

    时钟源

    STM32F4中,有5个最重要的时钟源,按来源分为内外部两种;按速率也可以分为高低速两种。

    时钟源 含义 时钟速率 用途
    HSI 高速内部时钟 16MHz 可以直接作为系统时钟或者PLL输入
    HSE 高速外部时钟 4~26MHz 可以直接作为系统时钟
    LSI 低速内部时钟 32KHz 供给独立看门口和自动唤醒单元使用
    LSE 低速内部时钟 32.768KHz 主要是RTC(实时时钟)的时钟源
    PLL

    锁相环

    (内部倍频器)

    可以是

    HSI的二分频

    HSE的一分频

    或HSE的二分频

    锁相环倍频输出,分为主PLL和专用PLL:

      1)主PLL由HSE或HSI提供时钟信号,并且具有两个不同的输出时钟:

        ①PLLP:生成高速的系统时钟,最高180MHz;(STM32F429)

        ②PLLQ:生成USB OTG FS的时钟(48MHz)、随机数发生器和SDIO的时钟。

      2)专用时钟PLL(PLLI2S),用于生成精确时钟,在I2S接口实现高品质音频输出。

      

      

     

     

     

    时钟树

    由于STM32复杂的时钟体系,有人形象地称下图为时钟树。

    当初学习到这个地方的时候,本人也觉得混乱。

    但其实只要抓准5个时钟源,“顺藤摸瓜”就可以捋清关系了。

    下图是笔者根据自己开发板的情况画的简单线路图。

    了解完以上的关系就不难理解为什么任何片内外设在使用之前,必须使能相应的时钟

     附时钟频率的计算:

    SYSCLK = Fvco/pllp = Fs*(plln/(pllm*pllp)); 

    Fvco:VCO频率

    SYSCLK:系统时钟频率

    Fusb:USB,SDIO,RNG等的时钟频率

    Fs:PLL输入时钟频率,可以是HSI,HSE等. 

    plln:主PLL倍频系数(PLL倍频),取值范围:64~432.

    pllm:主PLL和音频PLL分频系数(PLL之前的分频),取值范围:2~63.

    pllp:系统时钟的主PLL分频系数(PLL之后的分频),取值范围:2,4,6,8

    pllq:USB/SDIO/随机数产生器等的主PLL分频系数(PLL之后的分频),取值范围:2~15.

  • 相关阅读:
    opengl编程指南
    Binder机制1---Binder原理介绍
    [Android]使用platform密钥来给apk文件签名的命令
    IntentFilter
    最高分是多少
    Spring注入
    Bean容器的初始化
    Spring中的Junit
    IOC
    接口及面向接口编程
  • 原文地址:https://www.cnblogs.com/schips/p/8193980.html
Copyright © 2011-2022 走看看