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)


相关推荐

  • Windows搭建SVN服务器「建议收藏」

    Windows搭建SVN服务器「建议收藏」写这篇文章其实是弥补6年前的一个遗憾,之前在第一家公司时,快要离职时,帮公司搭建一个SVN服务器,当时在Linux上面搭建,搭建的服务器不支持HTTP协议,无法在浏览器中查看,限于当时的能力,未能找到具体的解决方案。今天听同事在提SVN服务器,突然想搭建一个,搭建之后,Windows环境可以直接通过http协议访问,就这样吧,后续遇到SVN使用的具体问题再细究吧。需要的软件S…

  • 模型视图矩阵和投影矩阵_马尔可夫模型

    模型视图矩阵和投影矩阵_马尔可夫模型1概述机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统工作的基本过程是获取目标的图像后,对图像进行识别、特征提取、分类、数学运算等分析操作,并根据图像的分析计算结果,来对相应的系统进行控制或决策的过程。在很多机器视觉应用中,都需要用到机器视觉测量,即根据目标的图像,来得到目标在实际空间中的物理位置,最典型的如行走机器人、SLAM等。要根据图像中的目标像素位置,得到目标的物理空间位置,我们需要首先有一个图像像素坐标与物理空间坐标的映射关系,这种能够表达空间位置如何映射到图像像素位置的数学公式,就

  • 写代码有这16个好习惯,可以减少80%非业务的bug[通俗易懂]

    写代码有这16个好习惯,可以减少80%非业务的bug

  • WebRTC的学习(二)

    WebRTC的学习(二)

  • Pycharm+Django之Django学习(1)(初学者)

    Pycharm+Django之Django学习(1)(初学者)教学属于博主的自学记录,适合刚学习Django的同学,如果比较熟的就不用look了!!!以下都是讲在windows上的部署情况;准备:1、Python+pycharm(下面是博主使用的版本,可自行安装)链接:https://pan.baidu.com/s/1th08XXTqf30Oh0-s7QgL1w密码:r6tc2、安装Django(可以到官网下载,也可使用Python自带…

  • 【C#基础】-Substring截取字符串的方法小结

    【C#基础】-Substring截取字符串的方法小结前言    在公司的图书馆项目中曾经用过截取字符串的方法,项目是java语言的;最近在公司的另一个项目中又需要截取字符串,一种环境是C#语言,一种环境是SQLServer存储过程;先来说一下后台程序中截取字符串的方法。正文c#中截取字符串主要是借助Substring这个函数。stringstring.Substring(intstartIndex,intlength)

发表回复

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

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