文档章节

ARM11 OK6410学习总结----时钟设置(C语言)

For_MGP
 For_MGP
发布于 2014/10/17 20:20
字数 377
阅读 38
收藏 0
#define APLL_LOCK (*((volatile unsigned long *)0x7E00F000))
#define MPLL_LOCK (*((volatile unsigned long *)0x7E00F004))
#define EPLL_LOCK (*((volatile unsigned long *)0x7E00F008))

#define OTHERS    (*((volatile unsigned long *)0x7e00f900))

#define CLK_DIV0  (*((volatile unsigned long *)0x7E00F020))

#define ARM_RATIO    0   /* ARMCLK = DOUTAPLL / (ARM_RATIO + 1)    */
#define HCLKX2_RATIO 4   /* HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1) = 100MHz */
#define HCLK_RATIO   0   /* HCLK = HCLKX2 / (HCLK_RATIO + 1)   = 100MHz       */
#define PCLK_RATIO   1   /* PCLK   = HCLKX2 / (PCLK_RATIO + 1) = 50MHz    */
#define MPLL_RATIO   0   /* DOUTMPLL = MOUTMPLL / (MPLL_RATIO + 1)     */


#define APLL_CON  (*((volatile unsigned long *)0x7E00F00C))
#define APLL_CON_VAL  ((1<<31) | (250 << 16) | (3 << 8) | (1))

#define MPLL_CON  (*((volatile unsigned long *)0x7E00F010))
#define MPLL_CON_VAL  ((1<<31) | (250 << 16) | (3 << 8) | (1))

#define CLK_SRC  (*((volatile unsigned long *)0x7E00F01C))

void clock_init(void)
{
    /*将每一个 LOCK_TIME 设置为 0xffff*/
    APLL_LOCK = 0xffff;
    MPLL_LOCK = 0xffff;
    EPLL_LOCK = 0xffff;

    /* set async mode 当CPU时钟 != HCLK时,要设为异步模式 */
    OTHERS &= ~0xc0;   //将 OTHERS 的第六和第七位清零,以设置成异步模式。
    while ((OTHERS & 0xf00) != 0);
    /*CLK_DIV是为外设进行分频的寄存器,共三个.CLK_DIV0、CLK_DIV1、CLK_DIV2。对于设置内核时钟和AHB、APB的总线时钟来说,我们只需要了解CLK_DIV0的几个位域即可。*/
    CLK_DIV0 = (ARM_RATIO) | (MPLL_RATIO << 4) | (HCLK_RATIO << 8) | (HCLKX2_RATIO << 9) | (PCLK_RATIO << 12);
    
    APLL_CON = APLL_CON_VAL;  /* 500MHz */
    MPLL_CON = MPLL_CON_VAL;  /* 500MHz */

    CLK_SRC = 0x03;//打开时钟源开关,让进过LOCK_TIME后变得稳定后的时钟源输出。
}



注意:OTHERS寄存器中的syncmode和syncmuxsel这两个位应该是协同工作的,一起置1或清0。syncmode要置1,就先向syncmuxsel位写1;syncmode清0后,随即再把syncmuxsel位也清0。


可以结合以下的博客学习:

http://blog.csdn.net/newthinker_wei/article/details/8121506

http://blog.csdn.net/newthinker_wei/article/details/8126035

http://blog.csdn.net/newthinker_wei/article/details/8126354

© 著作权归作者所有

For_MGP
粉丝 2
博文 66
码字总数 20576
作品 0
深圳
程序员
私信 提问
ok6410 uboot os 文件系统 流水灯

飞凌OK6410 开发板简单教程 安装交叉编译器编译器 cross-4.2.2 -eabi.tar.bz2 mkdir /usr/local/armchmod 777 /usr/local/arm //赋给最大权限tar jxvf cross-4.2.2 -eabi.tar.bz2 解压得到文...

cicue
2014/05/21
243
0
OK6410笔记 -- UART串口(OK6410上测试成功)

完成功能:编写串口程序,波特率为115200.当在pc终端上输入一个字符的时候,返回来该字符加1之后的值,比如按下1则返回2,按下a则返回b。 start.S 1 .globl _start 2 _start: 3 4 / 硬件相关...

triston
2013/04/09
2.3K
2
求深圳软件开发C方向(实习)

13届的专科应届生,软件开发专业,刚刚结束在深圳的嵌入式开发培训,希望找个在IT业起步的工作, 我擅长C语言和常用的数据结构,熟悉linux系统, 学习过ARM11,和linux 2.6.38内核 了解C++,...

黄润星
2012/12/04
311
0
25美元的电脑,国外有了,我们一起做自己的吧

Raspberry Pi只有信用卡大小的卡片式电脑,其系统基于Linux。 芯片方案为 Broadcom(博通)BCM2835(CPU,GPU DSP和SDRAM) CPU: ARM1176JZF-S核心(ARM11系列)700MHz, 支持OpenGL ES 2.0...

CycleUser
2012/03/30
1K
11
【JZ2440】自我学习记录【知识点0】【ARM指令集体系结构和ARM系列】

本文会介绍:1、ARM指令集体系结构及特点; 2、基于ARM指令集体系结构设计的不同CPU家族及特点; 3、ARM指令集体系结构和ARM处理器家族的区别。 ARM系列微处理器的核心及体系结构 序号 ARM微...

huayangshiboqi
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JMM内存模型(一)&volatile关键字的可见性

在说这个之前,我想先说一下计算机的内存模型: CPU在执行的时候,肯定要有数据,而数据在内存中放着呢,这里的内存就是计算机的物理内存,刚开始还好,但是随着技术的发展,CPU处理的速度越...

走向人生巅峰的大路
29分钟前
78
0
你对AJAX认知有多少(2)?

接着昨日内容,我们几天继续探讨ajax的相关知识点 提到ajax下面几个问题又是必须要了解的啦~~~ 8、在浏览器端如何得到服务器端响应的XML数据。 通过XMLHttpRequest对象的responseXMl属性 9、 ...

理性思考
39分钟前
4
0
正则表达式基础(一)

1.转义 转义的作用: 当某个字符在表达式中具有特殊含义,例如字符串引号中出现了引号,为了可以使用这些字符本身,而不是使用其在表达式中的特殊含义,则需要通过转义符“\”来构建该字符转...

清自以敬
41分钟前
4
0
idea中@Data标签getset不起作用

背景:换电脑以后在idea中有@data注解都不生效 解决办法:idea装个插件 https://blog.csdn.net/seapeak007/article/details/72911529...

栾小糖
47分钟前
5
0
Apache Kudu 不能删除不存在的数据

使用Apache Kudu客户端,对KafkaConnect Sink 进行扩展。 使用的Apache Kudu 的Java 客户端。突然有天发现作业无法提交,一直报错。 后来才发现这是Kudu自身的一种校验机制。为了忽略这种校验...

吐槽的达达仔
57分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部