查看: 3217|回复: 7

[已解决] KL14,时钟配置,32768Hz外部时钟,急急急急急急(已解决)

[复制链接]

该用户从未签到

25

主题

104

帖子

0

中级会员

Rank: 3Rank: 3

积分
302
最后登录
1970-1-1
发表于 2013-11-8 23:16:54 | 显示全部楼层 |阅读模式
急求各位大大帮忙!哪位好心大大能尽快给我回复啊,我这边一块新板子急等着,硬件是外接的外部32768HZ时钟,我软件上的配置如下:
 
调用官方提供的driver里面的mcg.c里面的
fei_fee()函数,给的参数分别为:
crystal_val - external clock frequency in Hz:  32768
 hgo_val     - selects whether low power or high gain mode is selected
 *                           for the crystal oscillator. This has no meaning if an 
 *                           external clock is used. :0
 erefs_val   -  0 (即选择无源晶振),
但是程序在最后检测状态:if (!(MCG_S & MCG_S_IREFST_MASK)) break; 的时候没有跳出,即没有进入FEE模式,求问是程序问题还是硬件问题?
程序问题的话急求配置方法,感谢!硬件的话请问应该怎么检查????
2013.12.17.自己结了这个帖吧。软件配置的问题:以上配置erefs_val应改为1:外部晶振选择。(这里我也还是没理解清楚,以前以为是区分的无源和有源,现在看只是外部晶振/体和EXT reference clk的区别...).
另外软件还没有配置好时,确实测不到硬件起振。但是硬件连接应该按照如上的Low-frequency (32 kHz), low-power选择connection 1,即不需要任何外围电路,配置内部电容。附fei_fee代码(官方有几个版本,主要是OSC0_CR的配置有的有,有的没有。)
附:
<blockquote style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid; ">
int fei_fee(int crystal_val, unsigned char hgo_val, unsigned char erefs_val)
{
  unsigned char frdiv_val;
  unsigned char temp_reg;
 // short i;
  int mcg_out, fll_ref_freq, i;
  
  // check if in FEI mode
/*
        if (!((((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) == 0x0) && // check CLKS mux has selcted FLL output
                (MCG_S & MCG_S_IREFST_MASK)))                                                                 // check PLLS mux has selected FLL

    {
        return 0x1;                                                     // return error code
    }
*/    

// check external frequency is less than the maximum frequency
  if  (crystal_val > 50000000) {return 0x21;}
  
 //check crystal frequency is within spec. if crystal osc is being used
  if (erefs_val)
  {
  if (
       ((crystal_val > 40000) && (crystal_val < 3000000)) ||
      (crystal_val > 32000000)) {return 0x22;} // return error if one of the available crystal options is not available
  }

// make sure HGO will never be greater than 1. Could return an error instead if desired.  
  if (hgo_val > 0)
  {
    hgo_val = 1; // force hgo_val to 1 if > 0
  }

  OSC0_CR = OSC_CR_ERCLKEN_MASK
          |OSC_CR_EREFSTEN_MASK
          |OSC_CR_SC8P_MASK;
          //|OSC_CR_SC4P_MASK;

// configure the MCG_C2 register
// the RANGE value is determined by the external frequency. Since the RANGE parameter affects the FRDIV divide value
// it still needs to be set correctly even if the oscillator is not being used
  temp_reg = MCG_C2;
  temp_reg &= ~(MCG_C2_RANGE0_MASK | MCG_C2_HGO0_MASK | MCG_C2_EREFS0_MASK); // clear fields before writing new values
<blockquote style="padding-left: 1ex; margin: 0px 0px 0px 0.8ex; border-left-color: rgb(204, 204, 204); border-left-width: 1px; border-left-style: solid; "><font face="arial"><span style="font-size: 14px; line-height: 23px;">  if (crystal_val
我知道答案 目前已有6人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-11-9 10:01:49 | 显示全部楼层

    RE:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    您好,能不能把您的驱动发上来,我这里没有。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    104

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    302
    最后登录
    1970-1-1
     楼主| 发表于 2013-11-9 16:33:10 | 显示全部楼层

    回复:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    回复第 2 楼 于2013-11-09 10:01:49发表:
    您好,能不能把您的驱动发上来,我这里没有。 

     好的,非常感谢!

    mcg.rar

    10.77 KB, 下载次数: 7

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    459

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    303
    最后登录
    2024-10-24
    发表于 2013-11-11 12:31:33 | 显示全部楼层

    回复:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    这个应该没问题的,如果使用外部的32K时钟,有一点需要你注意的是,在system_MKL25Z4.c文件的启动代码中要 #define CLOCK_SETUP 0,因为默认是定义为1使用8M外部时钟的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    104

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    302
    最后登录
    1970-1-1
     楼主| 发表于 2013-11-24 21:06:44 | 显示全部楼层

    回复:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    继续求助!我又在
    mcg_clk_hz = fei_fee(CLK0_FREQ_HZ,LOW_POWER,CLK0_TYPE);//external 32768hz clk
    这一句之前加了OSC0_CR|=OSC_CR_ERCLKEN_MASK|OSC_CR_SC2P_MASK|OSC_CR_SC16P_MASK;
    还是没有效果啊,外部晶振32768测不到时钟,求问是硬件问题还是软件?谢谢啦!
     
    回复第 4 楼 于2013-11-11 12:31:33发表:
    这个应该没问题的,如果使用外部的32K时钟,有一点需要你注意的是,在system_MKL25Z4.c文件的启动代码中要 #define CLOCK_SETUP 0,因为默认是定义为1使用8M外部时钟的。
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2013-11-29 11:10:03 | 显示全部楼层

    回复:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    你可以用CodeWarrior的PE工具配置一个使用外部32768晶振的工程,看是否能够运行。
    如果能够运行,则参考PE生成的代码
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    25

    主题

    104

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    302
    最后登录
    1970-1-1
     楼主| 发表于 2013-11-29 21:24:52 | 显示全部楼层

    回复:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    哦,好的,谢谢!
    回复第 6 楼 于2013-11-29 11:10:03发表:
    你可以用CodeWarrior的PE工具配置一个使用外部32768晶振的工程,看是否能够运行。
    如果能够运行,则参考PE生成的代码
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2013-12-2 16:23:48 | 显示全部楼层

    RE:KL14,时钟配置,32768Hz外部时钟,急急急急急急

    有问题,欢迎论坛中讨论!!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-19 05:11 , Processed in 0.100882 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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