本文介绍如何用KEAZ128评估版(FRDM-KEAZ128Q80)配置为40MHz core freqency/20MHz bus frequency。

1.了解器件时钟特性

参见NXP KEA128 DS(S9KEA128P80M48SF0.pdf ),可以知道这个MCU最高支持48MHz core frequency.

从KEA128 RM(KEA128RM (中文).pdf),可以知道KEA128各个时钟名称及频率等特性。这里需要注意,设置的配置内核时钟频率(40MHz)不能超过最高频率(48MHz)。由于外部时钟较内部时钟稳定、可靠,所以选择外部晶振作为总线时钟源。

不过,为何内核频率最高频率是48MHz?使用外部晶振8MHz最高支持多少频率呢?接着往下看。

3.观察时钟框图,选择一条配置时钟的路线

可以从RM时钟示意图,看到KEA各种类型时钟及连接关系,

假如以IRC=37.5KHZ作为FLL基准时钟,FLL倍频=1280,那么内核时钟=37.5KHZ * 1280 = 48000KHZ = 48MHZ。这解释了48MHZ最大频率是怎么计算得来的。

但是,想要的,不是使用内部时钟IRC,而是外部晶振(8MHz)作为时钟源,这样应该选择下面这条路线配置。

 4.计算时钟及所需配置的参数

从上面的路线图,知道要用8M生成40MHz,必须经过FLL倍频(*1280),而8M*1280  = 10240M >> 48M,明显不合理,所以8M不会是直接送到FLL输入,必须先经过系统振荡器模块(OSC)进行分频处理后,才能经过FLL倍频。

设OSC分频系数=n,那么内核时钟 = 8M / n * 1280 / bdiv / div1 , 其中n属于OSC模块,bdiv属于ICS模块,div1属于SIM模块。

不过,OSC是个什么模块?跟ICS是什么关系?

5. 分析内部时钟源模块(ICS)

查看RM ICS章节,发现可以选择如下线路配置ICSOUT(ICSOUTCLK),进而配置内核时钟。这里外部基准时钟输入后,会有一个RDIV决定的分频,再由FLL倍频,再由BDIV分频,得到ICSOUT。

1)先看看RDIV,是如何分频的。

看寄存器描述,可以得知,RDIV的分频,与OSC_CR[RANGE](频率范围)相关。而8M外部晶振作为OSC模块时钟时(8M > 4M),必然选择OSC_CR[RANGE] = 1,也就是说,RDIV所代表的分频系数只能是32,64,...1024.

不妨试试RDIV=0b000,也就是rdiv=32,那么内核时钟 = 8M / 32 * 1280 / bdiv / div1 = 320M/bdiv / div1 ,理论上,可以设置bdiv * div1 = 8,让内核时钟最终为40MHz,但是过程中,会导致传输的时钟为8M/32*1280=320M,这可能会导致器件无法正常各种。

配置时钟的时候,不仅要最终的结果满足小于最大时钟,而且过程中的时钟,也必须符合手册规范。这里,选择RDIV=0b011 => rdiv = 256, 内核时钟= 8M/256 *1280 / bdiv / div1 = 31.25kHz *1280 / bidv / div1 = 40M / bdiv / div1, 这里40M作为FLL输出,是符合40M~50M要求的。

FLL输出,要求<50M

2)FLL倍频

固定为*1280,也就是FLL输出ICSFLLCLK = 1280*FLL输入 ,FLL输入只能是OSCCLK(外部晶振或OSC),或者37.5 kHz IRC (内部IRC)

3)再看看BDIV是怎么分频的

直接通过设置BDIV的值,范围0~0b111来决定分频系数。

4)系统时钟(core clock/system clock)与总线时钟(bus clock/flash clock),FTM/PWT关系

由RM时钟分布章节可知,core clock = ICSOUTCLK / div1, bus clock = core clock / div2, FTM/PWT时钟  = core clock / div3

一般地建议是,div2 = 2, div3 = 2,也就是说,如果core clock = 40M, 那么其他的需要配置为bus clock = 20M, FTM/PWT时钟 = 20M

=> 建议值DIV1 = 0, DIV2 = 1, DIV3 = 1

KEAZ128 时钟配置的更多相关文章

  1. STM32F4_RCC系统时钟配置及描述

    Ⅰ.概述 对于系统时钟应该都知道它的作用,就是驱动整个芯片工作的心脏,如果没有了它,就等于人没有了心跳. 对于使用开发板学习的朋友来说,RCC系统时钟这一块知识估计没怎么去配置过,原因在于开发板提供的 ...

  2. STM32F0xx_RTC实时时钟配置详细过程

    Ⅰ.概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下. STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待 ...

  3. 四轴飞行器1.2.3 STM32F407时钟配置和升级标准库文件

    原创文章,欢迎转载,转载请注明出处 这个星期进度比较慢哈,只有周末和晚上下班回来才能做,事件不连续,琐碎的事情又比较多,挺烦的,有多琐碎呢?           1.本人有点小强迫症哈,虽然RTT将文 ...

  4. stm32时钟配置总结

    stm32时钟配置时钟源: 1,HSE(高速外部时钟)即常见的外接8M晶振方案: 2,HSI(高速内部时钟) 即8M内部振荡时钟方案: 3,LSE(低速外部时钟)即常见的32.768Khz晶振方案: ...

  5. STM32F4系统时钟配置及描述

    STM32F4系统时钟配置及描述 stm32f407时钟配置方法(感觉很好,分享一下) STM32F4_RCC系统时钟配置及描述 STM32F4时钟设置分析 stm32f4 - 时钟树分析配置

  6. centos 时钟配置

    centos 7 时钟配置: timedatectl 命令: [root@localhost ~]# timedatectl --help timedatectl [OPTIONS...] COMMA ...

  7. STM32的时钟配置随笔

    以前使用STM32都是使用库函数开发,最近心血来潮想要使用寄存器来试试手感,于是乎便在工作之余研究了一下STM32F4的时钟配置,在此将经历过程写下来作为锻炼,同时也供和我一样的新手参考,如有错误或者 ...

  8. STM32F4时钟配置库函数详解

    在STM32中,所有的应用都是基于时钟,所以时钟的配置就尤为重要了,而不能仅仅只知道使用默认时钟. STM32F4的时钟树如上图所示,HSE为外部接入的一个8M的时钟,然后再给PLL提供输入时钟,经过 ...

  9. S3C2440时钟配置

    参考: http://blog.csdn.net/mr_raptor/article/details/6555734 http://blog.csdn.net/mjx91282041/article/ ...

随机推荐

  1. 【代码审计】seacms 前台Getshell分析

    一.漏洞分析 漏洞触发点search.php 211-213行 跟进parseIf 函数 ./include/main.class.php 这里要注意 3118行的位置,可以看到未做任何处理的eval ...

  2. plsql 导出oracle数据库

    plsql 导出数据库有两个问题,一个是只导出结构,一个是导出表结构加数据这样的,首先人家让我导成sql语句 这不是简单,首先打开PLSQL 一.导出结构 1.然后tools->Export U ...

  3. MVVM架构的理解

    摘自维基百科 MVVM(Model–view–viewmodel)是一种软件架构模式. MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来,这是通过置标语言或GUI代码实 ...

  4. python的datetime库

    datetime 库 简介 获取时间 主要提供程序计时器 基本使用

  5. C 语言实例 - 判断闰年

    用户输入年份,判断该年份是否为闰年. #include <stdio.h> int main() { int year; printf("输入年份: "); scanf ...

  6. SQLSTATE[HY000]: General error: 1267 Illegal mix of collations (utf8_general_ci,IMPLICIT) and (gb2312_chinese_ci,COERCIBLE) for operation '='

    在操作MySQL数据库时,报“ error code [1267]; Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_gen ...

  7. jmeter实现服务器端后台接口性能测试

    实现目的 在进行服务器端后台接口性能测试时,需要连接到Linux服务器端,然后通过命令调用socket接口,这个过程就需要用到jmeter的SSH Command取样器实现了. 脚本实现 设置CSV ...

  8. sqli-libs(5-10关)

    Less_5   补充基础知识  1. left(a,b)左侧截取a的前b位,正确则返回1,错误则返回o Select left(database(),1)=’s’; 其中database()为sec ...

  9. 吴裕雄 python 机器学习——数据预处理字典学习模型

    from sklearn.decomposition import DictionaryLearning #数据预处理字典学习DictionaryLearning模型 def test_Diction ...

  10. netty(六) buffer 源码分析

    问题 : netty的 ByteBuff 和传统的ByteBuff的区别是什么? HeapByteBuf 和 DirectByteBuf 的区别 ? HeapByteBuf : 使用堆内存,缺点 ,s ...