本文主要介绍6410内核和AHB、APB总线的时钟设置。

6410的时钟逻辑结构还是比较清晰的,配置起来并不难(曾让笔者极度抓狂的是Freescale Kinetis系列的片子,系统时钟配置起来很麻烦,有好多种时钟模式)。

下面先来看一下6410的时钟构成。

这里可以看到,6410的时钟控制逻辑主要产生三个重要的CLK,分别是ARMCLK(内核用),HCLK(AXI/AHB总线用)和PCLK(APB总线用)。还有一个重要的信息,就是6410内部共有三个锁相环,分别是APLL,MPLL和EPLL(上图中还未提到)。其中APLL专门为ARMCLK提供时钟源,MPLL则为HCLK和PCLK提供时钟源,本文下面就会对这两个PLL进行设置。至于EPLL,它主要是为音频设备等特殊外设服务,现在笔者还没有用到,所以暂不做过多介绍。

关于AXI/AHB,APB这几种总线,它们上面会挂接不同的外设,下面是6410的Manual中给出的图示:

上面的图表很好地体现了6410内部不同总线与外设间的对应关系。图表上的文字部分是说,6410X的内核主要由ARM1176处理器、几个多媒体和图像协处理器(MFC等模块)以及各种常用的外设IP核(如PWM、UART之类)组成。ARM1176处理器通过64位的AXI总线与一些存储控制器(DDRAM控制器,NAND控制器等)连接,这样可以满足带宽的需求。多媒体与图像协处理器被分成了六个单元,这六个单元可以独立供电,在某个模块用不上时可以单独地停止对其的电源供应而降低系统损耗。

要设置这几种总线的时钟频率,只需设置HCLK和PCLK即可。

各种时钟信号之间的依赖和选择关系总图见6410 User Manual的3-3页中的图表。图片太大,这里不便贴出。

下面来看下时钟结构图中三个锁相环的部分。下图中的蓝色方框圈出了三个复选单元,这三个复选单元分别负责输出MOUT(APLL)、MOUT(MPLL)、MOUT(EPLL),这三个时钟为下一级时钟提供源。

由上图可见,MOUT有两个选择,一个是不经过锁相环直接选择外部输入的时钟源(亦即锁相环的输入,用FIN表示),一个是锁相环的输出时钟(用FOUT表示),这些都通过CLK_SRC寄存器中的相应位来控制。为了实现实现较高的系统频率我们一般都是选择FOUT,即向CLK_SRC寄存器中的相应位写1。

上图中看到FIN本身也有两个源供选择,一个是直接选择外部的时钟输入,一个是选择外部的晶振。下面是我从tiny6410核心板原理图截取的一部分,参照这个更方便我们理清这个环节:

一般我们都是选择晶振作为源输入。(可以看到tiny6410核心板上的EXTCLK引脚直接上拉了,并没有用它做输入时钟)。

FIN的选择是通过OM[0]引脚在上电时的状态决定的,下面是Manual里的图表,红框圈出了与此相关的内容。

再看下tiny6410的原理图,可以发现,OM[0]引脚实际上是被下拉了(注释我写在了图中),上电时OM[0]会是0的状态,因此也就选择了晶振作为源

锁相环部分的时钟结构到这里也就差不多说清楚了。下面看看系统最后用到的那三个重要时钟(ARMCLK,HCLK,PCLK)是如何生成的。

上图的蓝色方框圈出了两个复选单元(其实是一个,因为这两个复选单元都是由同一个位控制,写手册的人应该是为了方便我们阅读才画成了两个),这个复选由MISC_CON寄存器的第19位控制。当这一位为0时,处于正常模式,为1时处于自动SYN667M模式。这里我们一般都设置成0即可,系统复位后这个位的复位值也是0(所以Uboot中一般并不对这一位进行设置)。因为我也不打算用什么自动SYN667M模式,我下面分析时就直接忽略这两个复选单元了。

在上图的中间还有一个重要的复选单元,不过截图的时候忘了用方框圈出,就是由OTHERS寄存器的第6位控制的那个SYNCMUX。当该位为1时,表示同步模式,同步模式下ARMCLK、HCLK、PCLK都由MOUT(APLL)提供源,相当于只用到了APLL这个锁相环;当改位为0时,表示异步模式,这时ARMCLK仍由MOUT(APLL)提供源,但HCLK和PCLK由MOUT(MPLL)提供源,MPLL这个锁相环就有用武之地了。

通过上图可以清晰地看出,MOUT(APLL)通过DIV(ARM)分频后就直接得到ARMCLK(我刚才说了我直接无视蓝框圈出的那两个复选单元,我用正常模式不用自动SYNC667模式,下面的说明中不再作此提示)。

在生成HCLK时钟和PCLK时钟的过程中,需要先生成HCLKX2时钟。在同步模式下(OTHER[6]=1时),HCLKX2时钟由MOUT(APLL)经过DIV(HCLKX2)分频得到;异步模式下(OTHER[6]=0时),HCLKX2时钟由MOUT(MPLL)经过DIV(HCLKX2)分频得到。得到HCLKX2时钟后,对它进行DIV(HCLK)分频得到HCLK时钟,进行DIV(PCLK)分频得到PCLK时钟。

DIV(ARM)、DIV(HCLKX2)、DIV(HCLK)、DIV(PCLK)这四个数的值分别由CLK_DIV0寄存器的ARM_RATIO、HCLKX2_RATIO、HCLK_RATIO、PCLK_RATIO这四个位域决定。见下图:

好了,6410的时钟结构分析到这里也就差不多了。剩下的就是编程设置各寄存器的值。设置时注意以下几点注意事项:

总结一下就是:

1.ARMCLK最高设置为667M。

2.HCLK最高设置为133M。

3.PCLK最高设置为66M。

4.HCLKX2最高设置为266M。

5.AHB时钟和APB时钟之间的频率比必须是偶数(设置HCLK_RATIO和PCLK_RATIO时要注意)。

*6.在自动SYNC667模式下(虽然我这里不用这个模式,但为以后可能用到的朋友提个醒),ARMCLK时钟必须是HCLK时钟的整数倍,并且当ARMCLK超过533M以上时,ARMCLK、HCLKX2、HCLK之间比值只能是1:2.5:5。

6410的系统时钟设置(上)---6410时钟控制逻辑框架分析相关推荐

  1. xubuntu系统中设置上边框隐藏

    问题描述   在xubuntu系统中使用软件时,打开的软件弹窗都会置于最上方,如果软件全屏使用的话,上方的边框很影响用户使用体验. 原因分析: 该问题属于panel的设置问题.   在界面操作上如下: ...

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

    上篇中已经详细分析了6410时钟系统的结构,现在就介绍下几个与时钟设置相关的寄存器. 1.APLL_LOCK.MPLL_LOCK.EPLL_LOCK 这三个寄存器的低十六位分别表示APLL.MPLL. ...

  3. esp32 rtc 时钟设置不对_STM32入门系列-STM32时钟系统,STM32时钟树

    时钟对于单片机来说是非常重要的,它为单片机工作提供一个稳定的机器周期从而使系统能够正常运行.时钟系统犹如人的心脏,一旦有问题整个系统就崩溃.我们知道STM32属于高级单片机,其内部有很多的外设,但不是 ...

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

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

  5. Linux系统中的时间设置(硬件时钟VS系统时钟)

    在实际工作中,我们部署在linux系统中的应用的运行通常需要使用正确的时间,而在没有时钟同步服务的时候,就需要我们手动去修改linux的系统时间.那么这里就说说如何修改linux的系统时间. 软件时钟 ...

  6. 计算机的时钟设置错误,错误:系统时钟已被设置回过去的时间。 这是不允许的!...

    错误:系统时钟已被设置回过去的时间. 这是不允许的! 错误消息 启动 Esri 软件产品可能会返回以下错误:错误: "系统时钟已被设置回过去的时间. 这是不允许的!" 原因 任何将 ...

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

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

  8. FPGA初学记录——数字时钟系统搭建(上)

    FPGA初学记录--数字时钟系统搭建(上) 野火征途Pro开发板教程--数码管动态展示拓展训练,数字时钟系统搭建 文章目录 FPGA初学记录--数字时钟系统搭建(上) 前言 一.问题简述 二.功能解析 ...

  9. 汇编实现时钟设置代码理解

    汇编实现时钟设置代码理解 下面的笔记是我在看<朱老师物联网大讲堂>(www.zhulaoshi.org)之后所做的笔记,只是大概根据自己看了视频与朱老师上课做的笔记而有的理解记录下来. 写 ...

最新文章

  1. 26、HTML 区块
  2. PHP的Postman使用
  3. Solaris 下 Oracle impdp 过程中出现的问题
  4. C#控件之Repeater控件使用
  5. C++学习笔记系列(一)
  6. 微信分身版电脑版_电脑版营销wetool电脑版-网站
  7. 社交网络中各类产品形态的分析
  8. 获得学士学位的机器学习工程工作
  9. 微信小程序滑动切换选项卡
  10. 项目经理和技术主管的分工
  11. Ubuntu 无法连接网络
  12. 油猴脚本 from greasyfork
  13. 搭建短域/短链接跳转平台
  14. 将秒数转为时分秒的格式
  15. powerCenter介绍
  16. leetcode 166分数到小数
  17. Cisco IP Phone 7960/7940 SCCP firmware 转换成SIP firmware过程
  18. 玩转华为ENSP模拟器系列 | 配置基于VLAN的二层协议透明传输示例
  19. java ssm企业设备采购台账管理系统
  20. 关于ABB机器人安全区设定案例

热门文章

  1. HuggingFace学习1:tokenizer学习与将文本编码为固定长度(pytorch)
  2. python logging模块打印并记录日志
  3. pandas将所0值修改为NaN
  4. c++ 线程软件看门狗_装配生产线MES系统软件
  5. XAF-UI元素概述
  6. SpringCloud04 服务配置中心、消息总线、远程配置动态刷新
  7. C++ Primer学习笔记(一)
  8. Smack+Openfire 接收和发送文件
  9. 新手做2D手游该用哪些工具?
  10. 在没有插件的情况下为Chrome设置Proxy