mini2440 clock学习

本文详细介绍了S3C2440单片机的时钟系统,包括两个PLL的工作原理及其产生的时钟信号FCLK、HCLK、PCLK的作用。此外还讲解了时钟寄存器的配置方法以及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

S3C2440 clock工作原理

     对于任何一个单片机,要使用它首先就要弄明白他的时钟系统,MCU的时钟就像人的心脏,跳动的快慢,决定着系统的工作速度。S3C2440的datesheet上说,可以达到400M,但是也不是说,必须在400M的频率下工作,主时钟晶振来自于外部晶振(XTIPLL)或者是外部时钟(EXTCLK)。时钟生成器包含了一个振荡器(振荡放大器),其连接外部晶振,并且还有2个PLL,可以产生需要的高频。

     通过引脚OM[3:2]来决定时钟源是Crystal还是EXTCLK,不过我用的开发板将OM[3:2]固定接地了,都是用外部晶振。有一点值得注意,在对MPLLCON写入有效值之前,系统使用外部晶振或外部时钟源的时钟。即使用户不准备改变MPLLCON的值,也应当重新写一次。

 

S3C2440 时钟构成

     S3C2440具有2个PLL(Phase Locked Loop:用来产生高频的电路)。

     一个是MPLL, 用于产生FCLK, HCLK, PCLK三种频率, 这三种频率分别有不同的用途:

      1.FCLK是CPU提供的时钟信号,如果提到CPU的主频是400MHz,就是指的这个时钟信号。

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

      3.PCLK是为APB总线提供的时钟信号,Advanced Peripherals Bus,主要用于低速外设,比如WATCHDOG,IIS, I2C, SDI/MMC, GPIO,RTC ,UART,PWM,ADC and SPI等等。

      另外一个是UPLL,专门用于驱动USB host/Device。并且驱动USB host/Device的频率必须为48MHz。

      在系统复位之后,如果没有设定PLL,则采用外部晶振的频率作为FCLK,同时FCLK:HCLK:PCLK的比例关系为1:1:1。

 

时钟寄存器设置

      1.通过改变CLKDIVN可以改变FCLK,HCLK,PCLK的分频比。

      2.锁定时间计数寄存器LOCKTIME(0x4c000000):一般使用默认就可以。

      3.锁相环控制寄存器[MPLLCON(0x4c000004)&UPLLCON(0x4c000008)]:
               MPLL=(2*m*Fin)/(p*2^s) UPLL=(m*Fin)/(p*2^s)
               其中m=(MDIV+8),p=(PDIV+2),s=SDIV
               P,M范围:1<=P<=62,1<=M<=248
               注意:MDIV[19:12],PDIV[9:4],SDIV[1:0],当设置MPLL和UPLL值的时候,需要先设置UPLL再设置MPLL。

               例如:MPLLCON = (92<<12) | (1<<4) |(1);//FCLK=400M
                        这里MDIV=92,PDIV=1,SDIV=1,那么m=100,p=3,s=1,且Fin=12M,所以FCLK=400M
                        再设置CLKDIVN=0x05;//FCLK:HCLK:PCLK=1:4:8 
                        这里CLKDIVN(0x4c000014)用于决定三者的分配比例

      4.一般设置这两个就可以了。还有一个时钟控制寄存器CLKCON(0x4c00000c)向相应位写1使能相应时钟,不过一般默认为1.

补充:
AMBA总线
    先进的微控制器总线体系结构AMBA规范定义了三种总线:
         1.AHB(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿;
         2.ASB(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式;
         3.APB(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。

注意:
     1.CLKDIVN必须小心设置,不要超过HCLK和PCLK的允许范围.
      2.如果HDIVN不是0,CPU总线模式必须从快速总线模式转换到异步总线模式,通过使用下面的指令来达到.(S3C2440不支持同步总线模式)
            MMU_SetAsyncBusMode
            mrc p15, 0, r0, c1, c0, 0
            orr r0, r0, #R1_nF:OR:R1_iA
            mcr p15, 0, r0, c1, c0, 0
            如果HDIVN不是0, 并且CPU总线模式是快速总线模式,那么CPU将会在HCLK下工作.这种特性可以用来在不影响HCLK和PCLK的情况下改变CPU频率成原来的一半或更多.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值