时钟,在一个完整的系统运行过程中的重要性不言而喻。有人曾把它比作是心脏起搏器,感觉十分贴切。因为其关乎到指令运行的周期时间。对于2416这样较为高级的芯片来说,时钟方面还是比较给力的。从芯片手册可以轻易了解到各时钟的来龙去脉:
通过OM[0]管脚和CLKSRC寄存器可以对时钟来源进行选择:外部时钟XTI(原理图中可以轻易发现其为12MHZ晶振)或内部时钟EXTCLK,再经由两个锁相环PLL进行频率调整,达到更高频率以便于使用。更具体的外设时钟来源可以参考下边图片:
对于各时钟值,这张表格给出了很好的说明:
为保证核心板正常工作,需要对ARMCLK进行配置;为保证接下来的UART能使用,我们选择开启PCLK,至于其他相关外设,需要用到时再开启。
与时钟相关的寄存器有:LOCK(计数稳定时间)、CON0(分频寄存器)、DIV(分频)、CON(Fin的倍频)、SRC(控制时钟总的来源)
为保证正确的频率,强烈建议时钟设置顺序为:LOCK、DIV、CON、SRC
1)LOCK:建议写入的锁时时间大于300us,这里选择默认即可
2)DIV:不同倍数以便于进行分频,关于这点,官方给出了参考值:
于是对CLKDIV寄存器进行如下设置:
3)SRC:设置CLKSRC寄存器选择总的时钟来源,其他选择默认即可
MPLLCON:设置MPLL的时钟来源
计算公式如下:
输入为12MHZ,目标频率为800MHZ,选择m为0x190,p为3,s为1
EPLLCON:选择默认值即可
由于开发板没有引出管脚便于我们用示波器进行观察,故时钟配置成功与否通过下一个串口实验来判定