ARM芯片时钟体系 | 您所在的位置:网站首页 › fclk频率是什么 › ARM芯片时钟体系 |
目标: 1、了解S3C2440的时钟体系结构 2、掌握通过设置MPLL改变系统时钟的方法
一、S3C2440的时钟体系结构 什么是时钟体系? ARM的时钟系统包括4部分,分为晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器,是一种电路。 时钟系统有什么作用? 时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作。 外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。 时钟体系是怎么运作的? 当系统复位或者处理器从掉电模式唤醒时,“唤醒定时器”要对输入的时钟信号做计数延时,使芯片内部的部件有时间进行初始化。 然后Fosc(时钟源)被PLL(锁相环/倍频器)提高到一个符合用户需要的频率Fcclk,Fcclk用于CPU内核。因为CPU内核通常比外设部件的工作速度要快, 用户可以通过设置VPB分频器,把Fcclk信号降低到一个合适的值Fpclk,该信号用于外设部件。如下图:
再看看2440的结构图 由上图,可知时钟控制逻辑给整个芯片提供了3种时钟: FCLK:帧时钟,用于CPU核;(如何选择CPU核的工作时钟是FCLK还是HCLK?) HCLK:总线时钟,用于AHB高速总线上的设备,比如CPU核,存储器控制器、中断控制器、LCD控制器等 PCLK:外设时钟,用于APB总线上的设备,如看门狗,IIS,IIC,PWM,UART,GPIO,SPI,MMC等。 对于2440 外接的晶振仅12MHz, 但CPU核的主频可以高达400MHz,总线时钟可以达136MHz, 而外设时钟可达68MHz,那如何设置才能使不同的时钟输出不同的时钟频率呢? 通过一些硬件单元来处理,PLL--Phase Locked Loop -- 锁相环, 2440有两个锁相环,MPLL -- Main PLL ,UPLL -- USB PLL,两者设置方法相同,以MPLL为例。 从芯片手册上可以看到,时钟模块发生框图:
在该图的左上角,晶振和一个外部时钟接在一个选择器上,这个选择器通过OM[3:2]的值来决定选择哪个时钟源。然后生成的MPLL(Main PLL)和UPLL(USB PLL),MPLL直接提供给FCLK,通过HDIVN分频给HCLK,通过PDIVN分频给PCLK,再传给下面的各个设备:
那如何设置PLL?
二、PLL的设置过程 1)上电几毫秒后,晶振(SOC)输出稳定,FCLK 等于晶振频率,nRESET信号在电压稳定后恢复高电平,CPU开始执行指令。 2)在nRESET信号的上升沿,引脚OM[2:3]的电平被内部电路捕获后,就可以操作PLL。在程序开头启动MPLL,设置MPLL相关寄存器后,需要等待一段时间(Lock Time),MPLL输出才稳定。在Lock Time内,FCLK停振,CPU停止工作。Lock Time由寄存器LOCKTIME设定。 3)Lock Time之后,MPLL输出正常,CPU工作在新的FCLK下。
三、设置寄存器,调整FCLK: HCLK : PCLK ,使CPU工作于400MHz的频率下 调整FCLK: HCLK : PCLK = 400MHz : 100MHz : 50MHz —— MPLLCON --FCLK = 400MHz —— CLKDIVN -- HCLK = FCLK / 4 PCLK = FCLK / 8 (LOCKTIME寄存器使用默认值) 1)时钟分频控制寄存器 --- CLKDIVN
不涉及UCLK,[3]取默认值。HCLK 取FCLK/4,[2:1] = 10,且CAMDIVN[9]默认为0。 PCLK = HCLK / 2 = FCLK / 8,故[0] =1 故:CLKDIVN = 0x5; 2)设置MPLLCON,主分频控制寄存器 先设置MPLLCON,使FCLK=400MHz, 直接查看芯片手册上的PLL值选择表
12MHz的晶振,输出频率为400MHz时的参数:MDIV=92(0x5c),PDIV =1, SDIV=1
验证一下: m = 92+8=100 , p = 1+2=3 , s = 1 MPLL = (2 * 100 * 12MHz) / (3 * 2^1) = 400MHz
MPLLCON = (92 |
CopyRight 2018-2019 实验室设备网 版权所有 |