ARM----时钟

时钟频率可以是由晶振提供的,我们需要高频率,但是外部接高的晶振会不稳定,所有使用PLL(锁相环)来放大频率。接下来就让我们学习用外部晶振提供的频率来配置时钟频率。

一.时钟源的选择

在这里我们选择外部晶振作为时钟源,通过查看芯片手册和原理图来看我们的时钟源。

这是手册上面,通过OM2和OM3的引脚的电位来设置时钟源。那我们去查看原理图。

通过原理图我们得知,OM2和OM3是连接的低电平也就是00,所以时钟源是晶振。

二。晶振的大小为12M,看原理图得知。

我们以

FCLK:400M

HCLK: 100 M

PCLK: 50M

这三个时钟频率分别对不同的区域提供,由芯片手册可以得到

那么具体的流程是怎么进行的呢?

看芯片手册就可以得到具体的步骤。

外部晶振提供12M频率,由MPLL来进行放大,具有放大多少怎么配置,由PDIV、MDIV、SDIV,来决定。

我们选择400M,那么MDIV, PDIV, SDIV分别配置为127、2、1。

具体配置方法为:

将MPLLCON寄存器的对应MDIV,PDIV,SDIV设置为127,2,1

复制代码
	MPLLCON = (127 << 12) | (2 << 4) | (1 << 0);

这里FCLK已经配置好了,那接下来就要配置HCLK和PCLK

由FCLK \ HCLK\ PCLK 的比例关系我们得知HDIVN PDIVN的具体配置;

这里可以得知HDIVN 配置为2, PDIVN配置为1。

那么怎么在寄存器中配置呢

这里可以得知具体的位数。

代码如下

复制代码
	CLKDIVN = (2 << 1) | (1 << 0);

这样我们就配置好了时钟的频率。

其实在配置的时候我们要先配置HCLK .PCLK,因为先配置FCLK的时候,频率太高,会烧坏后面的电路,所以先配置好分频,在区配置主频。

总结就是如下

1.通过芯片手册和原理图看时钟源是什么。

2.看时钟源的晶振具体大小为多少

3.确定FCLK,HCLK,PCLK的大小

4.由这三个的比例关系来看HDIVN 、PDIVN的值(用来配置HCLK和PCLK的大小)

5.由CLKDIV寄存器来配置HDIVN和PDIVN

6.由FCLK的大小来查手册看MDIV ,PDIV, SDIV的值(用来配置FCLK的大小)

7.MPLLCON来配置这三个的大小就完成了。

相关推荐
T1mzhou13 小时前
ARM64 Linux 6.10 内核驱动(12):dd.c:probe/ remove、延迟 probe
linux·服务器·c语言·arm开发·arm
Doraemomo14 小时前
IMX6ULL裸机开发——系统主频和时钟配置
arm开发·嵌入式硬件·makefile·imx6ull
T1mzhou17 小时前
ARM64 平台安全学习记录
linux·服务器·arm开发·arm
云栖梦泽19 小时前
网络设备驱动(1)
linux·arm开发·嵌入式硬件
零依赖极客2 天前
Day 9·1 KV 也量化——q8 KV 把缓存与 decode 带宽压到一半
c语言·开发语言·arm开发·人工智能·缓存·矩阵
secondyoung2 天前
I2C通信协议详解
arm开发·驱动开发·stm32·单片机·嵌入式硬件·mcu·51单片机
奔跑的架构师2 天前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm
零依赖极客3 天前
Day 8·1 自注意力机制:Q·K^T/softmax/V的在线计算
c语言·arm开发·人工智能·llama
T1mzhou3 天前
ARM64 Linux 6.10 内核驱动(14):drivers/base/platform.c:板级设备主战场
linux·c语言·开发语言·arm开发
零依赖极客4 天前
《30 天手搓 ARM 架构零依赖纯 C 推理引擎》课程介绍与大纲
c语言·开发语言·arm开发·人工智能·嵌入式硬件·ai编程