打印
[Kinetis]

关于KEA128系列使用内部时钟的问题

[复制链接]
2301|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梅海伟|  楼主 | 2017-1-26 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//CLK_Init - Initialize Core Clock to 40MHz, Bus Clock to 20MHz
void Clk_Init(void)
{
        ICS_C1|=ICS_C1_IRCLKEN_MASK;                        /* Enable the internal reference clock*/
        ICS_C3= 0x90;                                                        /* Reference clock frequency = 31.25 kHz*/
        while(!(ICS_S & ICS_S_LOCK_MASK));                /* Wait for PLL, running at 40 MHz (1280 * 31.25 kHz) */
        ICS_C2|=ICS_C2_BDIV(1);                                        /* BDIV=2, Bus clock = 20 MHz*/
        ICS_S |= ICS_S_LOLS_MASK;                                /* Clear Loss of lock sticky bit */
}

对ICS_C3 = 0x90表示不理解为什么要这么做。

手册上对于ICS_C3寄存器的描述为:
慢速内部基准时钟调整设置
通过控制内部基准时钟周期来控制慢速内部基准时钟频率。这些位采用二进制加权。换言之,位 1 的调整量
是位 0 的两倍。提高 SCTRIM 的二进制值会加长周期,降低该值会缩短周期。 还有一个精密调整位
ICS_C4[SCFTRIM]。
除了 Debug 模式外,ICS_C3 在复位后会自动载入工厂校准值。这个值是在芯片生产出厂前校准的,以使内
部时钟满足 fint_ft 数据手册的描述。用户可以在 fint_t 范围内使用自己的校正值,这个值需要被写入 Flash 的
保留空间 0x0000_03FF 中,并且在初始化代码中复制到 ICS_C3 寄存器。

20.4.5 内部参考时钟
ICS_C1[IRCLKEN]置位时,内部基准时钟信号显示为 ICSIRCLK,它可以用作附加
时钟源。要重新设定 ICSIRCLK 频率,请将新值写入 ICS_C3[SCTRIM]位来调整内
部基准时钟的周期:
• 如果写入更大的值,将减慢 ICSIRCLK 频率。
• 将较小的值写入 ICS_C3 寄存器会提高 ICSIRCLK 频率。
如果 ICS 处于 FLL 内部使用(FEI)模式、 FLL 内部旁通(FBI)模式或 FLL 内部旁通低
功耗(FBILP)模式,则 TRIM 位会影响 ICSOUT 频率。
在调整 ICSIRCLK 之前,写入较低的总线分频(ICS_C2[BDIV])系数可能导致
ICSOUT频率超过最大芯片级频率,违反芯片级时钟的时序规范。
如果 ICS_C1[IREFSTEN]置位且 1b 写入 ICS_C1[IRCLKEN],那么内部基准时钟在
Stop 模式下继续运行,以便能在退出 Stop 模式时快速恢复。
所有 MCU 器件都在保留的存储器区间写入了出厂校正值。该值在任何的复位初始
化期间被复制到 ICS_C3 寄存器和 ICS_C4[SCFTRIM]。为了提高精度,在应用中可
以重新校准内部振荡器并相应地设置 ICS_C4[SCFTRIM]。

同时,我也在坛里翻到了以前@andyliu的帖子以及阅读过帖子回复中的两一个链接,但是依然没有理解这个寄存器的具体意思

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝