【嵌入式】S3C2440的时钟系统

一.时钟系统图:

下图摘自 S3C2440官方datasheet

【嵌入式】S3C2440的时钟系统_第1张图片关于时钟的寄存器:
【嵌入式】S3C2440的时钟系统_第2张图片

1. OM[3:2]:选择主时钟源的方式

【嵌入式】S3C2440的时钟系统_第3张图片
【嵌入式】S3C2440的时钟系统_第4张图片

2. PLL锁相环

【嵌入式】S3C2440的时钟系统_第5张图片

(锁相环部分)
  • VCO:Voltage Controlled Oscillator 电压控制振荡器
    提供时钟频率给DC 电压。
  • PFD:Phase Frequency Detector 相位频率监测器
    监测Fref和Fvco的相位差,当出现差异产生控制信号。
  • PUMP: Charge Pump
    转换PFD的控制信号形成一个均衡信号反馈给外部滤波器

(时钟分频部分)
  • 分频器P对Fin进行分频
  • 分频器M对VCO进行分频,输出给PFD
  • 分频器S对也是对VCO进行分配,但是输出给MPLL,UPLL(未来一些外设使用的)

MPLL的输出频率取决于输入Fin的频率相关的:

M p l l = ( 2 ∗ m ∗ F i n ) / ( p ∗ 2 S ) Mpll = (2*m * Fin) / (p * 2^S) Mpll=(2mFin)/(p2S)
m = M m = M m=M (the value for divider M) + 8 + 8 +8
p = P p = P p=P (the value for divider P) + 2 + 2 +2

(UPLL与MPLL 相似)

3.什么是FCLK,HCLK,PCLK

HCLK 和 PCLK分频而来,因此,FCLK肯定是最快的
HCLK有H(HIGH)那顾名思义其是第二快的,so,老三就是PCLK。
辣么,Mpll和FCLK有啥关系呢?
本文的第一张图很明显看到:Mpll经过 CLKCNTL 产生个FCLK。
也就是说MPLL产生的时钟信号先是变成FCLK再拿去给SOC各种模块使用的呗。
然后,我们看看这三种信号到底给谁用的吧:

FCLK is used by ARM920T.
HCLK is used for AHB bus, which is used by the ARM920T, the memory controller, the interrupt controller, the LCDcontroller, the DMA and USB host block.
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.

  • FCLK:是给CPU的

  • HCLK:是给AHB总线的,CPU也用。还有内存控制器,中断控制器,LCD控制器 ,DMA,USB-host
    (这里说明一下 CPU到底使用FCLK还是HCLK)
    当HDIVN不为0,CPU默认是使用HCLK,此时要用FCLK必须将fast bus设置为asynchronous bus模式

    mrc p15,0,r0,c1,c0,0
    orr r0,r0,#R1_nF:OR:R1_iA
    mcr p15,0,r0,c1,c0,0
    
  • PCLK:是给APB总线,这里就是给外设的啦,看门狗子,IIS,IIC,PWM,MMC,ADC,UART,RTC,SPI

而且HCLK和PCLK的分频是受HDIVN和PDIVN控制的
【嵌入式】S3C2440的时钟系统_第6张图片

你可能感兴趣的:(#,ARM_linux,ARM,嵌入式,S3C2440,时钟)