时钟源关系初解

最近发现自己对时钟的各种关系不是很清晰,所以在这里初步的顺一下。以STM32F4为例,大概都差不多。

STM32F4有5个时钟源,分别是HSI、HSE、LSI、LSE、PLL。从名字上看出HSI和HSE是高速时钟,HSI是高速内部时钟,HSE是高速外部时钟,同样的LSI是低速内部时钟,LSE是低速内部时钟源。外部时钟源就是从外面接晶振获取的时钟源。然后就说说每个时钟源的大概频率和作用位置。


LSI频率32kHz左右,供给独立看门口和自动唤醒单元使用;

LSE接32.768kHz晶振,主要是RTC(实时时钟)的时钟源;

HSE接4M~26MHz晶振,我手上的这块接的8MHz,主要是为了分频的时候还是整数;

HSI频率16MHz,可以直接作为系统时钟或者PLL输入;

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

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

第一个输出PLLP用于生成高速的系统时钟,最高168MHz;

第二个输出PLLQ用于生成USB OTG FS的时钟(48MHz)、随机数发生器和SDIO的时钟。

2)专用时钟PLL,也可以说是PLLI2S,用于生成精确时钟,从而在I2S接口实现高品质的音频输出。


至于PLLP的计算方法,简单说说就是PLL时钟的时钟源经过一个分频器(M),再经过一个倍频器(N),最后再经过一个分频器(P或Q),就出来PLLP或者PLLQ了。

例如HSE接外部晶振为8MHz,设置M=8,N=336,P=2,得出PLLP就为8MHz*N/(M*P)=168MHz。

如果SYSCLK时钟源是PLL,而且PLL的时钟源是HSE的话,那SYSCLK频率就是168MHz了。

如果是选的其它时钟源的话,计算方法也一样。


接下来就是SYSCLK系统时钟下面的各种PTP时钟、AHB时钟、APB2高速时钟、APB1低速时钟了。其中以太网PTP时钟使用系统时钟,其它三都是经过系统时钟分频得来,然后AHB最大时钟频率为168MHz,APB2为84MHz,APB1为42MHz。

AHB和APB都是ARM公司推出的AMBA片上总线的一部分,AHB为系统总线,APB为外部总线,简单来说,AHB和APB都是负责各个部分之间的连接,AHB负责高性能模块之间的连接,如CPU、DMA、DSP等,APB负责低带宽的外设连接,如UART、IIC、GPIO等,外设可能挂在在APB1或者APB2下,具体要看芯片使用手册。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值