s5pv210——初始化时钟

1:s5pv210的时钟域

MSYS Domain:为处理器、3D、intc(中断)、DMC0、DMC1、IRAM、IROM提供时钟,HCLK_MSYS:200MHZ、PCLK_MSYS:100MHz

DSYS Domain:为音视频等设备提供时钟,HCLK_DSYS:166MHZ、PCLK_DSYS:83MHz

PSYS Domain:为外设提供时钟,如GPIO、I2C、PWM、UART、WDT等。HCLK_PSYS:133MHZ、PCLK_PSYS:66MHz

2:s5pv210的晶振

s5pv210有4个晶振时钟,

XRTCXTI:提供32.768KHz,RTC 使用;XRTCXTI and XRTCXTO pins

XXTI:CMU and PLL使用这个时钟为APLL、MPLL、VPLL、EPLL提供时钟。推荐频率24MHz。XXTI and XXTO pins

XUSBXTI:为APLL、MPLL、VPLL、EPLL、USB PHY提供时钟,推荐24MHz。XUSBXTI and XUSBXTO pins.

XHDMIXTI :27MHz,VPLL、HDMI PHY为TV解码器提供54MHz时钟。XHDMIXTI and XHDMIXTO pins

3: s5pv210推荐时钟设置:

根据推荐值来设置相应的MUX开关、PLL锁相环倍频、DIV分频器的值来得到相应的时钟。

对应下面框图进行寄存器设置;

4:相应寄存器

xPLL_LOCK寄存器,设置locking period,一般为默认值。因为PLL倍频需要一定时间才能达到相应的频率。

APLL_CON0寄存器:用来设置APLL的倍频率,

FOUT = MDIV X FIN / (PDIV × 2SDIV-1)

频率1000  MDVI:125、  PDIV:3、  SDIV:1;FOUT = MDIV X FIN / (PDIV × 2SDIV-1) 根据公式计算 FOUT = 1000MHz;

MPLL_CON:寄存器,设置MPLL的倍频率

FOUT = MDIV X FIN / (PDIV X 2SDIV)

SDIV:1、  PDIV:12、  MDIV:667;FOUT = 667MHz;

CLK_SRC0 寄存器,设置MUX开关。

设置各时钟前首先要关闭4个PLL的MUX开关,设置好相应寄存器以后在把PLL的MUX开关打开。

CLK_DIV0寄存器:

设置各个分频器的值,最终得到各个时钟。

5:实战代码

#define _REG_APLL_LOCK            *((unsigned int*)0xE0100000)
#define _REG_MPLL_LOCK            *((unsigned int*)0xE0100008)
#define _REG_EPLL_LOCK            *((unsigned int*)0xE0100010)
#define _REG_VPLL_LOCK            *((unsigned int*)0xE0100020)
#define _REG_APLL_CON0            *((unsigned int*)0xE0100100)
#define _REG_MPLL_CON            *((unsigned int*)0xE0100108)
#define _REG_CLK_SRC0            *((unsigned int*)0xE0100200)
#define _REG_CLK_DIV0            *((unsigned int*)0xE0100300)

#define APLL_SDIV                (1)
#define APLL_PDIV                (3)
#define APLL_MDIV                (125)
#define APLL_EN                    (1)

#define MPLL_SDIV                (1)
#define MPLL_PDIV                (12)
#define MPLL_MDIV                (667)
#define MPLL_EN                    (1)

void clock_init(void)
{
    //第一步关闭PLL的MUX开关
    _REG_CLK_SRC0 = 0x0;

    //第二步设置LOCK时间,设置为默认值0x0FFF
    _REG_APLL_LOCK = 0x0FFF;
    _REG_MPLL_LOCK = 0x0FFF;
    _REG_EPLL_LOCK = 0x0FFF;
    _REG_VPLL_LOCK = 0x0FFF;

    //第三步设置DIV分频器的值
    _REG_CLK_DIV0 = 0x14131400;

    //第四步设置APLL、MPLL的倍频值。
    _REG_APLL_CON0 = (APLL_EN<<31) | (APLL_MDIV<<16) | (APLL_PDIV<<8) | (APLL_SDIV<<0);
    _REG_MPLL_CON  = (MPLL_EN<<31) | (MPLL_MDIV<<16) | (MPLL_PDIV<<8) | (MPLL_SDIV<<0);

    //第五步设置MUX开关
    _REG_CLK_SRC0 = 0x1111;    

}
时间: 2024-08-02 07:03:37

s5pv210——初始化时钟的相关文章

s5pv210的时钟系统概述

S5PV210的时钟系统 (外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频得到各种频率的时钟) 1.为什么要时钟系统?SoC内部有很多器件,譬如CPU.串口.DRAM控制器.GPIO等内部外设,这些东西要彼此协同工作,需要一个同步的时钟系统来指挥 2.为什么要内部先高频然后再分频?主要因为SoC内部有很多部件都需要时钟,而且各自需要的时钟频率不同,没法统一供应.因此设计思路是PLL后先得到一个最高的频率(1GHz.1.2GHz),然后各外设都有自己的分频器再来分频得到自己想要的

9.S5PV210的时钟系统

1.时钟域:MSYS.DSYS.PSYS(1)因为S5PV210的时钟体系比较复杂,内部外设模块太多,因此把整个内部的时钟划分为3大块,叫做3个域.(2)MSYS: CPU(Cortex-A8内核).DRAM控制器(DMC0和DMC1).IRAM&IROM······(3)DSYS: 都是和视频显示.编解码等有关的模块(4)PSYS: 和内部的各种外设时钟有关,譬如串口.SD接口.I2C.AC97.USB等.(5)为什么内部要分为3个域,怎么划分的?因为210内部的这些模块彼此工作时钟速率差异太

Tiny64140之初始化时钟

简介: Tiny6410 时钟逻辑为整个芯片提供了3种时钟分别为FCLK.HCLK.PCLK有三个PLL 分别为APLL.MPLL.EPLL.   APLL 专用于CPU   MPLL 供AHB(存储/中断/LCD等控制器)/APB(看门狗.定时器,SD等)总线上的设备使用   EPLL 供UART,IIC,IIS使用 Tiny6410时钟设置参考图 操作步骤:第一步:设置锁定时间 设置好PLL后,时钟从Fin提升到目标频率时需要一定的时间,这段时间称之为锁定时间一般来说只要设置好[X]PLL_

s5pv210——初始化SDRAM

1:SDRAM基础: 通过s3c2440的内存原理以及时序来理解s5pv210 SDRAM原理.时序. 首先看一下核心板内存如何连接的 可以看一下两个内存芯片接的地址总线均为Xm1_ADDR[13:0],数据总线Xm1_DATA[15:0].Xm1_DATA[31:16],两个内存芯片是并联的,当地址总线Xm1_ADDR[13:0]寻址时, 可以同时在两个内存芯片上各获取16位数据来组成一个32位数据,并由32位数据总线输出. 在看下面这幅图:下图为每个内存芯片内部框图:Block Diagra

S5pv210 时钟体系分析

S5PV210 时钟体系 如下面时钟结构图所示,S5PV210 中包含 3 大类时钟域, 分别是主系统时钟域(简称 MSYS).显示相关的时钟域(简称 DSYS). 外围设备的时钟域(简称 PSYS). 1) MSYS:用来给 cortex a8 处理器.DRAM 控制器.3D.IRAM.IROM.INTC(中断控制器)等提供时钟: 2) DSYS:用来给显示相关的部件提供时钟,包括 FIMC.FIMD.JPEG 和 multimedia IPs; 3) PSYS:用来给外围设备提供时钟,如 i

bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理

bootloader功能介绍 初始化开发板上主要硬件(时钟,内存,硬盘), 把操作系统从硬盘拷贝到内存,然后让cpu跳转到内存中执行操作系统. boot阶段 1.关闭影响CPU正常执行的外设 -关闭看门狗(watch dog)   WTCON 0xE2700000 -关闭中断 CPSR I和F位设置为1,关闭,不响应任何中断. 2.初始化时钟 -倍频到1Ghz,为外设分频 *串口驱动 3.初始化内存控制器,DDRAM -验证内存,往里面写一个值,然后再读出来 4.初始化硬盘,nand Flash

嵌入式Linux裸机开发(六)——S5PV210时钟系统

嵌入式Linux裸机开发(六)--S5PV210时钟系统 一.时钟系统简介 外设工作需要一定频率的时钟,这些时钟都由系统时钟提供.系统时钟一般由外部低频24MHZ晶体振荡器通过锁相环电路PLL倍频产生.通过外部的低频晶体振荡器产生系统时钟不仅可以减少干扰还可以降低成本.外设的工作频率越高,功耗越高,越不稳定.通过关闭外设的时钟可以关闭外设. 二.时钟域 S5PV210 中包含 3 大类时钟 domain, 分别是主系统时钟 domain (简称 MSYS).显示相关的时钟 domain (DSY

s5pv210的启动过程

s5pv210的启动方式:SD0启动,SD2启动,USB启动 s5pv210启动涉及的硬件 不需要初始化的外存Norflash(iROM)+静态内存SRAM (iRAM ) 需要初始化的大动态内存DRAM +大外存iNand 上电后,先从64KB的iROM中读取预先设置的代码BL0,这部分代码初始化了SOC 内部的东西,包括初始化时钟.看门狗,并内置了初始化SD卡和iNand,内置了读取SD卡和iNand 的代码.接着根据OMpins判断启动方式. 根据判断出的启动方式,使用不同的初始化代码和读

SOC时钟

什么是时钟?SOC为什么需要时钟? 时钟是同步工作系统的同步节拍. SOC内部有很多器件,譬如CPU.串口.DRAM控制器,GPIO等内部外设,这些东西要彼此协调工作,需要一个同步的时钟系统来指挥. 时钟的获得? SOC时钟获得一般有: 外部直接输入时钟信号,SOC有一个引脚用来输入外部时钟信号,用的很少 外部晶振+内部时钟发生器产生时钟,大部分低频单片机这么工作 外部晶振+内部时钟发生器+内部PLL产生高频时钟+内部分频器分频得到各种频率的时钟 s5pv210属于第3种,为什么这么设计? 第一