微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > KL 系列 FAQ (八)——RTC 模块

KL 系列 FAQ (八)——RTC 模块

时间:10-02 整理:3721RD 点击:

11.1 KL25Z RTC 模块初始化失败

问题:

KL25Z 用内部 32K 时钟 初始化 RTC 模块 就会使芯片晶振设置失败。

附上程序

  1. void rtc_init(uint32_t SecendTimes,uint32_t AlarmTimes)
  2. {
  3. int i;
  4. SIM_SCGC6 |= SIM_ SCGC6_RTC_MASK;//使能 RTC 时钟门控制
  5. OSC0_CR |= OSC_CR_ERCLKEN_MASK;
  6. SIM_SOPT1 |= SIM_SOPT1_OSC32KSEL(0);
  7. RTC_CR  = RTC_CR_SWR_MASK;//软件复位 RTC 寄存器
  8. RTC_CR  &= ~RTC_CR_SWR_MASK;//软件复位之后清 SWR 位
  9. RTC_CR |= RTC_CR_CLKO_MASK  | RTC_CR_SC8P_MASK  ;
  10. RTC_CR |= RTC_CR_OSCE_MASK;//使能 32.768kHz 振荡器

  11. for(i=0;i<0x600000;i++);//在使能 32.768kHz 振荡器之后,使能计数器
  12. //之前等待一段时间,来稳定 32.768kHz 时钟。
  13. RTC_TCR = RTC_TCR_CIR(0)  | RTC_TCR_TCR(0);//配置定时器补偿寄存器的时
  14. 间间隔与时钟周期数
  15. RTC_TSR = SecendTimes;//初始化定时器秒寄存器
  16. RTC_TAR = AlarmTimes;//初始化定时器报警寄存器
  17. RTC_TPR = 0;     //复位 RTC 定时器预分频器寄存器
  18. RTC_SR |= RTC_SR_TCE_MASK; //使能秒计数器
  19. }

复制代码


一旦经过RTC_CR |= RTC_CR_OSCE_MASK;//使能 32.768kHz 振荡器这句之后就会死机。


答案:

从手册中(如下图)可以清楚的看出,RTC 模块一共有 3 个 clock 的来源。

它们分别是 LPO,RTC 的时钟输入脚和 OSC32KCLK,可以通过

SIM_SOPT1[OSC32KSEL] 选择(如下图)。  其中 LPO 是内部的 1KHz 频率的时钟;

OSC32KCLK 也是外部的时钟产生的,而且在使用 RTC 选择 OSC32KCLK 时,只

有外部晶振为 32.768 kHz 时才可以;选择 RTC_CLKIN 时,RTC_CLKIN 必须是有

源 32.768kHz 时钟源。所以说 RTC 的时钟是不能用内部 32.768kHz 产生的。不过

有人利用内部 32.768kHz 通过外部引脚输出然后引到 RTC_CLKIN 引脚这样的方法,

从而使用内部 32.768kHz 作为 RTC 的时钟源。




11.2 RTC 模块 使用内部时钟在 PE 中如何配置

问题:

FRDM_KL25Z 板上的 RTC_ IN 引脚没有有源晶振,如果想使用内部的慢速时

钟来作为 RTC 的时钟源,在 PE 中该如何配置实现?


答案:

内部的慢速时钟和 RTC 从芯片内部是没有连接线路的,所以,需要在外部

用引线将两个模块相连。思路:把板子上的 PTC1 配置为 RTC_CLKIN,用作 RTC

的时钟输入引脚。然后将 PTC3 配置为 CLKOUT,通过 SIM_SOPT2[ CLKOUTSEL]

选择 MCGIRCLK,并且配置 MCGIRCLK 为内部的慢速时钟 32.768khz。

下面来配置 PE 中的模块参数了。


首先,配置 CPU 部件的相关 RTC 参数,这些都是在 ex pert 中操作:

(1) 使能 RTC 时钟输入并选择 PTC1。

(2) MCGIRCLK source 选择为 slow,选择 32KHz 的时钟频率。

(3) 选择 ERCLK32K clock  source 为 RTC clock inp ut,即选择 RTC_CLKIN

作为 RTC 模块 32khz 输入。

(4) 选择 PTC3 作为 CLKOUT 引脚,引脚输出信号配置为 MCGIRCLK。

然后,添加 RTC_LDD,并对其配置,需要注意,clock source 选择为 ERCLK32K.

其实,官方论坛有一个关于这方面的文章,并且附上了代码,具体链接为:

https://community.freescale.com/docs/DOC-94734


推荐阅读:

KL 系列 FAQ (七)

KL 系列 FAQ (六)

KL 系列 FAQ (五)

KL 系列 FAQ (四)

KL 系列 FAQ (三)

KL 系列 FAQ (二)
KL 系列 FAQ (一)


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top