STM32之RCC原理

来源:互联网 发布:手机捉鬼软件 编辑:程序博客网 时间:2024/05/22 14:46



1、时钟源

STM32 中,一共有5 个时钟源,分别是HSI HSE LSI LSE PLL

 HSI是高速内部时钟,RC 振荡器,频率为8MHz

 HSE是高速外部时钟,可接石英/ 陶瓷谐振器,或者接外部时钟源,频率范围是4MHz – 16MHz

 LSI是低速内部时钟,RC 振荡器,频率为40KHz

 LSE是低速外部时钟,接频率为32.768KHz 的石英晶体;

 PLL为锁相环倍频输出,严格的来说并不算一个独立的时钟源,PLL 的输入可以接HSI/2 HSE 或者HSE/2 PLL倍频可选择为 2 – 16 ,但是其输出频率最大不得超过72MHz

其中,40kHz LSI供独立看门狗IWDG使用,另外它还可以被选择为实时时钟RTC的时钟源。另外,实时时钟RTC的时钟源还可以选择LSE,或者是 HSE 128分频。

STM32中有一个全速功能的USB模块,其串行接口引擎需要一个频率为48MHz的时钟源。该时钟源只能从PLL端获取,可以选择为1.5分频或者 1分频,也就是,当需使用到USB模块时, PLL必须使能,并且时钟配置为48MHz 72MHz

另外STM32还可以选择一个时钟信号输出到MCO (PA.8)上,可以选择为PLL输出的 2分频、 HSI HSE或者系统时钟。

系统时钟SYSCLK,它是提供STM32中绝大部分部件工作的时钟源。系统时钟可以选择为PLL输出、 HSI HSE。系系统时钟最大频率为72MHz,它通过 AHB分频器分频后送给各个模块使用,AHB分频器可以选择12481664128256512分频AHB分频器输出的时钟送给5大模块使用:

      送给AHB总线、内核、内存和DMA使用的 HCLK时钟;

      通过8分频后送给Cortex的系统定时器时钟STCLK

      直接送给Cortex的空闲运行时钟FCLK

      送给APB1分频器。 APB1分频器可以选择124816分频,其输出一路供APB1外设使用(PCLK1最大频率36MHz),另一路送给定时器(Timer)2 3 4倍频器使用。该倍频器根据PCLK1的分频值自动选择1或者 2倍频,时钟输出供定时器2 3 4使用。

      送给APB2分频器。 APB2分频器可以选择124816分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另外一路送给定时器(Timer)1倍频使用。该倍频器根据PCLK2的分频值自动选择1 2倍频,时钟输出供定时器1使用。另外APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2468分频

需要注意的是定时器的倍频器,当APB的分频为1时,它的倍频值为1,否则它的倍频值就为2

 

2APB1APB2连接的模块

①连接在APB1(低速外设 )上的设备有:电源接口、备份接口、CAN USB I2C1 I2C2 UART2 UART3 SPI2、窗口看门狗、Timer2 Timer3 Timer4注意USB模块虽然需要一个单独的48MHz的时钟信号,但是它应该不是供USB模块工作的时钟,而只是提供给串行接口引擎(SIE)使用的时钟。USB模块的工作时钟应该是由APB1提供的。

②连接在APB2(高速外设)上的设备有:UART1 SPI1 Timer1 ADC1 ADC2 GPIOx(PA~PE)、第二功能IO 口。