嵌入式之时钟体系结构

1. 概述

    如下图1所示,ARM的时钟系统包括4部分,分为晶体振荡器、唤醒定时器、锁相环(PLL)和VPB分频器。其中晶体振荡器为系统提供基本的时钟信号(频率为Fosc)。当复位或者处理器从掉电模式唤醒时,“唤醒定时器”要对输入的时钟信号做计数延时,使芯片内部的部件有时间进行初始化。然后Fosc被PLL提高到一个符合用户需要的频率Fcclk,Fcclk用于CPU内核。因为CPU内核通常比外设部件的工作速度要快,用户可以通过设置VPB分频器,把Fcclk信号降低到一个合适的值Fpclk,该信号用于外设部件。


嵌入式之时钟体系结构_第1张图片


2. s3c2440时钟体系

    s3c2440 的时钟控制逻辑既可以外接晶振,然后通过内部电路产生时钟源,也可以直接使用外部提供的时钟源,它们通过引脚的设置来选择。时钟控制逻辑给整个芯片提供3种时钟:FCLK用于CPU核,HCLK用于AHB总线上的设备,比如CPU核、存储控制器、中断控制器、LCD控制器、DMA和USB主机模块等,PCLK用于APB总线上的设备,比如watchdog、IIS、I2C、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI

    AHB(Advanced High performance Bus)总线主要用于高性能模块(CPU、DMA、DSP)之间的连接,APB(Advanced Peripheral Bus)总线主要用于低带宽的周边外设之间的连接,如UART、I2C。

    s3c2440的cpu核心工作电压为1.3V时,主频可以达到400Mhz,为了降低电磁干扰、降低板间布线的要求,s3c2440外接的晶振频率通常很低,本开发板为12Mhz,需要通过时钟控制逻辑的PLL提高系统时钟。

    s3c2440有两个PLL:MPLL和UPLL。UPLL专用于USB设备,MPLL专用于设置FCLK,HCLK,PCLK。

    上电时,PLL没有启动,FCLK等于外部输入时钟,为Fin,如果要提高系统时钟,需要软件来启动PLL。下面来介绍PLL的设置过程

 嵌入式之时钟体系结构_第2张图片

①上电几毫秒后,晶振(OSC)输出稳定,FCLK=Fin(晶振频率),nRESET信号恢复高电平后,CPU开始执行指令

②可以程序开头启动MPLL,设置MPLL的几个寄存器后,需要等待一段时间,MPLL输出才稳定,这段时间(Locktime),FCLK停,CPU停止工作。lock time长短由寄存器LOCKTIME设定

③Lock Time之后,MPLL输出稳定,CPU工作在的FCLK下。

    FCLK、HCLK、和PCLK比例是可以改变的,设置它们三者的比例,启动MPLL只需要设置3个寄存器。

        LOCKTIME寄存器:用于设置Lock Time的长度。

        MPLLCON寄存器:用于设置FCLK与Fin的倍数

        CLKDIVN寄存器: 用于设置FCLK、HCLK、PCLK三者的比例


你可能感兴趣的:(Linux)