查看: 13169|回复: 16

[已解决] K60 RTC模块使用求助(已解决)

[复制链接]

该用户从未签到

1

主题

13

帖子

0

新手上路

Rank: 1

积分
13
最后登录
1970-1-1
发表于 2013-8-31 10:53:25 | 显示全部楼层 |阅读模式
最近写K60 RTC 模块驱动,RTC模块初始化完成后,不能正常使用。自己感觉是32K时钟就没有启动,因为RTC_TSR值没有增加。程序是参考超核K60 RTC驱动 以及官方RTC驱动修改的,不知道思路有没有问题。
RTC初始化如下:
void rtc_init(void)
{
 /*enable the clock to SRTC module register space*/
 SIM_SCGC6 |= SIM_SCGC6_RTC_MASK;
 /* RTC时钟源选择System oscillator (OSC32KCLK) */
 SIM_SOPT1 &= ~SIM_SOPT1_OSC32KSEL_MASK;
 /* software reset */
 RTC_CR = RTC_CR_SWR_MASK;
/*clear the software reset bit*/
 RTC_CR &= ~RTC_CR_SWR_MASK; 
 
 if (RTC_SR & RTC_SR_TIF_MASK)
 {  /* 清除TIF标志   */
      RTC_TSR = 0x00000000; 
 }
 if (RTC_SR & RTC_SR_TCE_MASK)
 {
 /* 如果RTC已经使能,则禁能 */
     RTC_SR &= ~RTC_SR_TCE_MASK;
 }
 /*赋值*/
 RTC_TSR = 1000;
 RTC_TAR = RTC_TAR + 1;
 /* 使能32K时钟,接入16pF电容 */
 RTC_CR |= RTC_CR_OSCE_MASK|RTC_CR_SC16P_MASK; 
 for(i = 0; i < 0x600000; i++); /* 等待时钟源稳定   */            
 /*使能各种中断*/
 RTC_IER|= (RTC_IER_TSIE_MASK|RTC_IER_TAIE_MASK|RTC_IER_TOIE_MASK|RTC_IER_TIIE_MASK);
 
 /*Enable the counter*/
 RTC_SR |= RTC_SR_TCE_MASK;
 /*Enable the interrupt*/
   enable_irq(66);//Alarm interrupt
}
请各位看看。是不是RTC与外围电路也有关系呢?
我知道答案 目前已有16人回答
回复

使用道具 举报

该用户从未签到

1

主题

20

帖子

0

注册会员

Rank: 2

积分
62
最后登录
1970-1-1
发表于 2014-8-26 10:57:21 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

 前几天也碰到这个问题,K60的RTC计数器没有计数,今天把并在晶振两脚的1M电阻给拆了,然后晶振就顺利起振了。只是现在还不知道这个电阻在这里的作用是什么。
回复 支持 1 反对 0

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-9-2 10:09:12 | 显示全部楼层

回复:K60 RTC模块使用求助(正解)

 首先你要检查VBAT是否有电,否则RTC和RTC Oscillator都不能工作(原因:没电)。
其次你需要使能RTC Ocillator:
  /*Enable the oscillator*/
  RTC_CR |= RTC_CR_OSCE_MASK;
祝顺利。
 
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

13

帖子

0

新手上路

Rank: 1

积分
13
最后登录
1970-1-1
 楼主| 发表于 2013-9-4 10:26:18 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

回复第 2 楼 于2013-09-02 10:09:12发表:
 首先你要检查VBAT是否有电,否则RTC和RTC Oscillator都不能工作(原因:没电)。
其次你需要使能RTC Ocillator:
  /*Enable the oscillator*/
  RTC_CR |= RTC_CR_OSCE_MASK;
祝顺利。
谢谢回复,VBAT有电的。我也RTC_CR |= RTC_CR_OSCE_MASK;使能了时钟。但是RTC_TSR依然不能增加。想问是否和我系统时钟的选择有关系。
我是默认时钟是:
#define CLK0_FREQ_HZ        20000000
#define CLK0_TYPE              CRYSTAL 
  #define CLK1_FREQ_HZ        1200000
  #define CLK1_TYPE           CRYSTAL
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

35

主题

508

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2167
最后登录
1970-1-1
发表于 2013-9-4 10:56:09 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

回复第 3 楼 于2013-09-04 10:26:18发表:
回复第 2 楼 于2013-09-02 10:09:12发表:
 首先你要检查VBAT是否有电,否则RTC和RTC Oscillator都不能工作(原因:没电)。
其次你需要使能RTC Ocillator:
  /*Enable the oscillator*/
  RTC_CR |= RTC_CR_OSCE_MASK;
祝顺利。
谢谢回复,VBAT有电的。我也RTC_CR |= RTC_CR_OSCE_MASK;使能了时钟。但是RTC_TSR依然不能增加。想问是否和我系统时钟的选择有关系。
我是默认时钟是:
#define CLK0_FREQ_HZ        20000000
#define CLK0_TYPE              CRYSTAL 
  #define CLK1_FREQ_HZ        1200000
  #define CLK1_TYPE           CRYSTAL
 
 RTC参考时钟只能使用32.768KHz晶振才能准备计时,如果输入MHz时钟则不能正常工作。

 
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

13

帖子

0

新手上路

Rank: 1

积分
13
最后登录
1970-1-1
 楼主| 发表于 2013-9-4 11:08:29 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

回复第 4 楼 于2013-09-04 10:56:09发表:
回复第 3 楼 于2013-09-04 10:26:18发表:
回复第 2 楼 于2013-09-02 10:09:12发表:
  RTC参考时钟只能使用32.768KHz晶振才能准备计时,如果输入MHz时钟则不能正常工作。

 

 

我外部只有1个20M的晶振,接在了EXTAL以及XTAL端口。看K60的时钟系统 通过OSC logic 可以生成OSC32KCLK 时钟的。还是必须外界32K时钟呢?谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

13

帖子

0

新手上路

Rank: 1

积分
13
最后登录
1970-1-1
 楼主| 发表于 2013-9-4 11:20:56 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

回复第 5 楼 于2013-09-04 11:08:29发表:
回复第 4 楼 于2013-09-04 10:56:09发表:
回复第 3 楼 于2013-09-04 10:26:18发表:
回复第 2 楼 于2013-09-02 10:09:12发表:
  RTC参考时钟只能使用32.768KHz晶振才能准备计时,如果输入MHz时钟则不能正常工作。

 

如果 RTC只能使用RTC oscillator ,而 OSC32KCLK 和 RTC 所需要的32.768K 不是同一时钟,那就是我把两者弄混了,所以我的硬件决定了RTC 不能使用  
是这样吗?
谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

27

帖子

0

新手上路

Rank: 1

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

回复:K60 RTC模块使用求助(已解决)

回复第 6 楼 于2013-09-04 11:20:56发表:
回复第 5 楼 于2013-09-04 11:08:29发表:
回复第 4 楼 于2013-09-04 10:56:09发表:
回复第 3 楼 于2013-09-04 10:26:18发表:
回复第 2 楼 于2013-09-02 10:09:12发表:
  RTC参考时钟只能使用32.768KHz晶振才能准备计时,如果输入MHz时钟则不能正常工作。

 

如果 RTC只能使用RTC oscillator ,而 OSC32KCLK 和 RTC 所需要的32.768K 不是同一时钟,那就是我把两者弄混了,所以我的硬件决定了RTC 不能使用  
是这样吗?
谢谢。
 
 
 
我想知道的是,最后解决了吗?


 
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

13

帖子

0

新手上路

Rank: 1

积分
13
最后登录
1970-1-1
 楼主| 发表于 2013-9-5 22:03:44 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

回复第 7 楼 于2013-09-05 18:33:42发表:
回复第 6 楼 于2013-09-04 11:20:56发表:
回复第 5 楼 于2013-09-04 11:08:29发表:
回复第 4 楼 于2013-09-04 10:56:09发表:
回复第 3 楼 于2013-09-04 10:26:18发表:
回复第 2 楼 于2013-09-02 10:09:12发表:
  RTC参考时钟只能使用32.768KHz晶振才能准备计时,如果输入MHz时钟则不能正常工作。

 

如果 RTC只能使用RTC oscillator ,而 OSC32KCLK 和 RTC 所需要的32.768K 不是同一时钟,那就是我把两者弄混了,所以我的硬件决定了RTC 不能使用  
是这样吗?
谢谢。
 
 
 
我想知道的是,最后解决了吗?


 放了几天,明天继续。

 
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2013-9-6 09:30:02 | 显示全部楼层

回复:K60 RTC模块使用求助(已解决)

回复第 6 楼 于2013-09-04 11:20:56发表:
回复第 5 楼 于2013-09-04 11:08:29发表:
回复第 4 楼 于2013-09-04 10:56:09发表:
回复第 3 楼 于2013-09-04 10:26:18发表:
回复第 2 楼 于2013-09-02 10:09:12发表:
  RTC参考时钟只能使用32.768KHz晶振才能准备计时,如果输入MHz时钟则不能正常工作。

 

如果 RTC只能使用RTC oscillator ,而 OSC32KCLK 和 RTC 所需要的32.768K 不是同一时钟,那就是我把两者弄混了,所以我的硬件决定了RTC 不能使用  
是这样吗?
谢谢。


 

你说的对!从K60的时钟系统结构框图看,只能选择EXTAL32,XTAL32输入32.768Khz,不能使用OSC32KCLK,如下图:
  rtc.jpg
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-9-5 09:07 , Processed in 0.112760 second(s), 32 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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