查看: 4346|回复: 12

[求助] KINETIS K系列单片机如何使PE产生的时钟设置参数生效?

[复制链接]

该用户从未签到

7

主题

64

帖子

0

中级会员

Rank: 3Rank: 3

积分
314
最后登录
2016-11-18
发表于 2015-11-15 18:13:34 | 显示全部楼层 |阅读模式
如题所述,利用KDS的时钟树部件设置完时钟数以后,其参数都放在一个osc_user_config_t clockMan1_osc0_InitConfig的结构体中,见下图。PE生成的程序从头到尾我没有找到在何处调用的这个参数使时钟生效,特此向广大网友请假。
我想将该部分配置参数复制到IAR中利用KSDK的库函数来实现,由于采用的是MK02单片机,参见FRDM-MK22修改后,仍有很多寄存器不存在等原因报错,请教大家是如何配置一个不常见的K系列单片机时钟的
我知道答案 目前已有12人回答
截图20151115181307.png
回复

使用道具 举报

  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2015-11-16 09:40:40 | 显示全部楼层
    直接手动配置更快
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    32

    帖子

    0

    注册会员

    Rank: 2

    积分
    85
    最后登录
    2015-11-29
    发表于 2015-11-16 16:11:46 | 显示全部楼层
    最好不要用pe
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-11-16 17:40:26 | 显示全部楼层
    你这样太复杂啊,将KDS的代码移植,不如在IAR直接建立K02的工程来的简单呢.
    你可以使用此文档,配置K02的时钟模式。 K02.zip (7.92 KB, 下载次数: 17)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    64

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    314
    最后登录
    2016-11-18
     楼主| 发表于 2015-11-17 10:04:57 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-11-16 17:40
    你这样太复杂啊,将KDS的代码移植,不如在IAR直接建立K02的工程来的简单呢.
    你可以使用此文档,配置K02的时 ...

    原来你们都是这么配置时钟的啊!了不起
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-11-17 13:31:16 | 显示全部楼层
    梦中梦 发表于 2015-11-17 10:04
    原来你们都是这么配置时钟的啊!了不起

    方法有很多,你可以选择任意一种
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    64

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    314
    最后登录
    2016-11-18
     楼主| 发表于 2015-11-17 22:32:18 | 显示全部楼层
    FSL_TICS_ZP 发表于 2015-11-17 13:31
    方法有很多,你可以选择任意一种

    刚才认真看了你所发的两个文件,是不是只要将clock_manager_error_code_t CLOCK_SYS_SetConfiguration(clock_manager_user_config_t const* config)这个设置好就可以了呢,这个函数的各个结构体中也没有设计到外部晶振多少的设置啊
    截图20151117221239.png
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2015-11-18 09:08:57 | 显示全部楼层
    梦中梦 发表于 2015-11-17 22:32
    刚才认真看了你所发的两个文件,是不是只要将clock_manager_error_code_t CLOCK_SYS_SetConfiguration(cl ...

    发给你的附件实际是支持以下五种时钟配置,你可以在system_MK02F12810.h可以看到
    1.    0 ... Default  part configuration
    2.          Multipurpose Clock Generator (MCG) in FEI mode.
    3.          Reference clock source for MCG module: Slow internal reference clock
    4.          Core clock = 20.97152MHz
    5.          Bus clock  = 20.97152MHz
    6.    1 ... Maximum achievable clock frequency configuration
    7.          Multipurpose Clock Generator (MCG) in FEE mode.
    8.          Reference clock source for MCG module: System oscillator 0 reference clock
    9.          Core clock = 80MHz
    10.          Bus clock  = 40MHz
    11.    2 ... Internally clocked, ready for Very Low Power Run mode.
    12.          Multipurpose Clock Generator (MCG) in BLPI mode.
    13.          Reference clock source for MCG module: Fast internal reference clock
    14.          Core clock = 4MHz
    15.          Bus clock  = 4MHz
    16.    3 ... Externally clocked, ready for Very Low Power Run mode.
    17.          Multipurpose Clock Generator (MCG) in BLPE mode.
    18.          Reference clock source for MCG module: System oscillator 0 reference clock
    19.          Core clock = 4MHz
    20.          Bus clock  = 4MHz
    21.    4 ... Maximum achievable clock frequency configuration in RUN mode
    22.          Multipurpose Clock Generator (MCG) in FEE mode.
    23.          Reference clock source for MCG module: System oscillator 0 reference clock
    24.          Core clock = 60MHz
    25.          Bus clock  = 30MHz
    复制代码
    只需要通过在system_MK02F12810.h配置CLOCK_SETUP为0~4之间,就可以选择对应的时钟模式啊


    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    65

    帖子

    0

    注册会员

    Rank: 2

    积分
    153
    最后登录
    1970-1-1
    发表于 2015-11-18 10:23:50 | 显示全部楼层
    我是来学习的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    64

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    314
    最后登录
    2016-11-18
     楼主| 发表于 2015-11-19 20:42:13 | 显示全部楼层
    1.   //更改该部分参数,具体更改FRDIV分频系数为512,使内核时钟达到100M总线时钟50M
    2. #elif (CLOCK_SETUP == 1)
    3. // #define DEFAULT_SYSTEM_CLOCK         80000000u           /* Default System clock value */
    4. <font color="#ff0000">  #define DEFAULT_SYSTEM_CLOCK         100000000u           /* 配置为100M */</font>
    5.   #define MCG_MODE                     MCG_MODE_FEE /* Clock generator mode */
    6. <font color="#ff0000">  /* MCG_C1: CLKS=0,FRDIV=3改为4,IREFS=0,IRCLKEN=1,IREFSTEN=0 */</font>
    7. // #define SYSTEM_MCG_C1_VALUE          0x1AU               /* MCG_C1 */
    8. <font color="#ff0000">   #define SYSTEM_MCG_C1_VALUE          0x22U               /* MCG_C1 FRDIV分频系数由256调整到512*/</font>
    9.   /* MCG_C2: LOCRE0=0,FCFTRIM=0,RANGE=2,HGO=0,EREFS=1,LP=0,IRCS=0 */
    10.   #define SYSTEM_MCG_C2_VALUE          0x24U               /* MCG_C2 */
    11.   /* MCG_C4: DMX32=0,DRST_DRS=3,FCTRIM=0,SCFTRIM=0 */
    12.   #define SYSTEM_MCG_C4_VALUE          0x60U               /* MCG_C4 */
    13.   /* MCG_SC: ATME=0,ATMS=0,ATMF=0,FLTPRSRV=0,FCRDIV=0,LOCS0=0 */
    14.   #define SYSTEM_MCG_SC_VALUE          0x00U               /* MCG_SC */
    15. /* MCG_C5:  */
    16.   #define SYSTEM_MCG_C5_VALUE          0x00U               /* MCG_C5 */
    17. /* MCG_C6: CME=0 */
    18.   #define SYSTEM_MCG_C6_VALUE          0x00U               /* MCG_C6 */
    19. /* MCG_C7: OSCSEL=0 */
    20.   #define SYSTEM_MCG_C7_VALUE          0x00U               /* MCG_C7 */
    21. /* OSC_CR: ERCLKEN=1,EREFSTEN=0,SC2P=0,SC4P=0,SC8P=0,SC16P=0 */
    22.   #define SYSTEM_OSC_CR_VALUE          0x80U               /* OSC_CR */
    23. /* SMC_PMCTRL: RUNM=3,STOPA=0,STOPM=0 */
    24.   #define SYSTEM_SMC_PMCTRL_VALUE      0x60U               /* SMC_PMCTRL */
    25. /* SIM_CLKDIV1: OUTDIV1=0,OUTDIV2=1,OUTDIV4=3 */
    26.   #define SYSTEM_SIM_CLKDIV1_VALUE     0x01030000U         /* SIM_CLKDIV1 */
    27. /* SIM_SOPT1: OSC32KSEL=3,OSC32KOUT=0,RAMSIZE=0 */
    28.   #define SYSTEM_SIM_SOPT1_VALUE       0x000C0000U         /* SIM_SOPT1 */
    29. /* SIM_SOPT2: PLLFLLSEL=0,TRACECLKSEL=0,CLKOUTSEL=0 */
    30.   #define SYSTEM_SIM_SOPT2_VALUE       0x00U               /* SIM_SOPT2 */
    31.   
    32.   
    复制代码
    按照你提供的方法,已经将SYSTEM_MK02F12810.H中的该部分更改为FEE模式,外部晶振设为20M,内核频率为100M,在主函数中先后调用   SystemInit(); SystemCoreClockUpdate();两个函数对时钟频率进行了初始化。可是通过uartSourceClock =CLOCK_SYS_GetUartFreq(BOARD_DEBUG_UART_INSTANCE);没有读取到串口模块的频率,之前安装系统默认的FEI模式,串口发送数据正常,可是现在串口小助手收到的数据是汉字乱码,初步判定可能是串口模块的时钟频率造成的,但不知错在哪里,求指教。图片为我在主函数中初始化时钟的调用顺序。已经进行了定义  #define CLOCK_SETUP 1   //FEE模式定义


    截图20151119203919.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-26 13:48 , Processed in 0.107146 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表