摘要
通过输入时钟和输出时钟解析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
手册中的外设分片内外设和片外外设,外设的“外”是相对于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. |

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

被折叠的 条评论
为什么被折叠?



