飞思卡尔内部时钟源模块的初始化:ICS在上电复位后进入FEl模式,且BDIV设置为默认的2分频。上电复位后,应对内部参考进行调整,建议使用Flash存储器地址0xFFAE备份调整数据FTRIM,地址0xFFAF则用于备份8bit的ICSTRM数据。当然从Flash中读取数据并覆盖零页寄存器的工作要在初始化阶段手动进行。下面介绍几个时钟初始化与切换的例子。
(1)初始化,并从内部时钟(FEl或FBI)切换到外部时钟(FEE或FBE)。
①设置寄存器ICSC2中的相关位,以允许外部时钟,如果打算采用FBE模式,对lY的设置也应该此时进行。
②等待一段时间,以使外部时钟稳定,一般振荡器的稳定时间可参考相关技术手册。如果上一步设置了EREFS,即选择了外部振荡器模式,当振荡器稳定后,寄存器ICSSC中的O$CINIT会置位。
③给ICSCl赋值,以选择时钟模式。如果选择FEE模式,设置合适的RDIV数值并清除IREFS控制位,此时通过设置IRCLKEN位,使内部参考时钟保持运行,这在内外部时钟需要切换的场合很有用,如果不用切换,则应该关闭内部参考时钟以节省电源。
④通过检测寄存器ICSSC中的CLKST位,以观察时钟切换是否完成。如果选择了FEE模式,总线时钟经过数毫秒(由器件参数tAcquire决定)后达到稳定,但如果是从FEl模式切换到FEE模式的情形,CLKST中的指示位不会改变。
(2)从外部时钟(FEE或FBE)模式切换到内部时钟(FEl或FBI)模式的初始化。
①从Flash中复制备份数据到TRIM和FTRIM中,该过程只在上电复位操作一次。
②设置寄存器ICSCl中的相应位以允许内部参考时钟(设置CLKS=01,选择FBl或者设置CLKS=00,RDIV=000,并且IREFS=1以选择FEl模式)。
③等待内部时钟稳定,需要的时间可参考相关电气参数。
④设置寄存器ICSC2以禁止外部时钟。也可以通过没置ERCLKEN位,使得外部时钟保持运行,这对于需要在内外部时钟切换的场合很有用,从节电的角度出发,如果采用内部参考时钟,外部时钟电路应该禁止。对于需要设置FBl模式的情形,此时也应该设置LP位,达到最大限度省电的目的。
⑤监测寄存器ICSSC中的CLKST位,以确保时钟切换完成。从模式FEE切换到FEl模式时,状态CLKST不会改变,如果选择了FEl模式,经过数毫秒(由器件参数tAcquire决定)后,总线时钟自然就稳定了。
更多精彩请您关注: