本文档主要介绍了在基于K60微控制器平台上的时钟设置过程,具体涉及到了锁相环(PLL)的初始化和配置。"hw_pll.c" 文件的核心部分是 pllinit225M 函数,用于将系统时钟设置为 225 MHz。以下是详细的步骤解析:
1. **启用IO端口时钟**:
首先,函数设置了SIM_SCGC5寄存器,以激活PORTA、PORTB、PORTC、PORTD和PORTE的时钟,这确保了所需的硬件资源可以被正确驱动。
2. **频率扩展模式转换**:
MCG_C2寄存器被用来控制时钟源的选择和模式。原始状态可能是FEI模式,通过将MCG_C2设置为MCG_C2_RANGE(2) | MCG_C2_HGO_MASK | MCG_C2_EREFS_MASK,功能从FEI(Fast External Input)模式切换到FBE(Fast Baud Rate External)模式,以便使用外部时钟源。
3. **晶振初始化和释放锁定状态**:
在进入FBE模式之前,SIM_SCGC4寄存器中的LLWU_MASK被设置,允许外部晶振和GPIO接口的初始化。LLWU_CS寄存器也被操作以清除IREFS信号,从而启动外部晶振。
4. **外部晶振选择与分频器配置**:
MCG_C1寄存器用于设置分频器(FRDIV)和时钟来源(CLKS)。选择外部晶振作为参考,DivideFactor设置为256,意味着外部晶振频率被除以256来得到系统的时钟频率。
5. **等待时钟稳定和锁相环初始化**:
使用循环结构检查MCG_S寄存器的标志位,确认晶振稳定(MCG_S_OSCINIT_MASK)和锁相环初始化完成(MCG_S_IREFST_MASK)。
6. **时钟源切换和频率调整**:
通过设置MCG_C5寄存器的PRDIV(Predivider),将外部参考时钟进一步分频,选择一个特定的频率值,这里是20分频(2.5 MHz),以便达到最终目标225 MHz。
7. **复位MCG_C6寄存器**:
为了确保PLL和其他时钟控制器在使用前被正确初始化,MCG_C6需要保持在复位状态,通过相应的设置禁止LOLIE(Low Latency Oscillator Interface Enable)、PLL和时钟控制器的其他功能。
该文档详细描述了如何在K60微控制器上通过锁相环技术实现对225 MHz时钟源的配置和管理,包括外部时钟源的选择、分频器的设定以及相关寄存器的操作,这对于理解和调整微控制器的时钟系统具有重要意义。