高精度RTC SD2403AP在智能路灯控制器上的运用
2015-11-04
摘要
本文介绍了高精度实时时钟SD2403AP在路灯控制器上的应用,通过读取标准时间而确定开关灯的时间,并显示实时时间
关键词:RTC 高精度 实时时钟 智能路灯控制器
●引言
电子世界错综复杂的信息让时间成为电子产品的一个重要依据,在各个电子领域,其有效的而及时准确地传达信息,方便了人们的计算操作。如:以准确地时间来区分事件的先后,以便查找或排除故障,并可以通过时间段的不同来计算某事物的使用量。
下面就来介绍下深圳市兴威帆电子技术有限公司的SD2403AP的具体应用
●SD2403AP介绍
1. SD2403AP特性
※ 1.0uA 功耗(VBAT =3.0V,Ta=25℃)。
※ 工作电压:1.8~5.5V,工作温度:-40℃~+85℃。
※ 标准 IIC 总线接口方式,最高速度 400KHZ(4.5V~5.5V)。
※ 年、月、日、星期、时、分、秒的 BCD 码输入/输出,并可通过独立的地址访问各时间寄存器。
※ 闰年自动调整功能(从 2000 年~2099 年)。
※ 内置 12 字节通用 SRAM 寄存器。
※ 内置报警中断,频率中断,倒计时中断。
※ 可设定并自动重置的单路报警中断功能(时间范围最长设至 100 年),年、月、日、星期、时、分、秒报警共有 96 种组合方式,并有单事件报警和周期性报警两种中断输出模式。
※ 周期性频率中断输出:从 64HZ~1/16HZ~1 秒共十二种方波脉冲。
※ 自动重置的 8 位倒计时定时器,可选的 3 种时钟源(64HZ、1HZ、1/60HZ)。
※ 内置时钟精度数字调整功能。
※ 具有一个后备电池输入脚 VBAT,芯片依据不同的电压自动从 VDD切换到 VBAT或从VBAT切换到 VDD。
※ 在 VBAT 模式下,芯片具有中断输出允许或禁止的功能,IIC 总线 0.5 秒自动复位功能(从 START 命令开始计时)。
※ 内置三个时钟数据写保护位,VBAT模式 IIC 总线通信禁止,上电复位电路及指示位。
※ 内置电源稳压,内部计时电压可低至 1.5V。
※ 芯片管脚抗静电(ESD)>4KV。
※ 内置晶振,时钟精度为±5PPM(在 25℃±1℃下),即年误差小于 2.5 分钟。
2. SD2403AP原理框图
3. SD2403AP引脚定义
4. 中断(08H~13H地址)
本文用到了时钟的定时功能,具体如下:
SD2403AP有3种不同的中断,它们由控制寄存器2(10H)中的位INTAE、 INTFE、INTDE位来使能:
当报警中断产生时,置中断标志位INTAF为1;当倒计时中断产生时, 置中断标志位INTDF为1;频率中断没有标志位。标志位被置1后,需要手动清除。
三种中断都是以INT脚为输出脚, 通过控制寄存器2中的INTS1、INTS0位来选择确定INT脚输出何种中断:
INT脚中断输出选通表
报警中断
当INTAE=1时报警中断被允许,报警中断何时发生由时间报警寄存器(07H~0EH)来确定。这其中07H~0DH依次用于存放报警时间的秒、分钟、小时、星期、日、月、年数据,除小时报警数据寄存器的最高位始终为”0” 、星期位的定义不同以外,其它的格式与实时时钟寄存器相同。
0EH为时间报警允许寄存器,如下:
时间报警允许寄存器的使能位是用于确定哪些时间报警寄存器(秒、分钟等)需要与实时时钟寄存器之间作比较。当实时时钟运行时,一旦被允许的报警寄存器均与对应的实时时钟寄存器相匹配,就会触发一次报警中断,同时报警中断标志位INTAF位被置”1”
当设置 INTS1=0、INTS0=1时,即允许报警中断从INT脚输出。该报警中断有两种模式,即单事件报警和周期性报警, 模式的选定由控制寄存器2中的报警中断模式位IM的值来定:
IM=0 ,单事件报警,输出低电平直至INTAF位清零
IM=1 ,周期性报警,输出低电平有效、宽度为250MS的周期性脉冲直至INTAF位清零
为清除报警中断,可通过写操作将控制寄存器1的INTAF位置”0”。但当ARST位置为”1”,则在控制寄存器1被读取时,INTAF位会自动清零。
●智能路灯控制器设计
本文采用大家使用普遍ATMEL89C51单片机做主控芯片。通过对时间的调用配合光感信号达到对路灯的开关智能控制,该系统可广泛应用于道路灯、霓虹灯、航标灯、夜景灯、高速公路照明灯、庭院灯及所有室外照明灯具的控制,其系统框图如下
硬件设计
图中,主要给出SD2403AP的具体接线电路,OUT为各位的控制信号。可接三极管后放大给继电器输出,从而控制路灯的开关。
在此设计中MCU通过P3.4,P3.5模拟IIC总线与SD2403AP进行通信,并通过INT读出中断信号,本设计设置的每天早上6:30(此时间可
以由用户通过KEY键进行修改)定时关掉OUT1路的输出。OUT2,OUT3等由光线控制。现以OUT1的关断做例子分析
软件设计
安排SD2403AP在06:30输出一个低电平的信号,MCU通过轮循的方式查到此电平并设置OUT1为0,从而关断继电器并关段路灯等。
这里将写入SD2403AP的寄存器列出来,如表:
读时间的时候用到的是00H——06H里面的数值,为BCD码。
控制寄存器和中断在07——13H。
本设计设置的中断涉及的寄存器有08H,09H,EH,FH,10H
部分软件如下:
打开“软锁”,即设置WRTC1,WRTC2,WRTC3为1,才能写数据。写完数据关闭软锁
TIMEWRITE_ON:
SETB SDA
SETB SCL
LCALL DELAY
CLR SDA
LCALL DELAY
CLR SCL
LCALL DELAY ;I2C START
MOV R6,#64H
LCALL SEND
MOV R6,#10H ;设置时钟数据的内部起始地址为10H
LCALL SEND
MOV R6,#80H ;置10H的WRTC1为1
LCALL SEND
CLR SDA
SETB SCL
LCALL DELAY
SETB SDA
LCALL DELAY ;I2C STOP
LCALL IICSTART ;具体程序同上I2C START,此处略
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#0FH ;设置时钟数据的内部起始地址为0FH
LCALL SEND
MOV R6,#84H ;置0FH的WRTC2。WRTC3为1
LCALL SEND
LCALL IICSTOP ;同上,I2CSTOP
SEND: MOV A, R6 ;发送一个字节
MOV R2,#08H
SEND1: MOV C,ACC。7
MOV SDA,C
LCALL DELAY
SETB SCL
LCALL DELAY
CLR SCL
LCALL DELAY ;SEND A BIT
RL A
DJNZ R2,SEND1
SETB SDA ;置输入状态
SETB SCL
LCALL DELAY
MOV C,SDA
JC ERROR
CLR SCL
LCALL DELAY
RET ;READ A BIT
ERROR: LJMP 0000H
2,写2403的中断控制寄存器以实现6:30输出一个低电平
LCALL TIMEWRITE_ON
LCALL IICSTART
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#10H ;设置时钟数据的内部起始地址为10H
LCALL SEND
MOV R6,#92H ;ALARM
LCALL SEND
LCALL IICSTOP
LCALL IICSTART
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#0EH ;设置时钟数据的内部起始地址为0E
LCALL SEND
MOV R6,#06H ;报警允许小时,分钟
LCALL SEND
LCALL IICSTOP
LCALL IICSTART
MOV R6,#64H ;发送时钟SD2400的器件地址(写)
LCALL SEND
MOV R6,#08H ;设置分钟报警地址
LCALL SEND
MOV R6,#30H ;MINUTE
LCALL SEND
MOV R6,#06H ;HOUR
LCALL SEND
LCALL IICSTOP
LCALL TIMEWRITE_OFF
●结语
SD2403AP是一款高精度实时时钟芯片,在此智能路灯控制器中发挥着重要的作用。其芯片可以广泛用于消费和工业领域的诸多平台,如电子式电力测量仪(数字式电力表)、数码相机、数码摄像机、游戏机、DVD录像机、便携电话等产品
参 考 文 献
[1] 沙占友,王彦朋,孟志永,单片机外围电路设计,电子工业出版社,2003.1
[2] SD2403APIDATASHEET,深圳兴威帆电子技术有限公司,2008