STM32F103VET6之时钟树详解

目录

前言

一、时钟源

二、时钟树讲解

总结


前言

        在嵌入式系统开发中,时钟树是一个关键的概念。对于使用STM32微控制器的开发者来说,了解和理解时钟树是必不可少的。时钟树是一个复杂的网络,它负责为各个模块提供准确的时钟信号,保证系统的正常运行。本文将为您详细介绍STM32的时钟树结构,帮助您更好地理解和应用这个重要的概念。


一、时钟源

 系统时钟(SYSCLK)可由三种时钟源产生

  1. HSI振荡器时钟: HSI是指高速内部振荡器(High-Speed Internal oscillator)。它是嵌入在微控制器内部的一个低成本、低功耗的振荡器。HSI振荡器时钟可用作微控制器的主时钟源,其频率通常为8MHz。

  2. HSE振荡器时钟: HSE是指高速外部振荡器(High-Speed External oscillator)。与HSI相比,HSE振荡器时钟提供更高的准确性和稳定性。它通常由外部晶体振荡器提供,频率可以根据需求选择,例如8MHz、16MHz等。HSE振荡器时钟常用于对精确时钟要求较高的应用,如通信设备、计时器等。

  3. PLL时钟: PLL是指锁相环(Phase-Locked Loop)。PLL是一种电路技术,通过将输入时钟信号与反馈信号进行比较和调整,生成输出时钟信号,其频率是输入时钟信号的整数倍或分数倍。PLL时钟在许多应用中被广泛使用,特别是在需要高性能时钟源的场合,如高速数据传输、音视频处理等。

其次还有两个二级时钟源

  1. LSE OSC 32.768kHz时钟源: LSE是指低速外部晶体振荡器(Low-Speed External oscillator),其频率通常为32.768kHz。可以通过程序选择驱动RTC,RTC代表的是实时时钟(Real-Time Clock),它是一个独立的硬件模块,提供精确的时间跟踪和计时功能,即使在微控制器断电或进入低功耗模式时也能保持运行。

  2. LSI RC 40kHz时钟源: LSI是指低速内部RC振荡器(Low-Speed Internal RC oscillator),其频率通常为40kHz。与LSE时钟源不同,LSI时钟源是由微控制器内部的RC振荡器产生的。由于其频率相对较低,因此LSI时钟源通常用于低功耗应用或需要较低精度时钟的场合,可以用于驱动独立看门狗和通过程序选择驱动RTC。

二、时钟树讲解

以下是各个时钟的介绍以及用途:

  1. HSE(High-Speed External)时钟(高速外部时钟):使用外部晶体振荡器作为系统时钟源,HSE时钟可通过引脚连接到外部晶体或陶瓷谐振器,并提供高精度的时钟信号。

  2. HSI(High-Speed Internal)时钟(高速内部时钟):除了外部时钟源,STM32F103VET6还内部集成了一个高精度的RC振荡器作为备用时钟源。

  3. PLL(Phase-Locked Loop)时钟(锁相环时钟):PLL是一种用于生成高频时钟的电路,PLL可以接收HSE或HSI作为输入,并通过乘法和除法器生成更高频的时钟信号,PLL时钟可以用作系统时钟源。

  4. SYSCLK(System Clock):SYSCLK是STM32F103VET6微控制器的系统时钟,用于驱动CPU和系统总线等核心模块。它可以选择来自HSE、HSI或PLL时钟。

  5. AHB(Advanced High-performance Bus)时钟:AHB时钟是内部总线的时钟,用于连接核心模块、存储器和外设。AHB时钟可以通过分频器进行配置,可以满足不同的性能和功耗要求。

  6. APB(Advanced Peripheral Bus)时钟:APB时钟是外设总线的时钟,用于连接外设模块。STM32F103VET6具有两个APB总线:APB1和APB2。每个APB总线都可以通过分频器进行配置。

STM32F103VET6之时钟树详解_第1张图片

接下来讲解系统时钟是怎么配置的

首先采用HSE高速外部振荡器产生8MHz的时钟频率,来到内部PLLXTPRE预分频选择器,用于将外部时钟信号的频率进行预分频,以适应主PLL的输入要求,PLLXTPRE有两种配置选择:

  1. PLLXTPRE = 0:不进行预分频,默认情况下,外部时钟信号的频率直接作为主PLL的输入时钟频率。
  2. PLLXTPRE = 1:进行预分频,外部时钟信号的频率除以2后作为主PLL的输入时钟频率。

此处选择不分频,然后到达PLLSRC时钟源选择器,用于选择主PLL的输入时钟源,可以有以下几种选项:

  1. PLLSRC = 0:选择HSI作为主PLL的输入时钟源。HSI是内部高速时钟。
  2. PLLSRC = 1:选择HSE作为主PLL的输入时钟源。HSE是外部晶体振荡器

这里选择HSE作为输入时钟源,时钟频率为8MHz,到达PLLMUL倍频器,用于配置主PLL倍频因子,它决定了主PLL输出时钟频率与输入时钟频率之间的倍数关系。PLLMUL可以设置为2、3、4、……、16,分别表示将主PLL输入时钟频率乘以2、3、4、……、16得到主PLL输出时钟频率。此时选择乘以9,得到锁相环时钟频率为72MHz,到此可以选择锁相环时钟作为系统系统时钟源,得到时钟频率为72MHz的系统时钟。

配置完成的系统时钟可以直接分配给部分外设,例如I2S接口、SDIO接口、FSMC接口。

I2S接口都是用于音频数据传输的串行接口,可以连接到外部音频设备或芯片。通常由以下几个信号线组成:

  1. SCK(Serial Clock):串行时钟信号,用于同步数据传输。
  2. WS(Word Select):字选择信号,用于指示发送或接收的数据字大小。
  3. SD(Serial Data):串行数据信号,用于传输音频数据。

SDIO接口是一种用于SD卡和MMC卡(多媒体卡)等存储卡设备的串行接,它允许STM32微控制器与外部存储设备进行数据交换,例如读取或写入文件、图像或音频等数据。SDIO接口能够提供高速的数据传输,并且支持SDIO卡的各种功能,如SDIO协议、SPI模式和4位SD模式等。

FSMC接口是一种用于连接外部静态存储器(如SRAM、NOR Flash、NAND Flash等)的接口。它为STM32微控制器提供了直接访问外部存储器的能力,而不需要通过CPU进行中介,支持并行数据传输,所以存储器的读取和写入操作更加迅速。

同时也能通过AHB预分频器和APB1/APB2预分频器结合使用,根据不同外设分配不同的时钟频率。

关于时钟树框图,还有两个部分需要讲解,就是CSSMCO

CSS是一个用于检测外部晶体振荡器(HSE)故障的选项。它可以使MCU监测HSE的稳定性,并在HSE出现故障时采取相应的措施。如果启用了CSS选项,在MCU启动时会自动检测HSE的稳定性。如果HSE无法正常工作或发生故障,MCU将自动切换到备用时钟源(此时备用时钟源一般HSI内部高速时钟,时钟频率最大不超过64MHz),以确保系统时钟的稳定性。因为启用CSS选项会增加系统时钟的复杂度和功耗。因此,在不需要对HSE进行实时监测的应用中,可以禁用CSS以提高系统效率。

MCO代表主时钟输出(Master Clock Output),它是一个可配置的引脚,用于将MCU的时钟信号输出到外部。通过配置MCO,可以将系统时钟(SYSCLK)或其他特定的时钟信号输出到MCO引脚。这样可以方便地将时钟信号连接到外部设备或其他模块,以满足特定的应用需求。MCO的输出频率可以通过设置相关的寄存器位来进行配置。可以选择不同的时钟源,并通过分频因子来调整输出频率。常见的时钟源包括系统时钟(SYSCLK)、HSE、PLL时钟等。


总结

        时钟树作为嵌入式系统中不可或缺的组成部分,对于STM32微控制器的开发至关重要。通过本文的讲述,了解了时钟源、PLL倍频器、分频器等关键组件,时钟树的正确配置可以有效地提高系统的稳定性和可靠性,同时也有助于减少功耗和提高性能。通过合理的时钟树设计,我们能够更好地利用STM32微控制器的功能,实现各种应用需求。在实际的嵌入式项目中,深入理解和掌握STM32的时钟树还是非常有必要的,因为它直接影响系统的性能和稳定性。

你可能感兴趣的:(STM32学习,stm32,嵌入式硬件,单片机)