新闻中心

EEPW首页>嵌入式系统>设计应用> MSP430F5529 (八)实时时钟RTC

MSP430F5529 (八)实时时钟RTC

作者: 时间:2016-11-28 来源:网络 收藏
0:选择2进制或者十六进制
1:选择BCD码
RTCHOLD:实时时钟保持位
0:实时时钟(32位计数器或者是日历模式)正在运作
1:计数器模式(RTCMODE=0)),该位置1只会使32位计数器停止;在日历模式(RTCMODE=1)日历以及预分频计数器会被停止。RT0PS和RT1PS、RT0PSHOLD和RT1PSHOLD位可以忽略。
RTCMODE:RTC模式选择。
0:32位计数器模式
1:日历模式。在日历模式和计数器模式之间的切换会重置实时时钟;计数器模式切换到日历模式会将秒、分、小时、星期和年清零,将日期和月份置1。实时时钟寄存器需要后来被软件设置。RT0PS和RT1PS也会被清零。
RTCRDY:实时时钟准备位
0:实时时钟值在转换过渡(日历模式)
1:实时时钟值可被安全读取(日历模式)。在计数器模式,RTCRDY保持清除。
RTCSSEL:实时时钟源选择位。选择时钟源输入到RTC/32计数器。在RTC日历模式这两位是不考虑的,其输入默认是RT1PS的输出。
00ACLK
01SMLK
10从RT1PS输出
11从RT1PS输出
RTCTEV:RTC时间事件指示

本文引用地址: //m.amcfsurvey.com/article/201611/322796.htm
RTC模式
RTCTEV的值
内部中断
计数器模式
00
8位溢出
01
16位溢出
10
24位溢出
11
32位溢出
日历模式
00
分钟改变
01
小时改变
10
午夜(00:00)
11
白天(12:00)

RTCCTL2 实时时钟控制寄存器2(rw-(0)表示读写为0)
RTCCALS:RTC校准标志
0:频率调整下降
1:频率调整上升
RTCCAL:RTC频率校准位
每个LSB位代表大约+4PPM(RTCCALS=1)或-2PPM(RTCCALS=0)调整频率。
RTCCTL3 实时时钟控制寄存器3
RTCCALF:RTC校准频率校准测量时选择频率输出到RTCCLK引脚(P2.6)上。相对应的端口必须配置为外围模块功能(即P2SEL=BIT6)。RTCCLK在计数模式不可用,此时保持为低且RTCCALF位的值不确定。
00:没有频率输出到RTCCLK引脚
01:512HZ
10:256HZ
11:1HZ
RTCPS0CTL 预分频定时器0控制寄存器(16位寄存器)
RT0SSEL:预分频定时器0时钟源选择位。选择时钟源输入到RT0PS计数器。在RTC日历模式该位不用关心,因为RT0PS时钟输入自动设置到ACLK(32.768KHZ)。
0:ACLK
1:SMCLK
RT0PSDIV:预分频定时器0分频,这些位控制RT0PS计数器的分频。在RTC日历模式对于RT0PS和RT1PS这些位是不用关心的,因为RT0PS时钟输出自动设置到256分频。RT1PS时钟输出自动设置到128分频。
000-111,分别表示2、4、8、16、32、64、128、256分频
RT0PSHOLD:预分频定时器0保持位。在RTC日历模式这些位是不关心的。RTCHOLD置位时,RT0PS停止工作。
RT0IP:预分频器0中断间隔。
000-111,分别表示2、4、8、16、32、64、128、256分频
RT0PSIE:预分频定时器0中断允许
0:中断不允许
1:中断允许
RT0PSIFG:预分频定时器0中断标志
0:没有定时事件发生
1:有定时事件发生
RTCPS1CTL预分频定时器1控制寄存器(16位寄存器)
RT1SSEL:预分频定时器1时钟源选择位。选择时钟源输入到RT1PS计数器。在RTC日历模式该位不用关心,因为RT1PS时钟输入自动设置为RT0PS的输出。
00:ACLK
01:SMCLK
10:从RT0PS输出
11:从RT0PS输出
(其余项同RTCPS0CTL)
上面的都为控制寄存器,操作比较复杂,下面讲到的都是数值寄存器。
RTCNT1:RTC计数寄存器1,计时器模式
RTCNT2:RTC计数寄存器2,计数器模式
RTCNT3:RTC计数寄存器3,计数器模式
RTCNT4:RTC计数寄存器4,计数器模式
RTCSEC:秒寄存器。BCD/BIN
先说明一下BCD/BIN的意思(下面同理)
前面提到可以控制日历模式的数值寄存器中的数值用BCD码或者二进制码表示。以RTCSEC为例:
当选作二进制模式时:(低6位就可以表示秒1-60)
当选作BCD模式时:(低4位表示秒的各位0-9;4-6位表示秒的十位0-6,高位不用时默认为0)
RTCMIN:分寄存器,BCD/BIN
RTCHOUR:时寄存器,BCD/BIN
RTCDOW:星期日数寄存器,因为只有1-7,所以无所谓BCD/BIN了
RTCDAY:日寄存器,BCD/BIN
RTCMON:月寄存器,BCD/BIN
RTCYEARL:年低字节寄存器,个年位以及十年位,BCD/BIN
RTCYEARH:年高字节寄存器,百年位以及千年位,BCD/BIN
RTCAMIN:分闹铃寄存器,BCD/BIN
RTCAHOUR:时闹铃寄存器,BCD/BIN
RTCADOW:星期闹铃寄存器
RTCADAY:日闹铃寄存器,BCD/BIN
//上述4个闹钟寄存器的最高位都为使能位AE,置位时相应寄存器才有效
RT0PS:预分频定时器0计数值
RT1PS:预分频定时器1计数值
RTCIV:中断向量值寄存器(16位寄存器)
8.3RTC的各种操作流程
8.3.1计时器模式
(1). RTCMODE位置0,进入32位计时器模式;
从日历模式切换到计数器模式会将计数值寄存器(RCTNT1,RCTNT2,RCTNT3,RCTNT4)和预换算计数器(RT0PS,RT1PS)全部清零
(2). 选择时钟源,并设计二级分频;
计数器的时钟可源于ACLK、SMCLK或者是RT1PS的输出。当使用RT1PS的输出作为计数源的时候,一定要先将RT0PS,RT1PS的HOLD位清零,使其可以正常工作,然后再分别配置二者的分频数。
再者,两个预分频器RT0PS和RT1PS也可以作为独立的计数器来用(级联成16位也是可以的)。通过RT0IP和RT1IP可以设置间隔。比如,选择ACLK 32768HZ作为时钟,间隔设置为256,也就是说每当计数器计到32768/256=128的整数倍时,该标志位就会置位。
(3). 32位计数器是由4个8位计数器级联而成,这能提供8位、16位、24位、32位溢出间隔。RTCTEV位选择触发哪一个溢出间隔,通过设置RTCTEVIE位,一个RTCTEV发生能够触发一个中断。计数器RTCNT1到RTCNT4,每一个都可以单独的访问,并可能被写入。

评论


技术专区