码迷,mamicode.com
首页 > 其他好文 > 详细

总结:S5PV210时钟系统

时间:2015-12-18 22:32:35      阅读:351      评论:0      收藏:0      [点我收藏+]

标签:

在数据手册《S5PV210_UM_REV1.1》中的section 02_system/3 CLOCK CONTROLLER(354页)
 
一、时钟域
在S5PV210的SoC中,时钟系统分为三个区域:MSYS、DSYS、PSYS。
技术分享
(1)MSYS:CPU(Cortex-A8内核)、DRAM控制器(DMC0和DMC1)、IRAM、IROM等
(2)DSYS:主要是视频图像解码相关的时钟
(3)PSYS:内部外设相关(串口、SD、USB、GPIO、IIC、SPI等)
 
二、时钟源
可以通过四个晶振作为时钟源信号输入,通过MUX开关进行选择,再使用PLL进行倍频。
技术分享
 
三、详细分析
需要设置的几个关键寄存器
(1)CLK_SRC0:用来配置时钟源,对应框图中的MUX开关
(2)APLL_LOCK:配置APLL锁相环
(3)MPLL_LOCK:配置MPLL锁相环
(4)CLK_DIV0:配置分频系数
(5)APLL_CON0:配置锁相环倍频系数
(6)MPLL_CON:配置锁相环倍频系数
配置代码如下:
 1 void clock_init(void)
 2 {
 3     // 第1步:设置时钟开关,使用24MHz的原始时钟源
 4     rREG_CLK_SRC0 = 0x0;
 5     
 6     // 第2步:设置PLL锁定时间(使用默认值即可)
 7     // 默认是:0x0fff    我们设置为:0xffff
 8     rREG_APLL_LOCK = 0x0000ffff;
 9     rREG_MPLL_LOCK = 0x0000ffff;
10     
11     // 第3步:设置DIV分频系数
12     rREG_CLK_DIV0 = 0x14131440;
13     
14     // 第4步:设置PLL倍频系数
15     // FOUT = MDIV*FIN/(PDIV*2^(SDIV-1)) = 0x7d*24(0x3*2^(1-1))=1000MHz
16     rREG_APLL_CON0 = APLL_VAL;
17     // FOUT = MDIV*FIN/(PDIV*2^(SDIV-1)) = 0x29b*24(0xc*2^(1))=667MHz
18     rREG_MPLL_CON = MPLL_VAL;
19     
20     // 第5步:设置各种时钟开关,使用PLL通过
21     rREG_CLK_SRC0 = 0x10001111;    
22 }

最后配置的结果如下:

技术分享
 
 
技术分享
 
注意:重点是学会如何看懂这种类型的时钟框图,学会分析这一类的问题
 
 
 
 

总结:S5PV210时钟系统

标签:

原文地址:http://www.cnblogs.com/zou107/p/5058285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!