ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3);

ChangeClockDivider(key, 12);

1)FLCK、HCLK和PCLK的关系

S3C2440有三个时钟FLCK、HCLK和PCLK

s3c2440官方手册上说P7-8写到:

FCLK is used by ARM920T,内核时钟,主频。

HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCD controller, the DMA and USB host block. 也就是总线时钟,包括USB时钟。

PCLK is used for APB bus, which is used by the peripherals such as WDT, IIS, I2C, PWM timer, MMC interface,ADC, UART, GPIO, RTC and SPI.即IO接口时钟,例如串口的时钟设置就是从PCLK来的;

那么这三个时钟是什么关系呢?

这三个时钟通常设置为1:4:8,1:3:6的分频关系,也就说如果主频FLCK是400MHz,按照1:4:8的设置,那么HLCK是100MHz,PLCK是50MHz

寄存器CLKDIVN表明并设置了这三个时钟的关系

如果CLKDIVN设置为0x5,那么比例即为1:4:8,前提是CAMDIVN[9]为0.

2)输入时钟FIN与主频FCLK的关系

现代的CPU基本上都使用了比主频低的多的时钟输入,在CPU内部使用锁相环进行倍频。对于S3C2440,常用的输入时钟FIN有两种:12MHz和16.9344MHz,那么CPU是如何将FIN倍频为FCLK的呢?

S3C2440使用了三个倍频因子MDIV、PDIV和SDIV来设置将FIN倍频为MPLL,也就是FCLK

MPLL=(2*m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV"

寄存器MPLLCON就是用来设置倍频因子的

理论上,你可以通过设置该寄存器来实现不同的频率,然而,由于实际存在的各种约束关系,设置一个适当的频率并不容易,手册上列出了一些常用频率的表格,

例如,假设输入时钟FIN=16.9344M,MDIV=110, PDIV="3", SDIV="1",

利用上面的公式,FCLK=2*16.9344*(110+8)/((2+3)*2)=399.65

3)关于USB时钟

S3C2440有两个锁相环,一个主锁相环MPLL提供给FCLK的,另外一个UPLL是提供给USB时钟(48MHz)的,与MPLL一样,UPLL的产生也是通过UPLLCON寄存器设置分频因子得到,计算公式稍有不同:

UPLL=(m*FIN)/(p*2^s) where m=(MDIV+8), p=(PDIV+2), s="SDIV",同样,可以通过查表得到一个合适的值。

最后值得一提的是,在CLKDIVN的第三位DIVN_UPLL用来设置USB时钟UCLK和UPLL的关系,如果UPLL已经是48Mhz了,那么这一位应该设置为0,表示1:1的关系,否则是1:2的关系

2410的时钟和电源管理

概述

时钟和电源管理模块由3部分组成:时钟控制、USB控制、电源控制。

时钟控制部分产生3种时钟信号:CPU用的FCLK,AHB总线用的HCLK,APB总线用的PCLK。有2个锁相环,一个用于FCLK HCLK PCLK,另一个用于48MHz的USB时钟。可以通过不使能锁相环来达到慢速省电目的。

电源管理模块提供了4种模式: Normal模式、Slow模式、Idle模式、Power_Off模式。

Normal Mode

该模式下如果所有外围设备都打开时电流消耗最大,允许用户通过软件关闭外围设备达到省电目的。

Slow Mode

不采用PLL的模式,能量消耗仅取决于外时钟的频率。由外部提供的时钟源作FCLK。

Idle Mode

关掉了给cpu的FCLK时钟,但外围设备时钟仍存在,任何到CPU的中断请求可以将cpu唤醒。

Power_off Mode

这种模式关掉了内部供电,仅有给wake_up部分的供电还存在。可以通过外部中断或实时时钟中断可以唤醒。

功能描述

时钟结构:主时钟源来自外部晶振XTlpll或外部时钟EXTCLK。

时钟源选择:通过OM[3: 2]的高低电平选择,现在我们采用00。OM[3:2]的状态在nRESET的上升沿锁存。尽管MPLL在上电复位后就开始工作,但是MPLL输出不作为系统时钟,只有对MPLLCON写入适当的数值后才可以。即使用户不想改变MPLLCON的值,也要重新写一遍才能使其起作用。

时钟控制逻辑:时钟控制逻辑决定要使用的时钟源,当锁相环被设置为一个新的值时,时钟控制逻辑切断FCLK直到PLL输出稳定。时钟控制逻辑在上电复位或从power_down状态启动时使能。

上电复位:注意上电后必须通过设置PLLCON才能使PLL作用。

在正常操作状态下改变PLL设置:通过改变PMS的值来实现。

USB时钟控制:UCLK不起作用直到UPLL被设置。

FCLK、HCLK、PCLK:可以通过HDIVN、PDIVN、CLKDIVN来改变3种时钟的比率,推荐采用1:2:4的比率。在设置完PMS的值后,需要设置CLKDIVN寄存器,该寄存器设置的值在PLL锁定后生效,只需要1.5个HCLK即可完成比率的修改。

电源管理:4种模式及特点。

Power_Off模式:外部中断EINT[15:0]或RTC alarm中断可以从该模式wakeup.

进入PowerOff模式的流程:1。将GPIO端口设置为适当的状态; 2。……….

VDDi和VDDiarm的控制:在PowerOff模式,仅VDDi和VDDiarm通过PWREN管脚控制被关闭。如果PWREN为高,VDDi和VDDiarm被外部电源提供,如果为低则关闭。 尽管VDDi,VDDiarm,VDDi_MPLL,VDDi_UPLL可能被关闭,其他电源必须被提供。

EINT[15:0]启动信号: EINTn管脚必须被设置为中断管脚,在启动后,相应的EINTn管脚将不被用作启动,可以被用作外部中断请求。

电池故障信号(nBATT_FLT): 当cpu不在PowerOff模式时,nBATT_FLT将要引起低电平触发的中断。当在PowerOff模式时,nBATT_FLT信号将会禁止芯片从PowerOff模式启动,故所有的wakeup信号被屏蔽,此举用来保护系统电量低时不出现故障。

时钟和电源管理部分寄存器

LOCKTIME: UPLL、 MPLL 锁定时间的计数值。

MPLLCON UPLLCON: 这两个寄存器都有MDIV PDIV SDIV设置,对于输入12M的晶振,有相应的推荐值,产生200M和48M的频率。

CLKCON: 为各种外围接口提供时钟。

CLKSLOW: 是否打开2个PLL。

CLKDIVN: 设置CLK、 HCLK、 PCLK比率的寄存

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/orchisan/archive/2010/11/05/5989628.aspx

ARM中各始终之间的关系,FCLK HCLK PCLK的关系相关推荐

  1. 轻松玩转hive中各种join之间的关系以及使用

    hive编程是整个数据仓库操作的核心,而各种业务之间的join是hive的核心,所以熟练明白滴掌握hive中的各种join是数据仓库开发工程师必备的技能.    hive中的join只支持等值join ...

  2. 商品期货中各种品种之间的关系研究

    商品期货中各种品种之间的关系研究 作者:来源:时间:2018-12-01 14:01:14 在产品期货买卖中,许多种类之间会出现着不同程度的相关联系,有时分是由于同种原因导致的,比方说,社会全体需求增 ...

  3. 类与类之间的关系:依赖关系和关联关系及继承关系中self是什么? 类里面的特殊成员...

    类与类之间的关系 ⼤千世界, 万物之间皆有规则和规律. 我们的类和对象是对⼤千世界中的所有事物进行归 类. 那事物之间存在着相对应的关系. 类与类之间也同样如此. 在⾯向对象的世界中. 类与类 中存在 ...

  4. 一文讲解单片机、ARM、MCU、DSP、FPGA、嵌入式错综复杂的关系

    一文讲解单片机.ARM.MCU.DSP.FPGA.嵌入式错综复杂的关系 首先,"嵌入式"这是个概念,准确的定义没有,各个书上都有各自的定义.但是主要思想是一样的,就是相比较PC机这 ...

  5. mysql中关系怎么弄_mysql数据库关系操作

    ### mysql数据库 #### 知识要点: 1. 数据操作增.删.改 2. 外键约束要求 3. 一对多表关系 4. 一对一表关系 5. 多对多表关系 6. 外键约束的参照操作 ### 数据操作 # ...

  6. # JavaScript中的执行上下文和队列(栈)的关系?

    原文:What is the Execution Context & Stack in JavaScript? git地址:JavaScript中的执行上下文和队列(栈)的关系? 导读:以前总 ...

  7. 论文阅读课3-GraphRel: Modeling Text as Relational Graphs for(实体关系联合抽取,重叠关系,关系之间的关系,自动提取特征)

    文章目录 abstract 1.Introduction 2.相关工作 3.回顾GCN 4.方法 4.1第一阶段 4.1.1 Bi-LSTM 4.1.2 Bi_GCN 4.1.3 实体关系抽取 4.2 ...

  8. Java中常见RuntimeException与其他异常表及Exception逻辑关系详解

    Java中常见RuntimeException与其他异常表及Exception逻辑关系详解 前言 常见`RuntimeException` 其他错误类型 `Error`类 `Exception`类 E ...

  9. 多个 ng-app 中 Controllers Services 之间的通信

    原文发布在个人独立博客上,链接:http://pengisgood.github.io/2016/01/31/communication-between-multiple-angular-apps/ ...

最新文章

  1. 【光纤通信】关于RFA(喇曼光纤放大器)
  2. Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
  3. 学python是什么专业-小白学python是自学好,还是专业老师培训好?
  4. 关于GC.Collect在不同机器上表现不一致问题
  5. k8s Service之NodePort
  6. python正则表达式怎么用_python正则表达式的使用
  7. 如何查看oracle死鎖,怎么查看oracle是否有死鎖
  8. Jboss项目部署出现java.lang.UnsupportedClassVersionError 问题的解决方法
  9. codereviw得到的一些经验
  10. node.js读写文件操作
  11. 【毕设狗】【单片机毕业设计】基于单片机的空气质量检测-仿真设计
  12. 在Android Studio创建第一个Android项目
  13. 7个开源好用的管理系统,建议收藏加转载
  14. php 爬虫图片代码,python爬虫入门教程之糗百图片爬虫代码分享
  15. python聚类分析超市_Biopython聚类分析
  16. 日语入门选什么书好?
  17. python的多行注释
  18. 南水北调工程简介及线路图
  19. jQuery弹出层插件Dialog
  20. Unity各类数据库的基本操作(三)-- JSON

热门文章

  1. 如何配置一个Oracle服务
  2. Tranquility
  3. 短时程突触可塑性(short-term synaptic plasticity)
  4. ubuntu 安装过程所需软件
  5. 表达式求值Spring.Expressions
  6. burp过期了,换一个
  7. 划分用户故事(user-story)的原则
  8. 浅谈HTTPS以及Fiddler抓取HTTPS协议
  9. Bash : 索引数组
  10. Page.FindControl方法找不到指定控件的原因