KEAZ128 时钟配置
本文介绍如何用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 时钟配置的更多相关文章
- STM32F4_RCC系统时钟配置及描述
Ⅰ.概述 对于系统时钟应该都知道它的作用,就是驱动整个芯片工作的心脏,如果没有了它,就等于人没有了心跳. 对于使用开发板学习的朋友来说,RCC系统时钟这一块知识估计没怎么去配置过,原因在于开发板提供的 ...
- STM32F0xx_RTC实时时钟配置详细过程
Ⅰ.概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下. STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待 ...
- 四轴飞行器1.2.3 STM32F407时钟配置和升级标准库文件
原创文章,欢迎转载,转载请注明出处 这个星期进度比较慢哈,只有周末和晚上下班回来才能做,事件不连续,琐碎的事情又比较多,挺烦的,有多琐碎呢? 1.本人有点小强迫症哈,虽然RTT将文 ...
- stm32时钟配置总结
stm32时钟配置时钟源: 1,HSE(高速外部时钟)即常见的外接8M晶振方案: 2,HSI(高速内部时钟) 即8M内部振荡时钟方案: 3,LSE(低速外部时钟)即常见的32.768Khz晶振方案: ...
- STM32F4系统时钟配置及描述
STM32F4系统时钟配置及描述 stm32f407时钟配置方法(感觉很好,分享一下) STM32F4_RCC系统时钟配置及描述 STM32F4时钟设置分析 stm32f4 - 时钟树分析配置
- centos 时钟配置
centos 7 时钟配置: timedatectl 命令: [root@localhost ~]# timedatectl --help timedatectl [OPTIONS...] COMMA ...
- STM32的时钟配置随笔
以前使用STM32都是使用库函数开发,最近心血来潮想要使用寄存器来试试手感,于是乎便在工作之余研究了一下STM32F4的时钟配置,在此将经历过程写下来作为锻炼,同时也供和我一样的新手参考,如有错误或者 ...
- STM32F4时钟配置库函数详解
在STM32中,所有的应用都是基于时钟,所以时钟的配置就尤为重要了,而不能仅仅只知道使用默认时钟. STM32F4的时钟树如上图所示,HSE为外部接入的一个8M的时钟,然后再给PLL提供输入时钟,经过 ...
- S3C2440时钟配置
参考: http://blog.csdn.net/mr_raptor/article/details/6555734 http://blog.csdn.net/mjx91282041/article/ ...
随机推荐
- 【代码审计】seacms 前台Getshell分析
一.漏洞分析 漏洞触发点search.php 211-213行 跟进parseIf 函数 ./include/main.class.php 这里要注意 3118行的位置,可以看到未做任何处理的eval ...
- plsql 导出oracle数据库
plsql 导出数据库有两个问题,一个是只导出结构,一个是导出表结构加数据这样的,首先人家让我导成sql语句 这不是简单,首先打开PLSQL 一.导出结构 1.然后tools->Export U ...
- MVVM架构的理解
摘自维基百科 MVVM(Model–view–viewmodel)是一种软件架构模式. MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来,这是通过置标语言或GUI代码实 ...
- python的datetime库
datetime 库 简介 获取时间 主要提供程序计时器 基本使用
- C 语言实例 - 判断闰年
用户输入年份,判断该年份是否为闰年. #include <stdio.h> int main() { int year; printf("输入年份: "); scanf ...
- 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 ...
- jmeter实现服务器端后台接口性能测试
实现目的 在进行服务器端后台接口性能测试时,需要连接到Linux服务器端,然后通过命令调用socket接口,这个过程就需要用到jmeter的SSH Command取样器实现了. 脚本实现 设置CSV ...
- sqli-libs(5-10关)
Less_5 补充基础知识 1. left(a,b)左侧截取a的前b位,正确则返回1,错误则返回o Select left(database(),1)=’s’; 其中database()为sec ...
- 吴裕雄 python 机器学习——数据预处理字典学习模型
from sklearn.decomposition import DictionaryLearning #数据预处理字典学习DictionaryLearning模型 def test_Diction ...
- netty(六) buffer 源码分析
问题 : netty的 ByteBuff 和传统的ByteBuff的区别是什么? HeapByteBuf 和 DirectByteBuf 的区别 ? HeapByteBuf : 使用堆内存,缺点 ,s ...