在数据手册《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 }
最后配置的结果如下:
注意:重点是学会如何看懂这种类型的时钟框图,学会分析这一类的问题
时间: 2024-10-16 21:14:52