S5PV210的时钟系统
来源:互联网 发布:淘宝信用卡哪个好 编辑:程序博客网 时间:2024/05/01 08:48
般来讲,MCU 的主时钟来源主要是外部晶振或外部时钟,比较常见的是外部晶振。 一般情况, 系统内所使用的时钟都是高频率的时钟,外部晶振一般达不到那么高的频率,所以
一般使用锁相环电路(PLL)进行倍频,而 210 正是通过外接 24MHz 的外部晶振,通过一定的倍频达到更高的频率。
S5PV210 拥有三个时钟域, 分别是主系统时钟(MSYS) 、 显示系统时钟(DSYS) 、以及外设相关系统时钟(PSYS) 。MSYS 主要是给 Cortex A8 处理器、DRAM 内存
控制器、 3D、内部 SRAM、 INTC 以及配置接口 SPERI 用的,最高可达到 200MHz; DSYS主要是给显示相关的模块用的,如: FIMC、 FIMD、 JPEG 等,最高可达到 166MHz
PSYS 主要用于 IO 外设用的,如:GPIO 、I2C 、WDT 、UART 等。
S5PV210有 4 种 PLL 电路,分别是 APLL(主要驱动 MSYS 时钟域) 、MPLL(主要驱动 DSYS时钟域) 、 EPLL (主要用于产生 audio 时钟)、 VPLL (主要用于 video 系统时
钟)。
经典的频率参数:
freq(ARMCLK) = 1000MHz
freq(HCLK_MSYS) = 200MHz
freq(HCLK_IMEM) = 100MHz
freq(PCLK_MSYS) = 100MHz
freq(HCLK_DSYS) = 166MHz
freq(PCLK_DSYS) = 83MHz
freq(HCLK_PSYS) = 133MHz
freq(PCLK_PSYS) = 66MHz
freq(SCLK_ONENAND) = 133MHz,166MHz
系统时钟配置的一般步骤
② 配置 PLL
③ 选择时钟源
④ 配置 MDIV、PDIV、SDIV 的分频系数
S5PV210 的经典配置参数
这里是APLL参数的推荐值.具体计算公式:
Equation to calculate the output frequency:
FOUT = MDIV X FIN / (PDIV ×2^SDIV-1)
参数直接配置是非常困难的,所以给出了一些常用的经典参数,直接查表用就可以了。具体公式和其他的推荐值都在210手册上面。
S5PV210 寄存器的配置
时间?因 为 PLL 设置完成过程需要一个起振的过程,这段时间内 PLL 输
出的频率还不稳定。
② xPLL 的配置需要设置 APLL_CON0、MPLL_CON 寄存器。
③ 时钟源的选择需要设置 CLK_SRC0 寄存器。
④ 时钟分频系需要配置 CLK_DIV0 寄存器。
#include"clock.h"/*S5PV210有三个时钟域:主系统时钟(MSYS) 显示系统时钟(DSYS),外设相关时钟(PSYS);有4路PLL时钟APPL(驱动MSYS),MPLL(驱动DSYS时钟域),EPLL(产生audio时钟),VPPL(主要video时钟);FOUT=MDIV*FIN/(PDIV*2^(SDIV-1))时钟关系:MSYS: -freq(ARMCLK) =freq(MOUT_MSYS)/N(1<N<8); -freq(HCLK_MSYS) =freq(ARMCLK)/N(1<N<8); -freq(PCLK_MSYS) =freq(HCLK_MSYS)/N(1<N<8); -freq(HCLK_IMEM) =freq(HCLK_MSYS)/2;DSYS: -freq(HCLK_DSYS) =freq(MOUT_DSYS)/N(1-16); -freq(PCLK_DSYS) =freq(HCLK_DSYS)/N(1-8);PSYS: freq(HCLK_PSYS)=freq(MOUT_PSYS)/N(1<N<16) freq(PCLK_PSYS)=freq(HCLK_PSYS)/N(1<N<8); freq(PCLK_ONENAND)=freq(HCLK_PSYS)/N(1<N<8);*//* *sys_clock_init()函数的总体设置时钟情况如下: *ARMCLK=1000MHz, HCLKM=200MHz, HCLKD=166.75MHz *HCLKP =133.44MHz, PCLKM=100MHz, PCLKD=83.375MHz, *PCLKP =66.7MHz */ /*配置步骤: 1.设置系统锁相环电路(PLL)的锁定时间 2.配置PLL 3.选择时钟源 4.配置MDIV,PDIV,SDIV的分频系数。 每个时钟为了方便配置都给了写推荐值 例如: APLL: FIN TargetFout P M S FOUT (MHZ) 24 1000 3 125 1 1000 FOUT=125*24/(3*2^(1-1))=1000;void sys_clock_init(){/* * 由Fin通过PLL上升到一定的频率所需要的锁定时间 */APLL_LOCK = 0xFFFF;MPLL_LOCK = 0xFFFF;/* *使能APLL控制器,使能锁标志位,MDIV = 0x7d,PDIV = 0x3,SDIV = 0x1 *FOUTapll = MDIV * FIN / (PDIV*2^(SDIV-1)) * = 0x7d*24/(0x3*2^(0x1-1)) * = 125*24/(3*2) = 1000MHz */ /* bit[31]:使能位; bit[29]:锁定位; bit[25:16]:MDIV; bit[13:8]:PDIV; bit[2:0]:SDIV;*/APLL_CON0 = (1 << 31)|(1 << 29)|(0x7d << 16)|(0x3 << 8)|(0x1 << 0);/* * 使能MPLL控制器,使能锁标志位,MDIV = 0x29b,PDIV = 0xc,SDIV = 0x1 *FOUTmpll = MDIV * FIN / (PDIV*2^SDIV) * = 0x29b*24/(0xc*2^1) * = 667*24/(12*2) = 667MHz */MPLL_CON = (1 << 31)|(1 << 29)|(0x29b << 16)|(0xc << 8)|(0x1 << 0);/* * 时钟源的设置 *ONENAND_SEL = HCLK_DSYS 高位 *MUX_PSYS_SEL = SCLKMPLL *MUX_DSYS_SEL = SCLKMPLL /|\ *MUX_MSYS_SEL = SCLKAPLL | *VPLL_SEL = FOUTVPLL | *EPLL_SEL = FOUTEPLL | *MPLL_SEL = FOUTMPLL *APLL_SEL = FOUTAPLL 低位 */CLK_SRC0 = (1 << 28)|(1 << 12)|(1 << 8)|(1 << 4)|(1 << 0); /* * 设置系统时钟分频系数 * PCLK_PSYS_RATIO = 0x1 高位 * HCLK_PSYS_RATIO = 0x4 * PCLK_DSYS_RATIO = 0x1 /|\ * HCLK_DSYS_RATIO = 0x3 | * PCLK_MSYS_RATIO = 0x1 | * HCLK_MSYS_RATIO = 0x4 | * A2M_RATIO = 0x4 * APLL_RATIO = 0x0低位 */CLK_DIV0 = (0x1 << 28)|(0x4 << 24)|(0x1 << 20)|(0x3 << 16)|(0x1 << 12)|(0x4 << 8)|(0x4 << 4)|(0 << 0);}/*① MOUT_MSYS = FOUTapll = 1000MHz 而 ARMCLK 根据经典值为 1000 ,所以APLL_RATIO = 0;② SLKA2M = HCLK_MSYS = 200MHz,而 SCLKAPLL = 1000,所以 A2M_RATIO = 4;③ HCLK_MSYS = 200MHz,而 ARMCLK = 1000,所以 HCLK_MSYS_RATIO = 4;④ MOUT_DSY 来自 SCLKmpll 即 FOUTmpll = 667MHz,而 HCLK_DSYS 按照经典设置应为 166MHz 所以,HCLK_DSY_RATIO 约为 3;⑤ 按照 5.1 节讲的经典值设置可知 PCLK_DSYS = 166MHz,HCLK_DSYS=83MHz,故PCLK_DSYS_RATIO = 1;⑥ 由图 5.3 可知, MOUT_PSYS 与 MOUT_DSYS 的来源是一样的,故也是 FOUTmpll = 667MHz,而 HCLK_PSYS = 133,故 HCLK_PSYS_RATIO = 4;⑦ 按照 5.1 节讲的经典值设置可知 PCLK_PSYS = 66MHz,HCLK_PSYS=133MHz,故PCLK_PSYS_RATIO = 1;*/
- S5PV210的时钟系统
- S5PV210的时钟系统简介
- S5PV210的时钟系统(上)
- s5pv210时钟系统详解
- ARM时钟系统(S5PV210)
- S5PV210时钟系统
- s5pv210的时钟系统和时钟的编程方式
- s5pv210——时钟系统
- 2. S5PV210系统时钟简介
- 从零开始基于S5PV210的嵌入式时钟系统的分析
- 三星S5PV210(ARM Cortex-A8)的时钟分频系统
- 1.6.ARM裸机第六部分-S5PV210的时钟系统
- S5PV210 时钟
- 八.ARM裸机学习之S5PV210的时钟系统2(汇编代码及时钟框图深入理解)
- 八.ARM裸机学习之S5PV210的时钟系统1(原理概念及框图分析)
- 按照S5PV210的官方手册使用C语言配置系统时钟--实例分析
- s5pv210 clock的时钟的发生过程
- 4.S5PV210时钟设置的关键寄存器
- Java实现各类排序
- Java 中对象的销毁
- Ubuntu14.04下安装QQ 国际版
- Java中Runtime类(传智播客毕老师视频讲解)
- BeautifulSoup提示找不到lxml解析包的解决方法
- S5PV210的时钟系统
- Spark视频第1期:Spark亚太研究院决胜云计算大数据时代:100期Spark公益大讲堂之革命Hadoop Spark把云计算大数据速度提高100倍以上
- 数据库范式
- 机房收费系统总结(二) — 总结再分析
- Spark视频第2期:Shark、SparkSQL
- [Leetcode] Add Two Numbers
- Spark视频第3期:Spark 1.0内核探索
- nyist 小博弈 大数求余
- Spark视频第4期:构建商业生产环境下的Spark集群实战