TQ2440的FCLK,HCLK,PCLK,UCLK时钟频率设置

发布者:GoldenDream最新更新时间:2016-01-19 来源: eefocus关键字:TQ2440  FCLK  HCLK  PCLK  UCLK  时钟频率 手机看文章 扫描二维码
随时随地手机看文章
    S3C2440有两个PLL(phase locked loop)一个是MPLL,一个是UPLL。MPLL用于CPU及其他外围器件,UPLL用于USB。用于产生FCLK, HCLK, PCLK三种频率,这三种频率分别有不同的用途:


FCLK是CPU提供的时钟信号。
HCLK是为AHB总线提供的时钟信号, Advanced High-performance Bus,主要用于高速外设,比如内存控制器,中断控制器,LCD控制器, DMA 等。

PCLK是提供给用于外设如WDT,IIS,I2C,PWM,MMC/SD,ADC,UART,GPIO,RTC,SPI的APB总线的时钟。

    从S3C2440的DATASHEET里可以看到,S3C2440最大支持400MHz的主频,但是这并不意味着一定工作在400MHz下面,可以通过设定MPLL, UPLL寄存器来设定CPU的工作频率。
    尽管在CPU上电(power-on)或者复位(reset)后,MPLL就开始进入工作状态,但是此时MPLL的输(Mpll)并不作为系统的时钟,而是直接使用外部信号EXTCLK或者外部时钟晶振作为系统时钟。直到软件初始化MPLL寄存器(rMPLLCON),写入了有效的值过后,系统才开始使用MPLL的输出(Mpll)作为系统时钟。虽然很多时候我们不必重新设置MPLL寄存器(rMPLLCON)新的值,但是为了使系统使用其输出作为时钟信号,在软件初始化系统部分,还是要向rMPLLCON写入一个有效的旧的值。这样子才使系统处于正确的工作状态。

 

TQ2440程序中FCLK=400MHz,MDIV=92=0x5C、PDIV=1、SDIV=1

 

#define FIN  (12000000)

 

rMPLLCON =(92<<12)|(1<<4)|1;  //设置FCLK为400M

ChangeClockDivider(14,12);      //这个函数在2440lib.c中定义的,设置分频比为1:4:8

CalcBusClk();                 //计算总线频率

 

下面是被调用的两个函数

//************************[ HCLK, PCLK ]***************************
void ChangeClockDivider(int hdivn_val,int pdivn_val)//两个参数分别为FCLK:HCLK,HCLK:PCLK的比值
{
 int hdivn=2, pdivn=0;
 
 // hdivn_val (FCLK:HCLK)ratio hdivn
 // 11           1:1       (0)
 // 12           1:2       (1)
 // 13           1:3       (3)
 // 14           1:4       (2)
 // pdivn_val (HCLK:PCLK)ratio pdivn
 // 11           1:1       (0)
 // 12           1:2       (1)
 switch(hdivn_val) {
  case 11: hdivn=0; break;
  case 12: hdivn=1; break;
  case 13:
  case 16: hdivn=3; break;
  case 14:
  case 18: hdivn=2; break;
 }
 
 switch(pdivn_val) {
  case 11: pdivn=0; break;
  case 12: pdivn=1; break;
 }
 
 //Uart_Printf("Clock division change [hdiv:%x, pdiv:%x] ", hdivn, pdivn);
 rCLKDIVN = (hdivn<<1) | pdivn;

 switch(hdivn_val) {
  case 16:  // when 1, HCLK=FCLK/8.
   rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<8);
  break;
  case 18:  // when 1, HCLK=FCLK/6.
   rCAMDIVN = (rCAMDIVN & ~(3<<8)) | (1<<9);
  break;
 }
 
 if(hdivn!=0)
  MMU_SetAsyncBusMode();
 else
  MMU_SetFastBusMode();
}

void CalcBusClk(void)    //计算总线频率
{
 U32 val,UPLL;
 U8 m, p, s;
 val = rMPLLCON;
 m = (val >> 12) & 0xff;
 p = (val >> 4) & 0x3f;
 s = val & 3;

 FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<  
 val = rCLKDIVN;
 m = (val >> 1) & 3;
 p = val & 1; 
 val = rCAMDIVN;
 s = val >> 8;
 
 switch (m)
 {
  case 0:
   HCLK = FCLK;
   break;
  case 1:
   HCLK = FCLK >> 1;
   break;
  case 2:
   if(s & 2)
    HCLK = FCLK >> 3;
   else
    HCLK = FCLK >> 2;
   break;
  case 3:
   if(s & 1)
    HCLK = FCLK / 6;
   else
    HCLK = FCLK / 3;
   break;
 }
 
 if(p)
  PCLK = HCLK >> 1;
 else
  PCLK = HCLK;
  

//rUPLLCON内存的值为0x00038022,求出UPLL的值为48MHz;时钟分频控制寄存器CLKDIVN[3]=0时UCLK=UPLL
 val = rUPLLCON;
 m = (val >> 12) & 0xff;
 p = (val >> 4) & 0x3f;
 s = val & 3;
 UPLL = ((m+8)*FIN)/((p+2)*(1<  UCLK = (rCLKDIVN&8)?(UPLL>>1):UPLL;
}

关键字:TQ2440  FCLK  HCLK  PCLK  UCLK  时钟频率 引用地址:TQ2440的FCLK,HCLK,PCLK,UCLK时钟频率设置

上一篇:ARM9(S3C2440)的IO口--LED流水灯
下一篇:arm-linux-ld命令

推荐阅读最新更新时间:2024-03-16 14:44

单片机stm32时钟频率和配置方法详解
  单片机stm32时钟频率   STM32F103内部8M的内部震荡,经过倍频后最高可以达到72M。目前TI的M3系列芯片最高频率可以达到80M。   在stm32固件库3.0中对时钟频率的选择进行了大大的简化,原先的一大堆操作都在后台进行。系统给出的函数为SystemInit()。但在调用前还需要进行一些宏定义的设置,具体的设置在system_stm32f10x.c文件中。   文件开头就有一个这样的定义:   //#define SYSCLK_FREQ_HSE HSE_Value   //#define SYSCLK_FREQ_20MHz 20000000   //#define SYSCLK_FREQ_36MHz
[单片机]
单片机stm32<font color='red'>时钟</font><font color='red'>频率</font>和配置方法详解
tq2440 按键中断 去抖
  #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #include   #define D
[单片机]
TQ2440开发板 Linux第一个驱动--点灯
我用的是TQ2440开发板,这个程序是参考韦东山的. 4盏LED灯 以下是驱动程序 #include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/init.h #include linux/delay.h #include asm/uaccess.h #include asm/irq.h #include asm/io.h #include asm/arch/regs-gpio.h #include asm/hardware.h static struct class *firstdrv_class; st
[单片机]
TQ2440平台上LCD驱动的移植
参考: http://liu1227787871.blog.163.com/blog/static/205363197201242393031250/ http://blog.csdn.net/cumtgao/article/details/8649006 http://www.360doc.com/content/12/0424/17/9159905_206213245.shtml http://blog.csdn.net/yj4231/article/details/7878762 硬件平台:TQ2440 LCD型号:WXCAT43,分辨率480*270 U-boot版本:u-boot-2015.04 内核版本:L
[单片机]
<font color='red'>TQ2440</font>平台上LCD驱动的移植
基于C8051F系列单片机的低功耗设计
引言   在控制终端系统设计中,当系统要求整体功耗偏低时,C8051系列单片机是一个最佳的选择,它们拥有灵活的时钟硬件,使系统能够方便地在高效运作模式与低功耗模式间进行转换,智能的电源管理模式能够在正常工作及待机状态自由切换,从而降低整个系统的能量损耗,当工作频率低于10kHz时,时钟丢失检测器(MCD)能够引发系统产生复位,确保系统工作的安全可靠。 1 C8051F各部分组件的功耗   当一个系统对功耗要求严格时,可以在硬件电路建立前首先粗略计算一下整个系统所需的功耗,由于C8051F系列单片机为数模混合SOC系统,能够实现整个设计的大部分功能,因此整个设计系统的功耗将主要集中在C8015F系列单片机的能量消耗上。   整
[单片机]
U-boot1.1.6移植到TQ2440开发板(上)
U-Boot主要目录结构 - board 目标板相关文件,主要包含SDRAM、FLASH驱动; - common 独立于处理器体系结构的通用代码,如内存大小探测与故障检测; - cpu 与处理器相关的文件。如mpc8xx子目录下含串口、网口、LCD驱动及中断初始化等文件; - driver 通用设备驱动,如CFI FLASH驱动(目前对INTEL FLASH支持较好) - doc U-Boot的说明文档; - examples可在U-Boot下运行的示例程序;如hello_world.c,timer.c; - include U-Boot头文件;尤其configs子目录下与目标板相关的配置头文件是移植过程中经常要修改的文
[单片机]
linux +qt4.7+opencv2.2移植到tq2440开发板
以下操作在Fedora下使用超级用户进行 我已经安装了交叉编译器arm-linux-gcc 4.3.3和qt4.5的x86和arm版本 在目录/opt/EmbedSky下。 修改配置文件/etc/profile 添加 pathmunge /opt/EmbedSky/4.3.3/bin 安装CMake OpenCV 2.1的版本,必须使用CMake创建Makefile。我使用的CMake版本是2.6-Linux-i386的,是fedora通过软件添加和载卸功能添加的(这个cmake要重新安装,而且要添加bin进去路径) 编译OpenCV: 1、解压OpenCV 2.1到/opt/EmbedSky/OpenCV-2.1.0目录下
[单片机]
关于arm时钟频率的设置及编程
OSC是用无源晶振,EXT是用有源晶振或外部时钟2440的12M是Oscillator 是有源的呀! 2440的12M是Oscillator Crystal 无源晶体 Oscillator 有源晶体(里面有有源器件) 无源晶振内只有一片按一定轴向切割的石英晶体薄片,供接入运放(或微处理器的XTAL端)以形成振荡.有源晶振内带运放,工作在最佳状态,电源后,可直接输出一定频率的等幅正弦波,一般至少有4引脚,体积稍大. 准备先不跑系统,把S3C2440和周边硬件熟悉一下再说。 对于任何一个单片机,要使用它首先就要弄明白他的时钟系统,MCU的时钟就像人的心脏
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved