四.mini2440时钟初始化

本文介绍了S3C2440开发板的时钟初始化过程,说明了在未开启时钟前,系统依赖12MHz外部晶振工作,而通过锁相环MPLL和UPLL可以将CPU工作频率提升至400MHz。详细讲述了如何设置FCLK、HCLK和PCLK的频率,以及涉及到的寄存器CLKDIVN、MDIV、PDIV和SDIV的配置。最后强调了在.s文件中设置CPU为异步模式的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时钟初始化

首先,我们应该知道一点,mini2440开发板在没有开启时钟前,整个开发板全靠一个12MHz的外部晶振提供频率来工作运行的,也就是说CPU、内存、UART、ADC等所有需要用到时钟频率的硬件都工作在12MHz下,而S3C2440A可以正常工作在400MHz下,可想而知两者速度相差会有多大了。如果CPU工作在12MHz频率下,开发板的使用效率非常低,所有依赖系统时钟工作的硬件,其工作效率也很低,比如,我们电脑里面经常提到的超频,超频就是让CPU工作在更高的频率下,让电脑运算速度更快,虽然频率是越高越好,但是由于硬件特性决定了任何一个设备都不可能无止境的超频,电脑超频时要考虑到CPU或主板发热过大,烧坏的危险,同样开发板的主板上的外设和CPU也有一个频率限度,ARM920T内核的S3C2440的最高正常工作频率如下:

CPU工作于FCLK,AHB总线工作于HCLK ,APB总线工作于PCLK。不设置时钟就工作在晶振频率12M。设置之后可以工作在400M
在这里插入图片描述

使用锁相环来生产时钟,一个MPLL生产时钟给CPU用,一个UPLL生产时钟给USB用。
时钟信号来自于12M的晶振或者外部时钟信号。

为什么需要不同种类的时钟呢?

   由于不同的硬件外设工作时需要的额定频率不同,所以需要产生不同种类的时钟频率。也就是说,对于一些需要时钟工作的硬件,如果切断其时钟源,就不会再工作了,从而达到低功耗的目的,这也是便携嵌入式设备的一个特点。

在这里插入图片描述
在这里插入图片描述
选择器OM决定时钟源。有这三个参数决定主频FCLK
在这里插入图片描述在这里插入图片描述
HDIVN决定HCLK的值,PDIVN决定PCLK的值。如山图所示。

002编程实现时钟分配

首先设置FCLK-400M HCLK-100M PCLK-50M
设置分频HDIVN 和PDIVN 要设置寄存器CLKDIVN
在这里插入图片描述
HDIVN要等于0b10 前提是CAMDIVN[9] = 0;设置;PDIVN 位置1
在这里插入图片描述
使用默认值即可。

设置FCLK = 400M(mini2440 手册上面说了最多达到400M )
在这里插入图片描述
读到:MDIV = 127 ;PDIV = 2 ;SDIV = 1.
验证:计算公式
在这里插入图片描述
m =127+8=135 p=2+2=4 s=1 MPLL=(2135fin–12)/(4*2)=405(验证了一下)实际应该只有400M
接下来设置寄存器编程:
在这里插入图片描述
MDIV = 127 ;PDIV = 2 ;SDIV = 1.
移位操作:(127<<12)|(2<<4)|(1<<0)设置完这几个寄存器之后还要注意到一些问题。
在这里插入图片描述
如果没有设置CPU为异步模式,则CPU工作于HCLK频率。所以要在.s文件里面做以上设置。

总的来说很简单,代码不贴了,需要的留言提供。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值