S3C2443时钟管理

2022年01月13日 阅读数:2
这篇文章主要向大家介绍S3C2443时钟管理,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。


S3C2443时钟管理编程


S3C2443有两个PLL用来产生内部时钟,分别是MPLLEPLL,其中MPLL为包括ARMAHBAPB的整体功能模块产生内部时钟,而EPLL为好比是USBI2Scamera等这些具体的模块产生时钟,咱们能够经过软件编程来控制这个两个PLL的工做频率,能够关闭和开启内部时钟源来减小功耗。ide


1.MPLLEPLL时钟源的选择函数

 


从上图可知主要的时钟源来以外部晶振(XTI)或者外部时钟(EXTCLK),时钟产生器由MPLLEPLL组成,这两个PLL的做用是能够产生S3C2443所须要的高频时钟信号。由OM[0]来决定MPLL是选择XTI仍是EXTCLK来做为时钟源,而OM[0]是由硬件设计来肯定,下图是咱们项目OM[0]的设计部分:oop

 


在此设计中,OM[0]=1,根据下表post

 


可知MPLL的时钟源是由XTI提供,以下图所示:spa

    

由上面左图可知EXTCLK是经过0R的电阻直接接地的,因此EPLL只能选择XTI来做为EPLL的时钟源的,再根据下图:设计

 


咱们可知,CLKSRC[8]=0CLKSRC[7]=X,这里X能够是0或者1,这是须要在startup.s中作相应的设置的。ip



2.PLL(phase-locked-loop)内存

 


S3C2443PLL主要由PFD(phase difference detector,相位差检测器)charge pump(电荷泵)VCO(voltage controlled oscillator压控振荡器)off-chip loop filter(外部环路滤波器)ci


PFD:又称为相比比较器,它的做用是检测输入信号和输出信号的相位差,并将检测出的相位差信号转换为电压信号输出。


Charge pump电荷泵转变PFD的电压输出信号成必定比例的电压值发送给VCOoff-chip loop filter


Off-chip loop filterPFD输出的电压信号,进入charge pump后,可能会有高频杂波,经过Off-chip loop filter 能够输出VCO须要一个稳定的电压,在这里,Off-chip loop filter采用典型的RC低通滤波。


VCO:输出电压进入VCO,引发振荡器 频率的变化,压控振荡器的输出频率随其输入电压的改变而改变,当FrefFvco没有差异的时候,电压就会保持稳定下来,PFD就中止输出电压信号给charge pump,这样PLL系统时钟就稳定了。



3.改变PLL设置

S3C2443在日常的工做模式中,咱们能够经过来写PMS的值来改变PLL的输出频率,当咱们经过软件来写PMS的值时,PLL的锁存(lock time)被自动插入,在这个lock time期间,PLL是没有产生有效的时间给S3C2443的,在lock time事后,PLL才产生有效和稳定的clockSYSCLK,见下图。


  

PMS分别指的是PDIVMDIVSDIV,而PDIV是值PLL main divider valueMDIV是指PLL pre-divider valueSDIV是指PLL post-divider value,控制MPLLEPLL时钟的寄存器MPLLCONEPLLCON否有这几个值的定义。


4.系统时钟控制

由下图可知ARMCLKARM920T的内核时钟,也是S3C2443CPU时钟;HCLK是内部AHB bus和好比是内存控制器、中断控制器、LCD控制器等外围设备的基准时钟;PCLK是内部APB bus和好比是WDTIISI2C等外围设备的基准时钟;DDRCLKMDDR内存的data strobe时钟。


 

4.1 MPLL的时钟控制


 

从上图可知,MSysClkARMCLKHCLKPCLKDDRCLK这些时钟的基准时钟,而ARMCLKHCLKPCLKDDRCLK这些时钟到底有什么关系呢,经过对CLKDIVO控制寄存器的设置能够获得它们之间不一样的比值关系,见下表


  

4.2 EPLL的时钟控制

 


从上图可知EPLL的时钟ESYSCLK被用做不一样的外围控制器提供基准时钟,经过divider的分频能够获得不一样外围控制所须要的时钟,而这个分频值是经过对CLKDIV1寄存器的配置来实现的,也能够经过编程SCLKCON寄存器来关闭或者开启不一样外围控制器的时钟。


stopsleep模式,EPLL将被自动关闭,在退出stopsleep模式的时候,若是SCLKCON寄存器中相关位被使能的状况下,那么EPLL将为使能的外围控制器产生时钟。


5. 上电复位PLL时钟的启动流

 


在电压源提供所须要的电压给系统上电复位后,晶体振荡器在几毫秒以内起振,刚开始的时候MPLLEPLL都是中止的。当nRESET在晶振时钟稳定后释放(由低电平变为高电平)PLL开始是使用PLL的输入时钟Fin做为SYSCLK时钟的,系统上电复位后,必须经过软件来配置MPLLCONEPLLCON使用每一个PLL,也即经过写MPLLCONEPLLCONPDIVMDIVSDIV值,接着会自动插入PLLlock timelock time以后,PLL的输出时钟Fout就是做为SYSCLK时钟来使用了,这些动做通常是在startup.s函数中初始化的,见下图