s5pv210——时钟系统
来源:互联网 发布:搜款网服饰网络批发 编辑:程序博客网 时间:2024/05/16 10:17
以下内容源于朱友鹏《物联网大讲坛》课程的学习,以及博客http://www.cnblogs.com/biaohc/p/6349195.html,以及用户手册,如有侵权,请告知删除。
一、s5pv210的时钟域
(1)MSYS Domain
- 为处理器、3D、intc(中断)、DMC0、DMC1、IRAM、IROM提供时钟;
- HCLK_MSYS:200MHZ(DM0、DM1使用)
- PCLK_MSYS:100MHz
- ARMCLK:1000MHZ(cpu主频)
- HCLK_IMEM:100MHZ(IROM、IRAM使用)
(2)DSYS Domain
- 为音视频等设备提供时钟;
- HCLK_DSYS:166MHZ
- PCLK_DSYS:83MHz
(3)PSYS Domain
- 为外设提供时钟,如GPIO、I2C、PWM、UART、WDT等。
- HCLK_PSYS:133MHZ
- PCLK_PSYS:66MHz
二、s5pv210的晶振
1、s5pv210有四个晶振
(1)XRTCXTI
- 提供32.768KHz,RTC 使用;
- XRTCXTI and XRTCXTO pins
(2)XXTI
- CMU and PLL使用这个时钟,为APLL、MPLL、VPLL、EPLL提供时钟。
- 推荐频率24MHz。
- XXTI and XXTO pins。
(3)XUSBXTI
- 为APLL、MPLL、VPLL、EPLL、USB PHY提供时钟。
- 推荐24MHz。
- XUSBXTI and XUSBXTO pins
(4)XHDMIXTI :
- 27MHz,VPLL、HDMI PHY为TV解码器提供54MHz时钟。
- XHDMIXTI and XHDMIXTO pins。
三、s5pv210推荐时钟设置
根据推荐值来设置相应的MUX开关、PLL锁相环倍频、DIV分频器的值来得到相应的时钟。
四、时钟设置的关键性寄存器
1、xPLL_LOCK寄存器
(1)设置锁定周期,一般为默认值。因为PLL倍频需要一定时间才能达到相应的频率。
2、xPLL_CON,xPLL_CON0,xPLL_CON1
(1)用来打开或关闭PLL电路,设置倍频参数,查看PLL锁定状态等。
(2)APLL_CON0/APLL_CON1, R/W, Address =0xE010_0100/0xE010_0104
设置APLL的倍频率:FOUT = MDIV X FIN / (PDIV × 2^(SDIV)-1)
如1000MHZ,则1000=125*24 / (3*2^1-1)
(3)MPLL_CON, R/W, Address = 0xE010_0108
设置MPLL的倍频率:FOUT = MDIV X FIN / (PDIV X 2^(SDIV))
上述的1、2是用来控制锁相环相关的。
3、CLK_SRCn(n=0~6)、CLK_SRC_MASKn(n=0~6)
(1)设置MUX开关;
(2)如CLK_SRC0寄存器。首先要关闭4个PLL的MUX开关,设置好相应寄存器以后再把PLL的MUX开关打开。
4、CLK_DIVn寄存器
(1)主要是设置各个分频器的值
(2)如CLK_DIV0寄存器
五、代码实战
#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; }
0 0
- s5pv210——时钟系统
- S5PV210(TQ210)学习笔记——系统时钟和串口
- S5PV210的时钟系统
- s5pv210时钟系统详解
- ARM时钟系统(S5PV210)
- S5PV210时钟系统
- S5PV210的时钟系统简介
- 2. S5PV210系统时钟简介
- 嵌入式Linux裸机开发(六)——S5PV210时钟系统
- S5PV210的时钟系统(上)
- S5PV210 时钟
- s5pv210的时钟系统和时钟的编程方式
- s5pv210——中断系统相关介绍
- 三星S5PV210(ARM Cortex-A8)的时钟分频系统
- S5PV210 sys_clock编程流程 系统时钟功能模块操作
- 第五天:初始化SDRAM 设置S5PV210时钟系统
- 1.6.ARM裸机第六部分-S5PV210的时钟系统
- S5PV210 系列(裸机八)之 时钟系统
- 如何写出好的产品需求文档(PRD)?
- shell通过getopts获取参数
- 内存中数据格式
- 使用npm和webpack构建工作环境
- Linux中ELF格式文件介绍
- s5pv210——时钟系统
- css 使用content:attr()实现悬浮提示
- ajaxfileupload+struts2文件上传、下载
- 新手学习Photon之创建Photon服务器
- C++ explicit构造函数
- 计算机语言中是如何处理sin函数的?
- 今日进度--论文5.10
- 06 布局管理器
- jsp application对象使用 统计访问人数