总结:S5PV210时钟系统

在数据手册《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 }

最后配置的结果如下:

 
 
 
注意:重点是学会如何看懂这种类型的时钟框图,学会分析这一类的问题
 
 
 
 
posted @ 2015-12-18 21:44  小清奈  阅读(742)  评论(0编辑  收藏  举报