S3C2440时钟体系

    S3C2440在默认情况下,整个系统全靠一个12MHz的外部晶振提供频率来工作运行的,也就是说CPU、内存、UART、ADC等所有需要用到时钟频率的硬件都工作在12MHz下,但是通过查阅芯片手册我们知道CPU时钟最高可为400MHZ,那么怎么设置时钟让芯片工作在更高的时钟频率下呢?首先我们来看一下S3C2440的时钟框架。

                              

       由图可知S3C2440可以通过XTIpll、XTOpll引脚外接晶振(通常为12MHZ),也可以通过EXTCLK外接时钟,我们一般选择外接晶振。我们接入的时钟才12M,而CPU时钟却可以高达400M,锁相环(PLL)就是用来倍频时钟的,2440有MPLL和UPLL这两个时钟锁相环,MPLL倍频后的时钟主要用于CPU和各种外设,而UPLL倍频后的时钟主要用于USB。我们可以通过OM[3:2]来控制这两个锁相环的时钟源,因为通常我们是外接晶振,所以把OM3和OM2这两个引脚接到GND

     MPLL倍频后的时钟为FCLK,而FCLK经过分频又得到HCLK(挂载一些高速外设)和PCLK(挂载低速外设),我们可以把MDIV、PDIV、SDIV分别配置为92(0X5C),1,1,也就是把(92<<12)|(1<<4)|(1<<0)写到0X4C000004地址得到400M的FCLK。

时钟配置

 补充关于下图的知识,一般我们系统上电后电压不稳定,我们可通过外围电路实现把nRESET拉低一段时间后再拉高,此时系统开始工作,FCLK还只是外接的晶振的频率,OM[3:2]引脚电平锁存后,PLL开始工作,经过一段锁存时间后,FCLK变为稳定的倍频时钟用于系统工作,锁存时间可通过设置LOCKTIME来改变,默认是设置为0XFFFFFFFF,一般我们不对其进行修改。

 

    假如我们想通过400M的FCLK得到100M的HCLK和50M的PCLK,查阅下表我们知道可以往0X4C000014写入0x5。

       但是这里我们需要注意一点:如果HDIV设置为非0,CPU的总线模式要进行改变,默认情况下FCLK = HCLK,CPU工作在fast bus mode快速总线模式下,HDIV设置为非0后, FCLK与HCLK不再相等,要将CPU改为asynchronous bus mod异步总线模式,可以通过下面的嵌入汇编代码实现

        mrc p15,0,r0,c1,c0,0
	orr r0,r0,#0xc0000000   //R1_nF:OR:R1_iA
	mcr p15,0,r0,c1,c0,0

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值