STM32H743 RCC时钟树的形象化理解

本文解析了STM32H743的时钟树结构,包括时钟源、系统时钟、外设分配等,探讨了核心时钟概念,以及在不同运行模式下的时钟配置策略。

摘要

通过输入时钟和输出时钟解析STM32H743的时钟树,并为最小系统程序、PLL动态调整、CPU的外设分配、外设在低功耗模式下的运行、CPU频率的动态调整提供了参考依据。

时钟树是棵榕树,培育树的土壤是HSI、HSE、CSI或LSI,系统时钟(sysclk)是这颗树的树干,这颗树上结出了离根最近最大的果实——CPU\CPU Systick,树干上了AHB、HPB这样的树枝(见STM32Cube MX)。树枝上接着GPIO、ADC这个普通的果子,也结着如SPI/UART/I2C这样即从树干上获取养分(见DS12110图1),也长出了须根直接从土壤中获取或根部(PLL)获取养分。

时钟树与榕树不同的是,不是树并不一定需要树根;榕树的树须根在树枝上,时钟树的须根在果实上。

 

目录

1 术语

1.1 外设Peripherals

1.2 总线bus和桥bridges

1.3 锁相环PLL

1.4 核心时钟 Kernel clcock

1.5 RCC

1.6 单词/其他

2 输入时钟

2.1 内部震荡器

2.1.1 HSE

2.1.2 HSI

2.2 外部振荡器

2.3 锁相环

3 输出时钟[7.5.1]

3.1 核心时钟 Kernel clcock

3.2 系统时钟 SYS_CK

4 外设分配

4.1 外设分配与核心时钟

4.2 通常情况下的外设分配(CRun):

4.3 低功耗设计:CSleep模式下的外设分配

4.4 低功耗设计:CStop模式下的外设分配

5 本文未说明的功能

6 参考文件


1 术语

1.1 外设Peripherals

        手册中的外设分片内外设和片外外设,外设的“外”是相对于CPU而言的。其中片外外设可以是通过SPI和UART连接的传感器芯片。片内外设由可分为两类,一类是如定时器和DMA那样可以仅仅在MCU内部运行,无需与片外外设交互的单元(虽然它们也能和片外外设交互),另一类指如SPI那样的芯片内部用于与外部设备连接的接口电路和总线[4]。按我这样的分类方式,一个片内外设,在不同的功能模式下,就属于不同的子类了。

注:将这个分类是为了后面”核心时钟“的概念做铺垫的。

1.2 总线bus和桥bridges

        手册中没有明显区分,总线和桥都指CPU和外设通信的渠道。如:

Clocks for APB (rcc_apb_ck), AHB (rcc_ahb_ck) and AXI (rcc_axi_ck) bridges generated by the RCC.

The bus matrix clocks are the clocks provided to the different bridges (APB, AHB or AXI). These clocks are derived from the system clock (sys_ck).

The bus clocks are the bus interface clocks to which the peripherals are connected, it can be APB, AHB or AXI clocks [7.5.8]

per_ck : 为外设设立的一个方便统一调节的逻辑上的时钟。The per_ck clock could be hse_ck, hsi_ker_ck or csi_ker_ck according to CKPERSEL selection.

1.3 锁相环PLL

PLL(Phase Locked Loop): 为锁相回路或锁相环。总体上起到晶振频率倍频的作用,为系统高速率运行提高必要条件。

Sigma-Delta modulator, allowing to fine-tune the VCO frequency by steps of 11 to 0.3 ppm.The Sigma-Delta modulator can be updated on-the-fly, without generating frequency

overshoots on PLLs outputs.[7.5.5]。

VCO(voltage-controlled oscillator):PLL 是锁相环,一个标准的锁相环由 鉴相器,环路滤波器,分频器,压控振荡器(VCO),和晶体构成。VCO 是PLL 里的一个构成部件。[1]

integer mode and fractional mode : 从晶振出来后的频率会不是很准,如HSI可以通过在晶振层面进行频率修正。而为了获取更精确(频率分辨率高)且更准确(与真值的误差小)的频率,可使用小数模式(fractional mode)。与之相对应的整数模式(integer mode)则仅仅将内部或外部振荡器进行整数倍频而已,默认情况下就是这个模式。调整方式详见手册“Figure 45. PLLs Initialization Flowchart”.

1.4 核心时钟 Kernel clcock

        原本想翻译把“Kernel”翻译成内核的,但这个时钟明明是由于外设的,总感觉不合理,就把它翻译成“核心了”。具体细节见3.1节。

        以例子说明核心时钟的概念。以SPI总线为通信的片外外设芯片A的使用需要两个时钟,第一个时钟为外设接口时钟,为SPI这个片内外设的寄存器和具体硬件逻辑操作提供时钟。第二个时钟是核心时钟(这个时钟通常与总线接口时钟是异步的),为SPI总线中“SLK”线提供时钟,“SLK”线将与片外外设-芯片A。依据如下[7.7.47]及本文3.1节:

Bit 12 SPI1EN: SPI1 Peripheral Clocks Enable

Set and reset by software.

0: SPI1 peripheral clocks disabled (default after reset)

1: SPI1 peripheral clocks enabled:

The peripheral clocks of the SPI1 are: the kernel clock selected by I2S123SRC and provided to

spi_ker_ck input, and the rcc_pclk2 bus interface clock.

1.5 RCC

        官方功能定义如[7.5.9]

The RCC handles the distribution of the CPU, bus interface and peripheral clocks for the system (D1, D2 and D3 domains),

1.6 单词/其他

latch

锁存,数电的概念[2]

allocation

分配;为外设分配一个外设,即通过RCC使能(ativate)一个外设的核心时钟和总线接口时钟。[7.5.9]

 

SCGU block

The SCGU block (System Clock Generation Unit) contains several prescalers used to configure the CPU and bus matrix clock frequencies.

PKSU block

The PKSU block (Peripheral Kernel clock Selection Unit) provides several dynamic switches allowing a large choice of kernel clock distribution to peripherals.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值