摘要:简要介绍了实时时钟ISL1208的原理、特点、功能及应用,并给出了与单片机的硬件连接图及控制程序。
7l.eC9b0e8m8t)C$N\G44606关键词:实时时钟;MCS51;I2C接口;串行通信;C51
1{)q5}9{I7P }u44606
r+Y;Sg:i446061.引言电子园51单片机学习网1aV%fR1X'xS'K
8w|rP"eT2n4zx44606INTERSIL公司推出的ISL1208是一种I2C接口、低成本、低功耗实时时钟,它带有定时与晶体补偿、时钟/日历、电源失效指示器、周期或轮询报警、智能后备电池切换和后备电池供电的SRAM等功能。振荡器采用外部低成本32.768KHz晶振,日历可精确到2099年,闰年自动修正。其强大的报警功能,可被设置成任意时间点报警或固定频率输出。若采用3.0V/3.6V锂电池供电,供电电流仅为400nA,最多可持续供电长达10年。另外,后备电源输入引脚Vbat还允许断电时使用大容量后备电容供电以保证正常工作几个月左右。电子园51单片机学习网'NT4|4| X9c7_7{ k5B
电子园51单片机学习网[!L gQLwo~2. ISL1208简介电子园51单片机学习网oF8{9H3{z)t M
b2~0qxg \C5S44606 ISL1208引脚如图1所示:
3x2X?L [S&|tY0I44606s!r;U3|/i5X44606
图1 ISL1208引脚示意图
U s k$ot2u nQ0?U]44606其中:引脚X1、X2接外部晶振输入端,可直接以32. 768kHz的晶体源驱动;Vbat接后备电源/电容,该引脚不用时接地;SDA为串行数据输入输出端;SCL为串行时钟输入端;IRQ/Fout为中断/频率输出端,可用作中断/频率输出;Vdd和GND为电源和接地端。
*h6~d0X9^(h)v44606eVd@Ot+F44606
3. ISL1208内部结构及其工作原理电子园51单片机学习网 KW"Q4aSL:r I
(z0Bi0bBDj:u44606 ISL1208内部结构框图如图2。由图可知,ISL1208主要包括:I2C接口控制单元、实时时钟控制逻辑、时钟分频器、电源管理单元和寄存器单元。其中寄存器单元被分成四段:实时时钟、控制与状态、报警寄存器和用户SRAM;这四段寄存器各自含有不同的功能:实时时钟和报警寄存器用于写入/读出时间值和报警值,其写入形式为BCD码;控制与状态寄存器可完成对其他寄存器读写控制、报警与频率输出控制、模拟与数字微调控制等功能,其存储映射图如表1。电子园51单片机学习网1~5u9I F4x*N:ca|
电子园51单片机学习网z8G*BI1Uhu
图2 ISL1208内部结构框图
iGvz)@4`:w]/V44606表1 寄存器存储映射图电子园51单片机学习网!n k2G1_IQ%E8Fm;a T
电子园51单片机学习网SL `v N F ADDR电子园51单片机学习网HCx#s+Ws,g5@&c|kl&Q | 电子园51单片机学习网Yo [tH{/y SECTION电子园51单片机学习网lUy)Wd4Y%A%^P | REG电子园51单片机学习网;p7G M8OO!C NAME ? LHI7~ xZQ44606 | BIT电子园51单片机学习网U#NqN(xL | |||||||
7 {;X I s)tO_0P_44606 | 6 EL c{ i$~(i44606 | 5电子园51单片机学习网P|~EFv ?/Jc:f`#\ | 4 q*w/OuC)j44606 | 3电子园51单片机学习网EIu+l/mo*}j | 2 d;kG$C Q9VU44606 | 1 2pp O;G7D(d!K e'|0p44606 | 0 w8srx'Q44606 | |||
07h )i\f'D]O-zq44606 | 电子园51单片机学习网 C6] W6R9T Control :[{~_O]n/A R44606and GL8i"C(TRrT F44606Status电子园51单片机学习网JrN}3Aq.X | SR电子园51单片机学习网+Q,W aQ Z9}6XG6X | ASRT r |:W3D {I'~v"HG44606 | XTOSCB od f_3L{(oL44606 | Reserved )@xT6f,M.E_v44606 | WRTC电子园51单片机学习网`NQv5k)Ay.o]8s*I | Reserved B_cwBI44606 | ALM电子园51单片机学习网0}.d^Qd | BAT 5W,Q@?/S/J0kd44606 | RTCF 4P4ds1E&R%^ fEQXRP44606 |
08h 6|ikO7gwB#d]44606 | INT j%M-GhW0\'N.x44606 | IM r8zs5y.`d h9POc:N44606 | ALME电子园51单片机学习网i {+h _:i0yS}f.mw | LPMODE电子园51单片机学习网^2]EC4AV | FOBATB电子园51单片机学习网%h$lM rF lB*Fj | FO3电子园51单片机学习网xQ {}8eK!X | FO2电子园51单片机学习网9W pa}?(c}wv c!b | FO1电子园51单片机学习网#?rwa"S$K9h{;C | FO0 S$e1uV:qg.F44606 | |
09h电子园51单片机学习网P"Q$^zK9g0O | Reserved 8P H I/_h&dC44606 | |||||||||
0Ah Ib#B;F2^7bT1p HC{gD44606 | ATR电子园51单片机学习网ND$h7q%n3n"e? slwC~ | BMATR1 Mhe$R2K|J$F3If ~44606 | BMATR0 H3G1t#t(u;Yc/_44606 | ATR5电子园51单片机学习网XEq KA%f(~Q k | ATR4电子园51单片机学习网b{(cL V | ATR3 'b&x:@"E G%X44606 | ATR2电子园51单片机学习网 ^2A_HMl#d@v | ATR1电子园51单片机学习网.v1w6|1W7ah3tTw!mM8uX | ATR0 A$tvDW(d8b44606 | |
0Bh电子园51单片机学习网af qNVEE%q | DTR L,rC u&e0C] Gw44606 | Reserved电子园51单片机学习网E;L:@ bOhP"x | 电子园51单片机学习网0H:?(YNZCm(G | 4t6qW(}s Z&f44606 | 电子园51单片机学习网n)l7pJiv/O | *s9[]ZW%XU44606 | DTR2电子园51单片机学习网aQ5aYT#K | DTR1 '] gO3U0H$U44606 | DTR0电子园51单片机学习网uuP }QOx |
0K'a WX o(sGxS44606控制与状态寄存器(Control and Status)
1|!h4P(R&vRhZr44606控制与状态寄存器包括状态寄存器、中断与报警寄存器、模拟微调与数字微调寄存器。电子园51单片机学习网*c)_^ r:pUB/}
状态寄存器(SR):用来控制RTC失效、电池模式、报警触发、时钟计数器写保护、晶体振荡器使能以及状态位的自动复位或者提供相应的状态信息。在时钟上电时,需将写RTC使能位WRTC置“1”,以便启动时钟计数。
/upGZ[5d&C+S44606中断控制寄存器(INT):主要用于控制时钟的周期性和单事件报警。其中频率输出控制位FO3-FO0使能/禁止频率输出功能,并选择IRQ/FOUT引脚的输出频率(2-5Hz-215Hz)。在频率模式被激活时它将覆盖IRQ/FOUT引脚上的报警模式。报警使能位ALME使能/禁止报警功能,中断/报警模式位IM使能单周期定时事件(IM=0)/周期定时事件(IM=1)。电子园51单片机学习网:~%]+GP4nya
模拟微调寄存器(ATR):ATR0至ATR5为六位模拟微调位,可调整片内负载电容(CX1、CX2)的值,这一电容值用于RTC的频率补偿,其每一位都有不同的电容调节比重。有效的片内串联负载电容CLOAD 的范围从4.5pF至20.25pF,中间值为12.5pF(默认)。CLOAD可通过X1/X2引脚之间两个数字控制电容器CX1和CX2调节。电子园51单片机学习网(S'^eS9e
数字微调寄存器(DTR):数字微调位DTR0、DTR1和DTR2用来调整每秒钟的平均计数值和平均误差以获取更好的精度。其中DTR2为符号位(DTR2=0频率补偿>0,DTR2=1频率补偿<0),DTR1和DTR0为刻度位:DTR1提供40ppm调整,DTR0提供20ppm调整。用以上三位可以表示-60ppm至+60ppm的补偿范围。
)`5M SC$y.fS1\%t,@44606$h(wt6I0tlx/b1CC446064. 应用举例
d$CTO;_Yq44606|5e6rq r@5]6E446064.1 硬件结构电子园51单片机学习网*C/@ y"Gu Z
电子园51单片机学习网;Vq!~cU/FISL1208具有I2C接口,使其便于与各类处理器连接且硬件结构十分简单,传输速率最高可达400Hz。硬件结构如图3。其中时钟输入口SCL、数据输入输出口SDA分别与AT89C51的P1.6、P1.7腿相连,中断输出口IRQ/Fout接外部中断INT0。AT89C51通过RS232口与计算机相连,通过计算机对实时时钟产生控制。Vbat引脚接后备电容器。电子园51单片机学习网 ~c ^$Hj"K"]Q
电子园51单片机学习网G1B @K'z-MIX
图3 ISL1208与AT89C52连接图
6v)}~ Z/^9L?8E44606 电子园51单片机学习网r$aU?H g5^"aC4.2 软件设计电子园51单片机学习网;~"}_;m9t
由于ISL1208为I2C接口,因此其接口协议也满足I2C规范,这里不再累述。需要提到一点是:在每次访问寄存器时,应先输入一个有效的辨识字节。该字节高7位(1101111)为器件辨识符。辨识字节的最后一位定义进行读/写操作,当其为“1”时选择读,为“0”时选择写。图4为ISL1208读/写时序图。电子园51单片机学习网@.P$Z$fM?s?!HF(o1[D g
电子园51单片机学习网%T9|"G mf/B Wu~p*L
图4 读/写ISL1208电子园51单片机学习网 Ff0z ~&Tc zX,y
@g`{rO\44606对于ISL1208来说,由于其内部结构设计,可以很容易的实现2nHz中断输出和每分、每天至每年一次报警,但要求具体几分钟、几小时报警一次还需在程序的编制上要比较注意。以下程序为通过计算机、单片机来控制ISL1208每5秒钟产生一次中断程序,上位机程序由MATLAB编写[4],单片机程序由C语言编写,由于篇幅有限仅列出部分单片机程序:
TA7B$^6HlELYZ;s5m446062Vb TX|44606
)oKw$]C|44606#include <reg51.h>
.t Ok{yBkb T44606'B!R.Q e/r44606 #define ISLwr 0xde /*写辨识字节*/
xo"H/RU'm4`44606 电子园51单片机学习网gb%J)Eb#define ISLrd 0xdf /*读辨识字节*/
,?6W:\E4Y1|q%iP44606 电子园51单片机学习网l"@w2f&Jfa\e/*--------ISL1208管脚配置---------*/电子园51单片机学习网m!U:L(?Yc\|L
U%~^4Gb+x44606 sbit ISLSCL="P1"^6; /*时钟*/
[A jF_$b;?44606 电子园51单片机学习网'A!\J*IrJv6b7](^ Qsbit ISLSDA="P1"^7; /*数据*/电子园51单片机学习网 i };}Xm [
0D#vU,^s)TB44606void sdelay(); /*短延时*/电子园51单片机学习网+e-pNA[*O i
0hI3g`hju.B8cNu44606 void ISLstart(); /*I2C起始位*/
o$B*M;S ~I3Y44606 电子园51单片机学习网%{*s0D"G-?0~5},v6v(t tvoid ISLstop(); /*I2C停止位*/电子园51单片机学习网0| x*m6O zer
电子园51单片机学习网(|$m2N+x6[/y,Tvoid GetACK(); /*主机等待应答(GACK)*/电子园51单片机学习网_u4lG6e;Nc
电子园51单片机学习网fbc ]}~ CL A:Avoid OutACK(); /*主机应答(OACK)*/电子园51单片机学习网9X a-tg1\ N"^
电子园51单片机学习网%}K"_0Y7Y:h/*--------读/写ISL1208函数--------*/
5kVMn/]44606 电子园51单片机学习网J8bypoO4ivuunsigned char readISL1208(); 电子园51单片机学习网 S&iwIyO,X
电子园51单片机学习网+^0bnU3TU-T-Hvoid writeISL1208(unsigned char datas);
LX D]5w+Q44606*O9fEr1K ~(}1Z44606/*-----------读/写寄存器-------------*/
&]JZ Z6F~T.r"g44606:qgQ4S;k"a.}44606 void writeREG(unsigned char adds,unsigned char datas);电子园51单片机学习网z(T-l.JN8\Z2I[)\
电子园51单片机学习网RBk6GOunsigned char readREG(unsigned char adds);
C_7T'U4`44606 电子园51单片机学习网Jv(e!@AOgyFbit flag="0"; /*启动时钟报警标志位*/
/AE8d6{Y w6Z;fW44606u~Z ~-@^44606 unsigned char alarm="0"; /*报警时间参数*/
7p(z3O6yw44606 电子园51单片机学习网0P8_ x!V(a2m![main()
J'{9gt7BP![ j44606 电子园51单片机学习网&e*A*tk.n,H8ly3d7H{ ……………….. /*初始化*/电子园51单片机学习网8u1F }3~9A_4YG
"i:}2cH#Bd44606 for(;;) /*等待上位机发送命令*/电子园51单片机学习网l.Q]TW[h;p r
+l\ k| d9O44606 { if(flag = =1)
a(A&R j?C}2a#Eiw44606C1W!p`4V2}9h44606 break; }
&fKS3L3i} Y44606z'g&b6C)g"x@O44606/*写状态寄存器,写RTC使能,报警自动复位*/电子园51单片机学习网9cI"e,K/@)Z.@
电子园51单片机学习网)O,BCe$ppVwriteREG(0x07,0x90);电子园51单片机学习网A'r,fH5g,oT;W
6KS'w!VR%]44606/*写中断寄存器,单事件报警,中断使能*/电子园51单片机学习网0T)oT"CY2vt Q)V:n
9OVma/~S6v+i3D44606 writeREG(0x08,0x60);电子园51单片机学习网+M um+sU.A$w*X
电子园51单片机学习网 h8Y)g"@)yqu7mW'r/*写报警寄存器,报警使能*/电子园51单片机学习网F]5B1bO [
,AH3Me X8X~44606 writeREG(0x0c,0x81);电子园51单片机学习网Glx Y0i)H| k
电子园51单片机学习网9o~OfF"E^b/*写时钟寄存器,启动RTC*/电子园51单片机学习网,a kMjZW,h ej/I
电子园51单片机学习网lEo;A9TA`vwriteREG(0x00,0x00);电子园51单片机学习网W+F2eI4w0J
电子园51单片机学习网6H$h S-@llJfor(;;); /*等待*/ }电子园51单片机学习网 O~)JO {
(Hgo(v ]7CLR c*]44606void writeREG(unsigned char adds,unsigned char datas)
E+] J-[3cJ44606 电子园51单片机学习网`3CG~(_\~xn{ ISLstart();电子园51单片机学习网 EJe?*@h
||&xJ-Yi_ U44606 writeISL1208(ISLwr);
L#N Vy1fV*|"o[44606#rNY LH3kw\cy44606 GetACK();
b'h fG+SId8M.RX44606{ N+?a]k"~ok cn }44606 writeISL1208(adds); /*写地址*/电子园51单片机学习网6JMxJ }K ~
o+S%x9Q#N0K a9c44606 GetACK();电子园51单片机学习网(A7?$]UjL
Ju;I xn4r9Y44606 writeISL1208(datas); /*写命令/数据*/电子园51单片机学习网 N}$siE fJ {T
电子园51单片机学习网J#J8VD\&_LxK~GetACK();
&n-s9i*fd1\ n7b] F44606 电子园51单片机学习网rojf},xY?ISLstop(); }电子园51单片机学习网/o}!| x T8A`/s
电子园51单片机学习网Cq!Y,h*punsigned char readREG(unsigned char adds)
VHU|cw;b E44606 电子园51单片机学习网Ja+n4?8\ q]{ unsigned char reg;电子园51单片机学习网1@@A"d*b7m
电子园51单片机学习网)}lk q S#y-Q)oISLstart();
~{7ze#ADs#~44606 电子园51单片机学习网 F"z'l3JNnD+UwriteISL1208(ISLwr);
.d!Wj9X2{44606 电子园51单片机学习网|-C1PiZ {.hg*kGetACK();
a p+l^$RUB^d44606W1T?OA44606 writeISL1208(adds); /*写地址*/
[TF[4N] u6~ rD%{k44606M]IgVG44606 GetACK();
YvQ&lbq}5}Y44606 电子园51单片机学习网/rri-km3g*TISLstart();电子园51单片机学习网UL.A#QS1g QS
电子园51单片机学习网8HQe7F%G1^C\writeISL1208(ISLrd);电子园51单片机学习网2{ e1QC`!y*u/s6FBI
电子园51单片机学习网 M{ U B6R'qGetACK();电子园51单片机学习网Q0w(M z Ul }V
|.Q5@*I_[/DT44606 reg="readISL1208"(); /*读就寄存器值*/
Hc(n)^3c7UJ3|;R+C44606C2W:dHU3y44606 OutACK();
THA1E"VL"xw&t446069|F3Fo4tCk-VZO1o44606 ISLstop();
;Z On2d5RK44606d+W AtBi~e44606 return (reg); }电子园51单片机学习网"c.H8`(D$Kv$e
Z2P)B)c5Y xf9T N44606 unsigned char readISL1208()电子园51单片机学习网"Z(C4a)IQ}
电子园51单片机学习网-I`$_ P/I.l'q{ unsigned char i,k=0;
U#`i"[1T-v!C&MU446063m^3h8R8a1S[u,Z&O+t44606 ISLSDA="1";
w6Q+U'r/o%E44606iq[F+b44606 for(i=0;i<8;i++)电子园51单片机学习网1F/\#Un2k!G o_b#E
~x*^S2bz'r1D7G6b0m44606 { ISLSCL="1";电子园51单片机学习网Q0vj/A2e2R cOf
电子园51单片机学习网3Rc)D/R(w bLWEk="k"*2;电子园51单片机学习网b*J;Y6e@g.z,lJ
电子园51单片机学习网1m ?2j5dJjif(ISLSDA==1)
~Z+^R%~44606 电子园51单片机学习网GSa!rr)kk="k"+1;
;}Q%K6LP44606 电子园51单片机学习网,W[I&eVp`"ObqISLSCL="0"; }
(g'J'Ct#a ?#sDQ44606 电子园51单片机学习网D7{ l"j1Swreturn (k); }电子园51单片机学习网1`.RB)p[*x-eN#Qb
a1r)e _x&t| |`44606 void writeISL1208(unsigned char datas)电子园51单片机学习网Pw*I4\{U8Z
电子园51单片机学习网d5w,K#_w4K-ph{ unsigned char data i;
,M Y,n'P g&aW44606u[/te||44606 ISLSCL="0";
"O8vJ&Nl3yv44606 电子园51单片机学习网#] YVU`%]9FCfor(i=0;i<8;i++)
`(L&VV w6B%z44606 电子园51单片机学习网B]ucvu ]5co{ ISLSDA=(bit)(datas&0x80);电子园51单片机学习网3g!rnwHJSe-Y)tV
电子园51单片机学习网|&c/DhWibdatas="datas"<<1;
h)afa1N44606 电子园51单片机学习网2y}4v0yc8dsdelay();
sU4pm |{446064k%}'nJ`| rY44606 ISLSCL="1";电子园51单片机学习网 `Z*fN&R1G {BD pM
电子园51单片机学习网_qu-k*Ghgsdelay();
KL$xqp5p R44606u)hNzss2x44606 ISLSCL="0"; } }电子园51单片机学习网 N;vJs:b U5c
2K E)w;cl;Z44606 void int0() interrupt 0 using 1 /*外部中断0处理函数*/
(kA(d"B#A#Rp oz44606.k2HB7BAD44606{ unsigned char temp="0",reg;电子园51单片机学习网D8U-cT_gg*t
电子园51单片机学习网x K,O)oS`JBL;aZ1p/*单报警模式,5秒/次报警时间算法*/
5C2i#? ?P^n n44606 电子园51单片机学习网"@)\1EQ)Cq8U:Kalarm=(alarm+5)%60;电子园51单片机学习网YCj'yY1i
电子园51单片机学习网6z t\? |iPH:Itemp="alarm/10";电子园51单片机学习网|1o*z Y7fzn0T
电子园51单片机学习网P%E6SL#K3aQR q\(Ntemp<<=4;
!W] { r V0@cG44606$t4q'd'BzcOL44606 temp=(temp+alarm%10)|0x80;电子园51单片机学习网i_/D-rjn
ybwa dDY/i44606/*读状态寄存器清除报警标志*/
&?4h'Qh4^44606 电子园51单片机学习网8K.h3s}1pd,Sreg="readREG"(0x07);电子园51单片机学习网 ]*@6k!yl(Qk
电子园51单片机学习网/X*\-d"a5@/*写报警寄存器,确定下次报警时间*/
-V/v~Td#t h*kA44606 电子园51单片机学习网'~*N T3Z&OJ{9mi9YwriteREG(0x0c,temp); 电子园51单片机学习网%v(F ~8o/`*oG8W L e
z2s:P(jOd%RH&B$t2y44606 }电子园51单片机学习网#r-Gq _-`1C@S#t
A.|#u_}+]3k)|446064.3 后背电容器的使用电子园51单片机学习网0J U?2~5?K gM
Fl?7y]P&T3h(m&x&Qv C44606 具体电路结构如图3。电容器的大小通过计算得出:若后背电容供电时间为两个月且Vcc=5.0V,Vbat电压从4.7V下降到1.8V(时钟最低工作电压)。假定二极管漏电流ILKG很小并可忽略。则电容充电/放电方程为:IBAT=CBAT*dV/dT,整理后得后备供电时间:dT=CBAT*dV/ IBAT。由于IBAT随VBAT基本上呈线性变化,这样IBAT可近似取两点之间的平均值。IBAT与VBAT之间的典型线性关系方程式为:IBAT=1.031E-7* VBAT +1.036E-7 A
0l2Omayj44606若已给出两点电压,则平均电流IBATAVG=5.155E-8*(VBAT2+VBAT1)+1.036E-7 A电子园51单片机学习网p] d5`Aw)vZ
结合以上方程整理后得后备供电时间TBACKUP=CBAT*(VBAT2 -VBAT1)/IBATAVG s
6p.X+]%MIV44606将上述方程改写为:CBAT=TBACKUP* IBATAVG /(VBAT2 -VBAT1)电子园51单片机学习网C.X1U#QT$y1m#Iy8DsE
其中:TBACKUP=60天*86400秒/天=5.18E6 s,IBATAVG=4.387E -7 A,VBAT2=4.7V,VBAT1=1.8V.则CBAT=5.18E6* 4.387E-7 / 2.9 =0.784 F,如果要包括30%的容度,则最坏情况下的电容值应为CBAT=1.3*0.784=1.02 F.电子园51单片机学习网{:wu8|w)]`rY
电子园51单片机学习网0}8S#i,A:EK Dnl/^d5. 小结
_ D*[ uhgf3J)U"Ms44606ISL1208是一种小巧(SOIC封装)、低功耗、低成本的实时时钟芯片,集时钟、日历、RAM、电源故障检测、报警功能由于一身,硬件结构简单、编成简便、精度高,在多功能电表、HVAC设备、音频/视频元件、寻呼机/PDA、家用电器及其它工业/医疗/汽车电子产品中都有十分广泛的应用前景。电子园51单片机学习网,UeOW;w3Q u
#|#oB%jiE0E7g44606参考文献
3a~1Jhd'io446061. INTERSIL I2C Real Time Clock/Calendar ISL1208 Data Sheet. October 29,2004.
'H!z8JV].d*?44606 电子园51单片机学习网Z,ENB5\k_#wEk2.徐爱钧,彭秀华. 单片机高级语言C51应用程序设计. 电子工业出版社,1998年6月.电子园51单片机学习网Q]Vnb` a)sG
电子园51单片机学习网? `Zns3.张道明,郝继飞. 基于MATLAB的MCU串行通信. 信息技术与信息化,2004(5).
]^ cn:l0qO#o {$o2E44606
文章评论(0条评论)
登录后参与讨论