S3C2440时钟配置「建议收藏」

S3C2440时钟配置「建议收藏」首先来看一下S3C2440的时钟整体框图:CPU工作于FCLKFCLKUPTO400MHZAHB工作于HCLKHCLKUPTO136MHZAPB工作于PCLKPCLKUPTO68MHZ如何得到以上时钟频率(时钟源:12M晶振):通过PLL锁相环可以得到以上3个所需要的时钟S3C2440有两个PLL一个MPLL是提供时钟给CPU用另一个UPLL提…

大家好,又见面了,我是你们的朋友全栈君。

首先来看一下S3C2440的时钟整体框图:

S3C2440时钟配置「建议收藏」

CPU工作于FCLK FCLK UP TO 400MHZ
AHB工作于HCLK HCLK UP TO 136MHZ
APB工作于PCLK PCLK UP TO 68MHZ
S3C2440时钟配置「建议收藏」
如何得到以上时钟频率(时钟源:12M晶振):通过PLL锁相环可以得到以上3个所需要的时钟
S3C2440有两个PLL 一个MPLL是提供时钟给CPU用 另一个UPLL提供时钟给USB设备使用

S3C2440时钟源有两种:1:外部时钟源EXTCLK
2:外部晶振
S3C2440时钟配置「建议收藏」

可通过OM[3:2]引脚进行选择外部时钟模式,通过OM3 OM2引脚电平可以进行选择时钟源。

S3C2440时钟配置「建议收藏」

S3C2440时钟配置「建议收藏」
通过MPLL的得到FCLK提供给CPU
通过HDIVN分频得到HCLK
通过PDIVN分频得到PCLK
通过以上框图可以看出来通过设置寄存器控制MPLL HDIV PDIV便可以来设置时钟频率。
S3C2440时钟配置「建议收藏」
S3C2440时钟配置「建议收藏」

用来设置Lock Time时间

S3C2440时钟配置「建议收藏」

/*设置MPLL FCLK:HCLK:PCLKI=400:100:50*/
/*LOCKTIME(0X4C000000)=0XFFFFFFFF*/
ldr r0,=0x4c000000
ldr r1,=0xffffffff
str r1,[r0]


通过设置CLKDIVN寄存器可以设置HCLK和PCLK的所分频率
/*CLKDIVN(0X4C000014)=0X5,tFCLK:tHCLK:tPCLK=1:4:8*/
ldr r0,=0x4c000014
ldr r1,=0x5
str r1,[r0]

当HDIVN不为0时,需要设置CPU工作于异步模式,否则CPU的工作频率为HCLK所产生的频率
/*设置CPU工作在异步模式*/
mrc p15,0,r0,c1,c0,0
orr r0,r0,#0xc0000000 //R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0
S3C2440时钟配置「建议收藏」

设置MPLL让FCLK输出400M,
M=92
P=1
S=1
通过设置MDIV PDIV SDIV寄存器可设置MPLL
S3C2440时钟配置「建议收藏」

S3C2440时钟配置「建议收藏」

S3C2440时钟配置「建议收藏」

设置FCLK频率为400M
/*设置MPLLCON(0X4C000004)=(92<<12)|(1|4)|(1<<0)
m=MDIV+8=92+8=100
P=PDIV+2=1+2=3
S=SDIV=1
FCLK=2*M*Fin/(P*2^S)=2*100*12/(3*2^1)=400m
*/
ldr r0,=0x4c000004
ldr r1,=(92<<12)|(1<<4)|(1<<0)
str r1,[r0]



以下为配置S3C2440时钟的汇编代码:

/*设置MPLL FCLK:HCLK:PCLKI=400:100:50*/
/*LOCKTIME(0X4C000000)=0XFFFFFFFF*/
ldr r0,=0x4c000000
ldr r1,=0xffffffff
str r1,[r0]

/*CLKDIVN(0X4C000014)=0X5,tFCLK:tHCLK:tPCLK=1:4:8*/
ldr r0,=0x4c000014
ldr r1,=0x5
str r1,[r0]

/*设置CPU工作在异步模式*/
mrc p15,0,r0,c1,c0,0
orr r0,r0,#0xc0000000 //R1_nF:OR:R1_iA
mcr p15,0,r0,c1,c0,0

/*设置MPLLCON(0X4C000004)=(92<<12)|(1|4)|(1<<0)
m=MDIV+8=92+8=100
P=PDIV+2=1+2=3
S=SDIV=1
FCLK=2*M*Fin/(P*2^S)=2*100*12/(3*2^1)=400m
*/
ldr r0,=0x4c000004
ldr r1,=(92<<12)|(1<<4)|(1<<0)
str r1,[r0]

/*一旦设置PLL,就会锁定lock time直到PLL输出稳定
然后CPU工作于新的频率FCLK
*/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/146229.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • NSGA2算法及其代码

    NSGA2算法及其代码本人最近研究NSGA2算法,网上有很多示例代码,但是基本没有注释,代码看起来很头疼,因此我最近把整个代码研读了一遍,并做上中文注释,希望可以帮助到一些和我一样的初学者们。贴出代码之前,首先介绍一下NSGA2遗传算法的流程图:流程图中我把每个详细的步骤用号码标出来,对应下文的代码部分。首先贴出主函数代码,对应整个流程图:functionnsga_2_optimization%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%…

  • OSChina 周六乱弹 ——在你玩的时候,妹子都在干这个[通俗易懂]

    OSChina 周六乱弹 ——在你玩的时候,妹子都在干这个

  • 数据挖掘算法与现实生活中的应用案例[通俗易懂]

    数据挖掘算法与现实生活中的应用案例[通俗易懂]如何分辨出垃圾邮件”、“如何判断一笔交易是否属于欺诈”、“如何判断红酒的品质和档次”、“扫描王是如何做到文字识别的”、“如何判断佚名的著作是否出自某位名家之手”、“如何判断一个细胞是否属于肿瘤细胞”等等,这些问题似乎都很专业,都不太好回答。但是,如果了解一点点数据挖掘的知识,你,或许会有柳暗花明的感觉。本文,主要想简单介绍下数据挖掘中的算法,以及它包含的类型。然后,通过现实中触手可及的、活生生的案例

  • sql数据库unique的用法_mysql中的date数据类型

    sql数据库unique的用法_mysql中的date数据类型摘自帮助:uniqueidentifier全局唯一标识符(GUID)。注释uniqueidentifier数据类型的列或局部变量可用两种方法初始化为一个值:使用NEWID函数。将字符串常量转换为如下形式(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个x是0-9或a-f范围内的一个十六进制的数字)。例如,6F9619FF-8B86-D011-B…

  • Oracle partitions 简介

    Oracle partitions 简介基于Oracle11.2.04分区表的概念当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。分区表的优点改善查询性能:对分区对象的查询可以公搜索自己关心的分区,提高检索速度。增强可用性:如果表的某个分区…

  • MySQL主从复制常见故障及解决方法

    MySQL主从复制常见故障及解决方法

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号