查看: 2934|回复: 8

[已解决] K61 RTC时钟无法递增(已解决)

[复制链接]

该用户从未签到

6

主题

27

帖子

0

注册会员

Rank: 2

积分
77
最后登录
1970-1-1
发表于 2013-12-7 17:27:36 | 显示全部楼层 |阅读模式
使用K61的RTC时,发现在正常初始化后,无法自增。下面试我的初始化函数。最后还有我的KEIL中的截图,发现寄存器值都正常。
同时我也检查了VBAT的值为2.78V,按照数据手册中的范围,应该是可以正常工作的。
 uint8 LPLD_RTC_Init(RTC_InitTypeDef rtc_init_structure)
{
  int delay;
  uint32 seconds = rtc_init_structure.RTC_Seconds;
  uint32 alarm_time = rtc_init_structure.RTC_AlarmTime;
  RTC_ISR_CALLBACK invalid_isr_func = rtc_init_structure.RTC_InvalidIsr;
  RTC_ISR_CALLBACK overflow_isr_func = rtc_init_structure.RTC_OverflowIsr;
  RTC_ISR_CALLBACK alarm_isr_func = rtc_init_structure.RTC_AlarmIsr;
 
  SIM_SOPT1 &= ~SIM_SOPT1_OSC32KSEL_MASK;
  SIM_SCGC6 |= SIM_SCGC6_RTC_MASK;
  //复位所有RTC寄存器 除了SWR位 RTC_WAR和RTC_RAR寄存器
  //在VBAT POR设置之后,用软件清除SWR
  //复位RTC寄存器
  RTC_BASE_PTR->CR  = RTC_CR_SWR_MASK; 
  //清除RTC复位标志  
  RTC_BASE_PTR->CR  &= ~RTC_CR_SWR_MASK;  
  //使能RTC 32.768 kHzRTC时钟源
  //使能之后要延时一段时间等待
  //等待时钟稳定后在配置RTC时钟计数器
  RTC_BASE_PTR->CR |= RTC_CR_OSCE_MASK;
  
  //等待32.768时钟起振
  for(delay = 0;delay < 0x600000 ;delay++);
 
  //设置时钟补偿寄存器
  RTC_BASE_PTR->TCR = RTC_TCR_CIR(0) | RTC_TCR_TCR(0);
  
  //配置秒计数器
  RTC_BASE_PTR->TSR = seconds;
    
  //配置报警寄存器
  RTC_BASE_PTR->TAR = alarm_time;
  
  //使能秒计数器
  RTC_BASE_PTR->SR |= RTC_SR_TCE_MASK;
  
  return 1;
}
 
我知道答案 目前已有7人回答
寄存器截图.png
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

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

RE:K61 RTC时钟无法递增

你好!请问你使用芯片的具体型号是多少?如果可以,请把你的工程上传!
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

27

帖子

0

注册会员

Rank: 2

积分
77
最后登录
1970-1-1
 楼主| 发表于 2013-12-10 10:42:49 | 显示全部楼层

RE:K61 RTC时钟无法递增

我使用的是MK61FX512VMJ12,我的工程很大啊,不好传啊。我就是初始化后,就隔一段时间读一次计数的那个寄存器的。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2013-12-10 13:27:05 | 显示全部楼层

回复:K61 RTC时钟无法递增

回复第 3 楼 于2013-12-10 10:42:49发表:
我使用的是MK61FX512VMJ12,我的工程很大啊,不好传啊。我就是初始化后,就隔一段时间读一次计数的那个寄存器的。 

好的,那就根据你贴出来的看吧。
你的EXTAL32和XTAL32接的是32.768Khaz的晶振吗?
首先先排除硬件问题。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

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

回复:K61 RTC时钟无法递增

回复第 4 楼 于2013-12-10 13:27:05发表:
回复第 3 楼 于2013-12-10 10:42:49发表:
我使用的是MK61FX512VMJ12,我的工程很大啊,不好传啊。我就是初始化后,就隔一段时间读一次计数的那个寄存器的。 

好的,那就根据你贴出来的看吧。
你的EXTAL32和XTAL32接的是32.768Khaz的晶振吗?
首先先排除硬件问题。
 
然后,软件的代码,你可以参考100M代码KINETIS512_V2_SC,这里面有个RTC的代码。
它RTC模块和你使用的RTC模块是一样的
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

27

帖子

0

注册会员

Rank: 2

积分
77
最后登录
1970-1-1
 楼主| 发表于 2013-12-11 10:40:03 | 显示全部楼层

RE:K61 RTC时钟无法递增

好的,我先查一下。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

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

RE:K61 RTC时钟无法递增

如果还有问题,欢迎你继续提出交流!
回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

27

帖子

0

注册会员

Rank: 2

积分
77
最后登录
1970-1-1
 楼主| 发表于 2013-12-11 14:45:21 | 显示全部楼层

RE:K61 RTC时钟无法递增(正解)

问题解决了,问题出在外接的反馈电阻有问题,我们接的是1M的电阻,18PF的两个电容。实际上看到K61数据手册里说明它的32.768k的晶振的内部有一个100M的反馈电阻,1M的电阻并接上去导致负载电阻太小了导致晶振不起震。现在我们外部只保留电容,去掉电阻。软件工作正常了。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

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

回复:K61 RTC时钟无法递增

回复第 8 楼 于2013-12-11 14:45:21发表:
问题解决了,问题出在外接的反馈电阻有问题,我们接的是1M的电阻,18PF的两个电容。实际上看到K61数据手册里说明它的32.768k的晶振的内部有一个100M的反馈电阻,1M的电阻并接上去导致负载电阻太小了导致晶振不起震。现在我们外部只保留电容,去掉电阻。软件工作正常了。 

解决了就好,感谢的经验分享,因为从你的软件中看都是正常的。
再次感谢你对飞思卡尔产品的支持!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-19 01:23 , Processed in 0.108517 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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