查看: 9272|回复: 10

[分享] FRDM-KL25Z平台RTC模块应用举例

[复制链接]
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-7-5 12:37:13 | 显示全部楼层 |阅读模式
     作者:飞思卡尔半导体 喻宁宁

    前言:最近在飞思卡尔英文社区看到外国人写的一个基于KL25Z FRDM开发板的RTC模块的应用,感觉很实用,所以动手验证了一下并参照自己的理解写了一个中文应用步骤,希望能帮到大家。原文链接:http://community.freescale.com/docs/DOC-94734

    FRDM-KL25Z平台RTC模块应用举例


    通常,RTC模块用来提供可靠的系统时间,包括时分秒和年月日等,其外围电路通常由一个高精度的32.768KHz晶体和一些电阻电容组成。飞思卡尔Kinetis家族MCU也同样包含RTC模块,但是同一家族不同的系列MCURTC模块内外部电路也不相同,其根本目的都在于产生一个32KHzRTC时钟,如K60系列MCU,其RTC模块时钟的输入只能外部输入,但可以外接有源时钟信号或者无源晶振,而KL25系列MCURTC模块时钟输入选择如图1所示,可以来自外部有源时钟、外部系统晶振(振荡频率在32-40KHz之间)和内部PMCLPO输出。飞思卡尔FRDM-KL25Z评估板以价格低、易学习的优点,在网友手中有比较大的保有量,所以在本应用中选用FRDM-KL25Z开发板作为验证RTC模块时钟功能的平台,方便大家学习。
    但是,使用FRDM-KL25Z开发板进行RTC模块功能验证的不足在于:1. 系统外部EXTAL0XTAL0之间连接晶振为8M,不能作为RTC时钟的输入;2. 外部时钟输入RTC_CLKIN引脚没有板载有源时钟;那么除了采用PMCLPO输出外,还能怎么获得32KHz的时钟呢?于是想到了MCG的内部32KHzIRC时钟,那么下一步的就是考虑如何把这个时钟连接到RTC_CLKIN引脚呢,这也正是本实验的巧妙之处:它充分利用板载的资源,以尽可能少的外围连接验证RTC模块的计时功能。如图2所示,在飞思卡尔KL25ZFRDM开发板上,RTC_CLKIN信号引脚被引出,在硬件上对应的引脚为PTC3/CLKOUTMCGIRCLK信号引脚也被引出,在硬件上对应的引脚为PTC1/RTC_CLKIN,所以只需把这两个引脚通过导线连接起来,即可将内部32KHz的慢速IRC时钟输出到RTC模块的RTC_CLKIN引脚。

    1.jpg

    1

    2.jpg

    2



    这里介绍两种RTC模块配置的方法,分别是使用PE和不使用PE配置RTC模块,下面分别讨论,最后附上应用程序代码(硬件平台为FRDM-KL25Z评估板)。



    1.      使用Processor Expert 软件完成RTC模块配置
    在建立一个带PE的空工程后,我们首先需要在Component Inspector设置CPU组件,设置如图2所示,步骤如下:
    1.      Clock settings >RTC clock input项中,使能RTC时钟输入,设置Clock Frequency 32Khz,并选择PTC1作为RTC_CLKIN输入引脚;
    2.      Clock Source Settings > Clock Source Setting 0 > Internal reference clock > MCGIRCLK source中,使能MCG内部时钟MCGIRCLK,选择系统内部IRC时钟源位Slow,即内部32Khz时钟;
    3.       Clock Source Settings > Clock Source Setting 0 > External reference clock > ERCLK32K Clock Source中,设置RTC模块时钟输入源,选择RTC Clock Input
    4.      Internal peripherals > System Integration Module > CLKOUT pin control中,设置32Khz时钟输出到PTC3引脚作为CLKOUT

    3.jpg

    2

    在完成以上设置后,PTC3引脚得到了一个输出的32K时钟,PTC1引脚作为RTC模块的时钟输入, MCG模块配置为PEE模式:  PLL clock 96 MHzCore Clock 48 MHz Bus clock 24 MHz。下面就要对RTC模块进行配置了,设置如图3所示,步骤比较简单,只需配置Clock sourceERCLK32K即可。


    4.jpg

    3

    完成以上步骤,点击Generate Processor Expert Code生成代码,然后再写入时间处理的应用代码即可,具体应用代码可以参见附件程序1。需要指出的是,在采用FRDM-KL25ZOpenSDA调试过程中,串口接收终端波特率设置应为115200,调试结果如图4所示,每隔一秒更新一次输出结果。

    5.jpg

    4

    2.      RTC模块bare-metal程序配置
    对于一个非PE的应用,需要去自己直接操作寄存器完成相关的功能配置。同样,也需要完成两个方面的配置:对CPU 的配置(主要是时钟的配置)和RTC模块的配置。对CPU 的配置步骤如下:
    1.      使能内部参考时钟,选择内部32Khz慢速时钟作为OUTCLK输出时钟源;
            MCG_C1 |= MCG_C1_IRCLKEN_MASK;
    MCG_C2 &= ~(MCG_C2_IRCS_MASK);
    2.      设置PTC1引脚的功能为RTC_CLKIN ,并选择32 KHz 时钟输入作为 RTC 模块时钟的输入源;
    PORTC_PCR1 |= (PORT_PCR_MUX(0x1));         
    SIM_SOPT1 |= SIM_SOPT1_OSC32KSEL(0b10);
    3.      设置PTC3引脚的功能为CLKOUT,并选择MCG内部 32 KHz 慢时钟输出到CLKOUT引脚
    SIM_SOPT2 |= SIM_SOPT2_CLKOUTSEL(0b100);
    PORTC_PCR3 |= (PORT_PCR_MUX(0x5));
    同样,在完成CPU的配置后,还需要配置RTC模块,其中重要的是其秒中断的设置。
    1.      使能软件可触发中断;
    SIM_SCGC6 |= SIM_SCGC6_RTC_MASK;
    2.      清除所有的RTC寄存器;
    RTC_CR = RTC_CR_SWR_MASK;
    RTC_CR &= ~RTC_CR_SWR_MASK;
    if (RTC_SR & RTC_SR_TIF_MASK)
    {
    RTC_TSR = 0x00000000;
    }
    3.      设置时间补偿参数,这个参数会根据应用的不同而不同;
    RTC_TCR = RTC_TCR_CIR(1) | RTC_TCR_TCR(0xFF);
    4.      使能模块的秒中断;
    enable_irq(INT_RTC_Seconds - 16);
    RTC_IER |= RTC_IER_TSIE_MASK;
    5.      启动时间计数器,并写秒寄存器;
    RTC_SR |= RTC_SR_TCE_MASK;
    RTC_TSR = 0xFF;
    完成以上工作后,还需要添加中断服务程序,编写应用程序,详细代码请参见附件2。同样,在调试过程中,串口接收终端波特率设置也应为115200,调试结果如图5所示,每隔一秒更新一次输出结果,只显示分和秒的值。

    6.jpg

    5

    FRDM-KL25Z-PEx-RTC.ZIP

    142.38 KB, 下载次数: 156, 下载积分: 威望 1

    FRDM-KL25Z-RTC-TEST.ZIP

    207.83 KB, 下载次数: 145, 下载积分: 威望 1

    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2013-7-5 14:16:54 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    谢谢楼主分享,学习中!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18

    主题

    82

    帖子

    0

    注册会员

    Rank: 2

    积分
    155
    最后登录
    1970-1-1
    发表于 2013-8-23 18:37:24 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    非常有用,感谢分享。不过对于KL3X和KL4X家族来说,如果将内部慢速32K时钟输出到PTC3引脚上的话势必会影响LCD功能的使用,不知道楼主是否有更合理的解决方法。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    66

    帖子

    0

    注册会员

    Rank: 2

    积分
    137
    最后登录
    1970-1-1
    发表于 2013-8-29 11:49:03 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    感谢楼主的分享,有用啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    27

    帖子

    0

    新手上路

    Rank: 1

    积分
    15
    最后登录
    1970-1-1
    发表于 2013-9-5 10:41:26 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    学习在啊  
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    17

    帖子

    0

    新手上路

    Rank: 1

    积分
    10
    最后登录
    1970-1-1
    发表于 2013-12-5 11:04:34 | 显示全部楼层

    回复:FRDM-KL25Z平台RTC模块应用举例

     谢谢分享,正在用这个!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2013-12-9 17:15:14 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    好贴顶起来,有KL25Z板子的网友可以照着做下。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16

    主题

    705

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1745
    最后登录
    1970-1-1
    发表于 2013-12-10 17:32:55 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    学习了!这么好的贴子!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    66

    帖子

    0

    注册会员

    Rank: 2

    积分
    137
    最后登录
    1970-1-1
    发表于 2014-2-8 17:28:07 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    谢谢楼主的分享,受益了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-8-16 10:32
  • 签到天数: 105 天

    连续签到: 1 天

    [LV.6]常住居民II

    19

    主题

    549

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    1084
    最后登录
    2021-6-22
    发表于 2014-3-18 16:41:39 | 显示全部楼层

    RE:FRDM-KL25Z平台RTC模块应用举例

    PortC端口被占用的情况下,是不是就无法使用RTC模块了?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 23:27 , Processed in 0.109344 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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