1 、 DS1302****的特點(diǎn)
DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,可以通過(guò)串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日、星期、月、年的信息,每個(gè)月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過(guò)AM/PM標(biāo)志位決定采用24或12小時(shí)時(shí)間格式。
通俗的說(shuō),DS1302是時(shí)鐘芯片,那它就有計(jì)時(shí)的作用。它和我們?nèi)粘=佑|的電子表差不多,可以對(duì)年月日、時(shí)分秒、星期計(jì)時(shí)。我們可以用單片機(jī)往DS1302里面寫(xiě)入時(shí)間進(jìn)行時(shí)間設(shè)置,也可以用單片機(jī)從DS1302中讀取時(shí)間,讀出來(lái)的時(shí)間數(shù)據(jù)我們顯示出來(lái),這樣我們就可以實(shí)現(xiàn)了電子時(shí)鐘的功能。
2 、DS1302的封裝
DS1302有兩種封裝,一種是DIP8的雙列直插式,一種是SOP8貼片式。根據(jù)封裝的名字我就知道這芯片有8個(gè)引腳,引腳分布如圖1:

3 、DS1302引腳功能

1-VCC2,主電源引腳,,當(dāng)Vcc2比Vcc1高0.2V以上時(shí),DS1302由VCC2供電,當(dāng)Vcc2低于Vcc1時(shí),由Vcc1供電。
2、3-X1、X2,這兩個(gè)引腳需要接一個(gè)32.768K的晶振,給DS1302提供一個(gè)基準(zhǔn)。特別注意,要求這個(gè)晶振的引腳負(fù)載電容必須是6pF,而不是要加6pF的電容。如果使用有源晶振的話,接到X1上即可,X2懸空。
4-GND,電源地。
5-CE(注1:有些資料里寫(xiě)的是RST),DS1302的復(fù)位引腳。當(dāng)讀寫(xiě)DS1302的時(shí)候,這個(gè)引腳必須是高電平,低電平表示不讓芯片工作。
6-I/O,DS1302的數(shù)據(jù)輸入輸出口,這個(gè)引腳是一個(gè)雙向通信引腳,讀寫(xiě)數(shù)據(jù)都是通過(guò)這個(gè)引腳完成。
7-SCLK,串行時(shí)鐘信號(hào),用來(lái)作為通信的時(shí)鐘信號(hào)。
8-VCC1,備用電源引腳。
DS1302的電路一個(gè)重點(diǎn)就是時(shí)鐘電路,它所使用的晶振是一個(gè)32.768k的晶振,晶振外部也不需要額外添加其他的電容或者電阻電路,只需要晶振的引腳的負(fù)載電容為6pF。時(shí)鐘的精度,首先取決于晶振的精度以及晶振的引腳負(fù)載電容。如果晶振不準(zhǔn)或者負(fù)載電容過(guò)大過(guò)小,都會(huì)導(dǎo)致時(shí)鐘誤差過(guò)大。在這一切都搞定后,最終一個(gè)考慮因素是晶振的溫漂。隨著溫度的變化,晶振往往精度會(huì)發(fā)生變化,因此,在實(shí)際的系統(tǒng)中,其中一種方法就是經(jīng)常校對(duì)。
4 、寄存器簡(jiǎn)介
DS1302的寄存器(讀時(shí)81h~8Dh,寫(xiě)時(shí)80h~8Ch)是存放秒、分,小時(shí)、日、月、年、周數(shù)據(jù)的,存放的數(shù)據(jù)格式為BCD碼形式。它的內(nèi)部時(shí)間寄存器如下表:

上表是DS1302內(nèi)部的7個(gè)與時(shí)間、日期有關(guān)的寄存器圖和一個(gè)寫(xiě)保護(hù)寄存器,我們要做的就是將初始設(shè)置的時(shí)間、日期數(shù)據(jù)寫(xiě)入這幾個(gè)寄存器,然后再不斷地讀取這幾個(gè)寄存器來(lái)獲取實(shí)時(shí)時(shí)間和日期。現(xiàn)對(duì)這幾個(gè)寄存器的說(shuō)明如下:
①、秒寄存器(81h、80h)的位7定義為時(shí)鐘暫停標(biāo)志(CH)。當(dāng)初始上電時(shí)該位置為1,時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);只有將秒寄存器的該位置改寫(xiě)為0時(shí),時(shí)鐘才能開(kāi)始運(yùn)行,一般我們?cè)谟玫臅r(shí)候是在設(shè)置時(shí)間完成后吧秒寄存器寫(xiě)入0,這樣就啟動(dòng)了芯片的計(jì)時(shí)功能。
②、小時(shí)寄存器(85h、84h)的位7定義為DS1302是運(yùn)行于12小時(shí)模式還是24小時(shí)模式。當(dāng)為1時(shí),選擇12小時(shí)模式,為0時(shí)選擇24小時(shí)模式。在12小時(shí)模式時(shí),位5是標(biāo)志位 ,為0時(shí)表示AM,為1時(shí)表示PM。在24小時(shí)模式時(shí),位5是第二個(gè)10小時(shí)位。
③、控制寄存器(8Fh、8Eh)的位7是寫(xiě)保護(hù)位(WP),其它7位均置為0。在任何的時(shí)候?qū)r(shí)鐘和RAM的寫(xiě)操作之前,WP位必須為0。當(dāng)WP位為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一寄存器的寫(xiě)操作。也就是說(shuō)在電路上電的初始態(tài)WP是1,這時(shí)是不能改寫(xiě)上面任何一個(gè)時(shí)間寄存器的,只有首先將WP改寫(xiě)為0,才能進(jìn)行其它寄存器的寫(xiě)操作。
其余的寄存器沒(méi)有什么特殊的說(shuō)明。對(duì)于DS1302芯片還有一個(gè)控制字,該控制字控制這芯片的讀寫(xiě)操作。具體的內(nèi)容如下:

如上表所示,位0就是讀寫(xiě)位,當(dāng)位0為1時(shí),就是告訴DS1302,下面是進(jìn)行讀出操作,而當(dāng)位0為0時(shí)就是寫(xiě)入操作。
位0-位5是要進(jìn)行操作的DS1302寄存器地址。
位6就是告訴DS1302,是要對(duì)RAM進(jìn)行操作還是對(duì)時(shí)間寄存器進(jìn)行操作,0就是對(duì)時(shí)間寄存器操作,一般我們都是對(duì)時(shí)間寄存器進(jìn)行操作。
位7就是固定的1。
現(xiàn)在就知道為什么控制字80H是寫(xiě)秒寄存器,而81H是讀秒寄存器了吧。80H換成二進(jìn)制就是10000000。而81H的二進(jìn)制就是10000001,一個(gè)是寫(xiě)操作,另一個(gè)是讀操作嘛!
現(xiàn)在,我們來(lái)總結(jié)下如何對(duì)DS1302操作:
1 )首先要通過(guò)8eH將寫(xiě)保護(hù)去掉,這樣我們才能將日期,時(shí)間的初值寫(xiě)時(shí)各個(gè)寄存器。
2 )然后就可以對(duì)80H、82H、84H、86H、88H、8AH、8CH進(jìn)行初值的寫(xiě)入。同時(shí)也通過(guò)秒寄存器將位7的CH值改成0,這樣DS1302就開(kāi)始走時(shí)運(yùn)行了。
3 )將寫(xiě)保護(hù)寄存器再寫(xiě)為80H,防止誤改寫(xiě)寄存器的值。
4)不斷讀取80H-8CH的值,將他們轉(zhuǎn)化為十進(jìn)制后顯示出來(lái)就可以啦,之前我們說(shuō)過(guò),DS1302讀出的數(shù)據(jù)是BCD碼,所以需要轉(zhuǎn)換一下。
5 、讀寫(xiě)時(shí)序
上面說(shuō)到的寄存器,控制字。最終都是需要單片機(jī)控制DS1302的引進(jìn)寫(xiě)進(jìn)或讀出芯片的。那現(xiàn)在就說(shuō)說(shuō)這讀寫(xiě)的時(shí)序問(wèn)題。
物理上,DS1302的通訊接口由3個(gè)口線組成,即CE(有些資料寫(xiě)為RST),SCLK,I/O。其中CE(RST)從低電平變成高電平啟動(dòng)一次數(shù)據(jù)傳輸過(guò)程,SCLK是時(shí)鐘線,I/O是數(shù)據(jù)線。具體的讀寫(xiě)時(shí)序參考下圖,但是請(qǐng)注意,無(wú)論是哪種同步通訊類型的串行接口,都是對(duì)時(shí)鐘信號(hào)敏感的,而且一般數(shù)據(jù)寫(xiě)入有效是在上升沿,讀出有效是在下降沿(DS1302正是如此的,但是在芯片手冊(cè)里沒(méi)有明確說(shuō)明),如果不是特別確定,則把程序設(shè)計(jì)成這樣:平時(shí)SCLK保持低電平,在時(shí)鐘變動(dòng)前設(shè)置數(shù)據(jù),在時(shí)鐘變動(dòng)后讀取數(shù)據(jù),即數(shù)據(jù)操作總是在SCLK保持為低電平的時(shí)候,相鄰的操作之間間隔有一個(gè)上升沿和一個(gè)下降沿。

DS1302****的數(shù)據(jù)讀寫(xiě)是通過(guò)I/O串行進(jìn)行的。當(dāng)進(jìn)行一次讀寫(xiě)操作時(shí)最少得讀寫(xiě)兩個(gè)字節(jié),第一個(gè)字節(jié)是控制字節(jié),就是一個(gè)命令,告訴DS1302是讀還是寫(xiě)操作,是對(duì)RAM還是對(duì)CLOK寄存器操作,以及操作的地址。第二個(gè)字節(jié)就是要讀或?qū)懙臄?shù)據(jù)了。
我們先看單字節(jié)寫(xiě):在進(jìn)行操作之前先得將CE(也可說(shuō)是RST)置高電平,然后單片機(jī)將控制字的位0放到I/O上,當(dāng)I/O的數(shù)據(jù)穩(wěn)定后,將SCLK置高電平,DS1302檢測(cè)到SCLK的上升沿后就將I/O上的數(shù)據(jù)讀取,然后單片機(jī)將SCLK置為低電平,再將控制字的位1放到I/O上,如此反復(fù),將一個(gè)字節(jié)控制字的8個(gè)位傳給DS1302。接下來(lái)就是傳一個(gè)字節(jié)的數(shù)據(jù)給DS1302,當(dāng)傳完數(shù)據(jù)后,單片機(jī)將CE置為低電平,操作結(jié)束。
單字節(jié)讀操作的一開(kāi)始寫(xiě)控制字的過(guò)程和上面的單字節(jié)寫(xiě)操作是一樣,但是單字節(jié)讀操作在寫(xiě)控制字的最后一個(gè)位,SCLK還在高電平時(shí),DS1302就將數(shù)據(jù)放到I/O上,單片機(jī)將SCLK置為低電平后數(shù)據(jù)鎖存,單機(jī)機(jī)就可以讀取I/O上的數(shù)據(jù)。如此反復(fù),將一個(gè)字節(jié)的數(shù)據(jù)讀入單片機(jī)。讀與寫(xiě)操作的不同就在于,寫(xiě)操作是在SCLK低電平時(shí)單片機(jī)將數(shù)據(jù)放到IO上,當(dāng)SCLK上升沿時(shí),DS1302讀取。而讀操作是在SCLK高電平時(shí)DS1302放數(shù)據(jù)到IO上,將SCLK置為低電平后,單片機(jī)就可從IO上讀取數(shù)據(jù)。
在單字節(jié)讀操作時(shí),在寫(xiě)控制字的最后一個(gè)位也就是位7時(shí),DS1302已將它的寄存器數(shù)據(jù)位0放到IO上了,要是控制字的位7是0的話,DS1302就無(wú)法將它的隨后的數(shù)據(jù)放到IO上了,所以控制字的7位為固定的1,原因在這里哦。
6 、典型運(yùn)用電路

-
單片機(jī)
+關(guān)注
關(guān)注
6072文章
45271瀏覽量
661341 -
時(shí)鐘芯片
+關(guān)注
關(guān)注
2文章
280瀏覽量
41739 -
DS1302
+關(guān)注
關(guān)注
8文章
451瀏覽量
53042 -
RST
+關(guān)注
關(guān)注
0文章
31瀏覽量
7749 -
負(fù)載電容
+關(guān)注
關(guān)注
0文章
151瀏覽量
11022
發(fā)布評(píng)論請(qǐng)先 登錄
【轉(zhuǎn)】stm32驅(qū)動(dòng)DS1302芯片
何為DS1302時(shí)鐘芯片呢
DS1302實(shí)時(shí)時(shí)鐘芯片介紹
DS1302芯片驅(qū)動(dòng)的使用
利用DS1302 時(shí)鐘芯片實(shí)現(xiàn)“時(shí)間鎖”的方法
ds1302芯片介紹,ds1302工作原理解析
DS1302的內(nèi)部結(jié)構(gòu)全面剖析
DS1302芯片的使用,時(shí)鐘芯片DS1302功能匯總
DS1302時(shí)鐘芯片調(diào)試經(jīng)驗(yàn),奉上調(diào)試時(shí)鐘芯片DS1302的程序
ds1302是什么接口,DS1302時(shí)鐘芯片接口分析詳解
ds1302引腳圖,ds1302引腳圖功能詳解
實(shí)時(shí)時(shí)鐘芯片 DS1302 介紹
ds1302中文手冊(cè) ds1302時(shí)鐘芯片引腳功能

DS1302芯片是如何給我產(chǎn)生時(shí)間數(shù)據(jù)的?
評(píng)論