智能车制作

标题: 求教:K10在FLASH中运行速度问题 [打印本页]

作者: chana0322    时间: 2012-2-16 09:57
标题: 求教:K10在FLASH中运行速度问题
从清华大学买的K10的系统板,这坑爹的板子用的是样片,BDM也超难用,还很难改成J-LINK接口。
问题是我写的程序把系统时钟提到74M以上下载到FLASH中就没法运行!但在RAM运行无阻,求解。
这是那段代码:
MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV(0x0Bu);
应该是更改MCG_C6_VDIV(0x0Bu)的值就可以了吧?

作者: sword1224    时间: 2012-2-16 12:08
本帖最后由 sword1224 于 2012-2-16 12:10 编辑

Kinetis中有很多个时钟,有内核时钟,总线时钟,还有一个FLASH时钟,每一个时钟都有自己独立的分频数,你的现象很可能是总线时钟与内核时钟没有超,但FLASH时钟超了,所以程序在RAM中运行没问题,而在FLASH中运行就不行,对于清华的K10,好像FLASH时钟30多M就不顶了。

这是我的设置各个时钟分频数的代码(这段代码加的位置不是任意的,由于程序太长,完整的初始化代码就不贴出来了,你看一下你的时钟初始化程序,把SIM_CLKDIV1的设置替换掉就可以了),其中内核时钟的分频数为1,总线时钟,FlexBus时钟,以及FLASH时钟的分频数由宏来定义:

#define DIV_BusClk_Kinetis    2       /* BusClock的分频数(相对于内核时钟),最大不能超过64M */
#define DIV_FlexClk_Kinetis   2       /* FlexBusclock的分频数(相对于内核时钟),最大不能超过64M */
#define DIV_FlashClk_Kinetis  4       /* Flashclock的分频数(相对于内核时钟),最大不能超过32M */

// set clock dividers to desired value
SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(0)      
                      | SIM_CLKDIV1_OUTDIV2(DIV_BusClk_Kinetis - 1)
                      | SIM_CLKDIV1_OUTDIV3(DIV_FlexClk_Kinetis - 1)  
                      | SIM_CLKDIV1_OUTDIV4(DIV_FlashClk_Kinetis - 1);

// wait for dividers to change
for (i = 0 ; i < DIV_FlashClk_Kinetis ; i++)  ;
作者: chana0322    时间: 2012-2-16 22:54
sword1224 发表于 2012-2-16 12:08
Kinetis中有很多个时钟,有内核时钟,总线时钟,还有一个FLASH时钟,每一个时钟都有自己独立的分频数,你的 ...

明白了,多谢提醒。
作者: Mr.Penn    时间: 2013-1-28 00:11
FLASH 时钟上限在35M上下




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2