HELPER2416学习笔记4——S3C2416时钟体系
参与HELPER2416开发板助学计划
首先,先说一下看数据手册发现的一点问题:下载了网友分享的S3C2416英文数据手册与君益兴光盘里的S3C2416数据手册,发现在时钟发生模块框图这部分有点不一样,S3C2416不带摄像头接口了吧。
网友分享的数据手册时钟发生模块框图:
光盘里的
所以数据手册还是不能随便下载啊通过时钟框图可以看出:S3C2416的主时钟晶振来自于外部晶振(XTI)或外部时钟(EXTCLK)。MPLL时钟源可以通过控制引脚OM[0]来选择,当OM[0]为0时,主时钟晶振来自于外部晶振;当OM[0]为1时,主时钟晶振来自于外部时钟。EPLL时钟源CLKSRC寄存器的两个位和控制引脚OM[0]共同选择。
S3C2416有两个锁相环:MPLL和EPLL。以下是MPLL和EPLL的框图:
从上图可以看出:MPLL用于产生:ARMCLK、HCLK、PCLK、DDRCLK、SSMCCLK时钟。ARMCLK用于ARM926EJS内核的时钟。HCLK用于AXI/AHB总线的外设PCLK用于APB总线的外设,具体的外设从上图可以很直观看到EPLL用于产生USBHOSTCLK的时钟。系统复位后EPLL是关闭的。接着分享时钟的启动流程:
从上图可以看出S3C2416时钟的启动流程:(1)系统上电几毫秒后,等到外部时钟或外部晶振输出稳定,此时SYSCLK=外部时钟或外部晶振频率,nRESET信号恢复高电平后,CPU开始执行指令。(2)在设置PLL的几个寄存器后,需要等待一段时间(成为Lock time),SYSCLK才输出稳定。在Lock time期间,SYSCLK停振,CPU停止工作。(可通过LOCKCON0和LOCKCON1分别设置MPLL和EPLL的Lock time)(3) Locktime之后,SYSCLK输出正常,CPU工作在新的稳定频率中。接着与大家分享与S3C2416时钟频率设置的方法:几个与时钟频率设置相关的寄存器:
LOCKCON0和LOCKCON1分别设置MPLL和EPLL的锁定时间,数据手册要求大于300微秒接着以MPLL产生的时钟举例吧(1)设置MPLLCON寄存器
从上图可知:MPLL输出的时钟频率主要通过设置MPLLCON寄存器的MDIV(最大值为1023)、PDIV(最大值为63)和SDIV(最大值为7),从原理图可知:晶振为12M,即Fin=12MHzMPLL的输出频率FOUT=(MDIV*12M)/(PDIV*2^SDIV)(FOUT应该在40~1600MHz)比如:MDIV设置为400,PDIV设置为3,SDIV设置为1则FOUT=(400*12)/(3*2)=800MHz(2)设置分频:设置CLKDIV0寄存器公式:ARMCLK=MPLLout/ARMCLK Ratio=MPLLout/(ARMDIV+1)HCLK= MPLLout/HCLKRatio= MPLLout/((PREDIV+1)*(HCLKDIV+1))PCLK=HCLK/PCLKDIV(3)设置Lock time设置LOCKCON0寄存器(4)设置CLKSRC第四位置1,使用MPLL output作为MSYSCLK输入论坛ID:fjjjnk1234提交时间:2014.07.26
本文来自论坛,点击查看完整帖子内容。