打印
[MSP430]

紧急求助!在线等!关于MSP430内置RTC误差

[复制链接]
3445|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qq57566677|  楼主 | 2013-8-6 09:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的MSP430F5438A,内置RTC误差大的无法忍受,内部校准功能也用上了,结果是1分钟快0.6秒!

我觉得这东西本质就是个计数器,只要32768晶振没问题,不可能差多少(可以保证晶振确实没问题)。现在板子都做好了,这可怎么办?好后悔没选择外置RTC。诸位有遇到这个问题吗?在线等帮助!

相关帖子

沙发
wlq_9| | 2013-8-6 09:40 | 只看该作者
单片机只是计数器,问题还是在你的晶振上。
晶振没问题,就出在你的负载电容上。

使用特权

评论回复
板凳
ayb_ice| | 2013-8-6 09:44 | 只看该作者
不可能误差这么大吧

使用特权

评论回复
地板
qzc13457| | 2013-8-6 09:55 | 只看该作者
在板子空着的地方加外置的吧,动动手

使用特权

评论回复
5
dirtwillfly| | 2013-8-6 10:09 | 只看该作者
楼主用的内部RTC,这个误差确实有些大。我在另一个帖子里给你回复了

使用特权

评论回复
6
NE5532| | 2013-8-6 10:52 | 只看该作者
楼主你片内RTC用的什么时钟源?片内时钟还是片外的32768晶体?RTC只是计数器,肯定是时钟源有问题。片内片外RTC一般只有功耗的差别,不存在精度的问题,不要把方向都找偏了啊。

使用特权

评论回复
7
qq57566677|  楼主 | 2013-8-6 10:55 | 只看该作者
我的RTC是单片机内置的,但晶振是外置的,而且我换了两个了,这个晶振在别的地方用过,一天的误差不超过2秒的。

使用特权

评论回复
8
qq57566677|  楼主 | 2013-8-6 11:05 | 只看该作者
这个是我的程序,主要是对时钟ACLK的配置。我就怕出问题,所以配置的很简单,请高手帮忙看看:

ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz

void CLK_Init(void)
{
    // Initialize LFXT1
    P7SEL |= 0x03;                                    // Select XT1
    UCSCTL6 &= ~(XT1OFF);                     // XT1 On
    UCSCTL6 |= XCAP_1;                        // Internal load cap

    do
    {
        UCSCTL7 &= ~XT1LFOFFG;                // Clear XT1 fault flags
    }while (UCSCTL7&XT1LFOFFG);               // Test XT1 fault flag
   
    UCSCTL6 &= ~(XT1DRIVE_3);                 // XT1 now stable, reduce strength
}

配置好XT1LF以后,ACLK会默认使用XT1LF的。  

使用特权

评论回复
9
yixin1937| | 2013-8-6 11:07 | 只看该作者
我也发现过rtc不准的问题~~但是我因为有几点原因造成的~可以分享一下~
1、硬件问题(不必多说)
2、程序问题~这个要说道一下~ 一般情况下rtc应该有些误差,但是不应该是差很多的~一般情况下,在RTC中断中,程序太多~开关定时器等延误的~可以适当缩减一下程序。
3、还有个办法~这个是歪招~~就是要是你能确定,1分钟差0.6秒的话 那么可以手动做一下补偿~
4、还有个办法~用什么东西例如通信,时常比对校准

使用特权

评论回复
10
qq57566677|  楼主 | 2013-8-6 11:16 | 只看该作者
再请问大家,用430的内置RTC时,32768晶振旁边要加电容吗? 我用的是内置电容,通过XCAP寄存器配置的,我给它配置了各种不同的值,都是差好多。

使用特权

评论回复
11
NE5532| | 2013-8-6 11:22 | 只看该作者
qq57566677 发表于 2013-8-6 11:16
再请问大家,用430的内置RTC时,32768晶振旁边要加电容吗? 我用的是内置电容,通过XCAP寄存器配置的,我给 ...

先看你的芯片手册,要不要求加电容,是串联谐振还是并联谐振,电容怎么加,加多大,还有你的晶体本身的匹配电容值可能跟手册上的不一样,要么买一样的晶体,要么自己调。

使用特权

评论回复
12
qq57566677|  楼主 | 2013-8-6 13:51 | 只看该作者
书册上是可以不加电容的,可以用内部电容匹配。 刚才我外加了20pf电容,结果还是一样.

使用特权

评论回复
13
coody| | 2013-8-6 14:27 | 只看该作者
我一直是外挂的RTC,比如DS1302

使用特权

评论回复
14
NE5532| | 2013-8-6 15:23 | 只看该作者
qq57566677 发表于 2013-8-6 13:51
书册上是可以不加电容的,可以用内部电容匹配。 刚才我外加了20pf电容,结果还是一样.  ...

你用的晶体工作方式(串联/并联谐振)和匹配电容的值与手册上一致么?

使用特权

评论回复
15
yewuyi| | 2013-8-6 15:58 | 只看该作者
直接示波器看振荡频率是否真的是32768

其次看自己操作相关计数器的代码是否有不当之处造成计时不对。

使用特权

评论回复
16
threetigher| | 2013-8-31 15:08 | 只看该作者
coody 发表于 2013-8-6 14:27
我一直是外挂的RTC,比如DS1302

这种是内置电池的吧,价格几何?

使用特权

评论回复
17
threetigher| | 2013-8-31 15:09 | 只看该作者
yixin1937 发表于 2013-8-6 11:07
我也发现过rtc不准的问题~~但是我因为有几点原因造成的~可以分享一下~
1、硬件问题(不必多说)
2、程序问 ...

可以允许RTC不准,但是一定要稳。
也就是误差要稳定,那么就能自校准了。

使用特权

评论回复
18
liuwg119| | 2013-8-31 15:11 | 只看该作者
你的中断程序实在太长了。难怪误差那么大! 建议把尽可能多的代码放在主控端。
实在搞不定,可以来这里找我 Our RS-E瑞萨单片机工程网 有很多类似的例子.单片机都是相通的

使用特权

评论回复
评论
isunnyboy 2017-12-26 22:31 回复TA
我是来挖坟的。。 我觉得中断函数长了没有必然的影响,,只要你赶在下一次中断前及时退出中断就可以了。 刚写了个430G的模拟RTC,也是有点误差大 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

24

帖子

0

粉丝