上篇中已经详细分析了6410时钟系统的结构,现在就介绍下几个与时钟设置相关的寄存器。

1.APLL_LOCK、MPLL_LOCK、EPLL_LOCK

这三个寄存器的低十六位分别表示APLL、MPLL、EPLL这三个锁相环"锁相"所需的时间(周期数),当锁相环的输入或设置改变后,只有经历这么多个周期数后,才让锁相环有输出,这里一般保留默认值(同时也是允许的最大值)0xffff,这个数大可以保证锁相环始终能有稳定的输出。

2.APLL_CON、MPLL_CON、EPLL_CON0、EPLL_CON1

这几个寄存器包含了三个PLL的配置信息。这里只介绍APLL_CON和MPLL_CON。

APLL_CON/MPLL_CON寄存器中重要的几个位域:[31]ENABLE、[25:16]MDIV、[13:8]PDIV、[2:0]SDIV。其中ENABLE位控制相应锁相环的使能,另外三个位域负责产生输出时钟。

锁相环输出时钟=晶振时钟*MDIV/(PDIV*(2^SDIV))。

其他的注意事项和说明在上图中已标出。

3.CLK_DIV0、CLK_DIV1、CLK_DIV2

这些都是为外设进行分频的寄存器。对于设置内核时钟和AHB、APB的总线时钟来说,我们只需要了解CLK_DIV0的几个位域即可。

这四个位域的作用在上篇中已经介绍过了,这里不再赘述。

4.CLK_SRC

这个寄存器是为各个时钟选择源。我们只用它的低两位来为MOUT(MPLL)和MOUT(APLL)来选择源。当对应位为0时,表示选择FIN作为源,相当于没有用到相应的PLL;当对应位为1时,表示选择FOUT作为源,PLL就起到了作用。

(忘了MOUT(MPLL)和MOUT(APLL)分别指什么??参考上篇中的Figure3.5或Figure3.4,这两个都用小红框圈着,找找看)

5.OTHERS

这个寄存器我们只需要用到下面几个位域:

SYNCMUXSEL就是选择同步模式还是异步模式的。其他两个位域在三星提供的User Manaul里并没有过多的说明,我现在还不是特别清楚他们的作用。我是分析了Uboot1.1.6中的代码后才知道几个位的用法。下面是Uboot1.1.6中board\samsung\smdk6410目录下的lowlevel_init.S文件中与OTHERS寄存器的这些位相关的设置部分:

(下面的注释是笔者自己加进去的,Uboot源码中并没有)

[html] view plaincopy
  1. #ifdef  CONFIG_SYNC_MODE
  2. ldr r1, [r0, #OTHERS_OFFSET]
  3. mov r2, #0x40
  4. orr r1, r1, r2
  5. str r1, [r0, #OTHERS_OFFSET]
  6. ;向SYNCMUXSEL位写1
[html] view plaincopy
  1. nop
  2. nop
  3. nop
  4. nop
  5. nop
  6. ;等待几个时钟
  7. ldr r2, =0x80
  8. orr r1, r1, r2
  9. str r1, [r0, #OTHERS_OFFSET]            ;向SYNCMODE为写1
  10. heck_syncack:
  11. ldr r1, [r0, #OTHERS_OFFSET]
  12. ldr r2, =0xf00
  13. and r1, r1, r2
  14. cmp r1, #0xf00
  15. bne check_syncack               ;然后等待SYNCACK位域变成1111(即0xf)
[html] view plaincopy
  1. ;------------上面是同步模式下的操作方式,下面是异步模式下的操作方式。----------------------------
[html] view plaincopy
[html] view plaincopy
  1. #else   /* ASYNC Mode */
  2. nop
  3. nop
  4. nop
  5. nop
  6. nop
  7. ldr r1, [r0, #OTHERS_OFFSET]
  8. bic r1, r1, #0xC0
  9. orr r1, r1, #0x40
  10. str r1, [r0, #OTHERS_OFFSET]            ;先将SYNCMODE位清零
[html] view plaincopy
  1. wait_for_async:
  2. ldr r1, [r0, #OTHERS_OFFSET]
  3. and r1, r1, #0xf00
  4. cmp r1, #0x0
  5. bne wait_for_async                 ;等待SYNCACK位域变为0
[html] view plaincopy
  1. <p>    ldr r1, [r0, #OTHERS_OFFSET]
  2. bic r1, r1, #0x40
  3. str r1, [r0, #OTHERS_OFFSET]           ;将SYNCMUXSEL位清零</p>
[html] view plaincopy

我们编程的时候也按着这个顺序来即可。(路过的大神如果哪位知道哪里有关于这几个位的详细说明请一定要留上一言,为以后可能经过这里的新手们提供点帮助)

时钟这块重要的寄存器就是这几个。下篇中直接贴出C源码供路过的菜鸟们参考。

6410的系统时钟设置(中)---相关寄存器介绍相关推荐

  1. 6410的系统时钟设置(上)---6410时钟控制逻辑框架分析

    本文主要介绍6410内核和AHB.APB总线的时钟设置. 6410的时钟逻辑结构还是比较清晰的,配置起来并不难(曾让笔者极度抓狂的是Freescale Kinetis系列的片子,系统时钟配置起来很麻烦 ...

  2. 6410的系统时钟设置(下)---几个常用函数的C源码

    好了,贴源码! //common.h [cpp] view plaincopy #ifndef COMMON_H #define COMMON_H typedef unsigned long uint ...

  3. STM32系统时钟设置,采用外部有源晶振相关配置问题

    今天在调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变.程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢. 查 ...

  4. STM32系统时钟设置(标准库)

    1.STM32F407时钟树 2.系统时钟相关的结构 HSE高速外部时钟信号 锁相环PLL 锁相环的主要作用就是对时钟进行倍频,然后把时钟输出到各个功能部件.PLL有两个,一个主PLL,另一个是专用的 ...

  5. macos系统偏好设置中‘无法打开 Java,因为他不可用‘

    问题来源 根据 oracle 官网的提示: 删除了 java 之后,发现系统偏好设置中最底部的 java无法打开,又找不到地方卸载. 解决办法 重新下载jdk安装包,并在打开安装引导之后选择" ...

  6. Mac 上设置显示器相关参数介绍

    Mac 上设置显示器相关参数介绍 在 Mac 上,使用"显示器"系统偏好设置来调整分辨率和亮度,以及设置专用于支持各种专业媒体类型和相关制作工作流程的其他选项. 在"预置 ...

  7. linux 多核 系统时钟,Linux中的时间

    1. Linux中time相关概念 1.1 real time 指的是实际流逝的时间,又称为Wall Clock Time(墙上时间). 比如,time命令统计出的real time指的是该进程从开始 ...

  8. arm s32440a系统时钟设置

    第一步设置:LOCKTIME寄存器(0x4c000000)  默认设置为0xFFFFFFFF 第二步:设置时钟分配器CLKDIVN (0x4c000014) 比如设置 tFCLK:tHCLK:tPCL ...

  9. Win系统 - BIOS设置中找不到U盘选项该怎么办?

    众所周知,u盘装系统必须先启动u盘才能进入pe安装系统,而设置u盘启动项有两种方法,第一种是快速启动项设置,第二种bios里面设置,但是奇怪的是有部分用户在主板BIOS设置中找不到USB-HDD等U盘 ...

最新文章

  1. 1035 插入与归并
  2. 阿里云 Ubuntu PHP7 Nginx Mysql 开发环境搭建
  3. 使用RSA私钥或pfx私钥签名String
  4. 集成ACEGI 进行权限控制
  5. 字符串基本操作 c语言,数据结构C语言字符串的基本操作.doc
  6. 1 第一次画PCB总结
  7. win10下安装ubuntu14.04双系统(UEFI固件)
  8. 2014秋应用计算机,2014年秋计算机应用基础》期末试卷A(A3版).doc
  9. 小米12 mini曝光:骁龙898加持
  10. NVIDIA/Apex安装时遇到 C++编译:unrecognized command line option ‘-std=c++14’ 错误解决
  11. 两个可用的ntp服务器地址
  12. 万稞pw80线切割编程软件_数控编程软件(CAM)大盘点,你选用的哪种?
  13. 使用浏览器从网页下载音频文件
  14. Vue Router 重定向和别名
  15. HDU:2055 An easy problem
  16. android连接苹果蓝牙耳机,苹果蓝牙耳机怎么配对 苹果蓝牙耳机怎么配对安卓手机 苹果蓝牙耳机使用说明...
  17. UOS系统如何查看windows系统的共享文件
  18. java根据经纬度获取地址信息
  19. 报错提示:应用程序无法启动,因为应用程序的并行配置不正确,有关详细信息,请参阅应用程序时间日志,或使用命令行sxstrace.exe工具。有效解决方法
  20. scratch和平使者 电子学会图形化编程scratch等级考试一级真题和答案解析2022年12月

热门文章

  1. pytorch构造可迭代的Dataset——IterableDataset(pytorch Data学习二)
  2. pytorch 保存、加载模型
  3. SQLSERVER查询存储过程内容
  4. Codeforces 1096F(dp + 树状数组)
  5. [USACO08MAR]土地征用Land Acquisition
  6. 高阶篇:8.2)注塑模具讨论要点(讨模评审)
  7. LAMP搭建discuz
  8. SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现
  9. VBS脚本压缩IIS日志
  10. java 蓝桥杯 石子游戏(题解)