DS1302是由美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。
RTC(Real Time Clock):實(shí)時(shí)時(shí)鐘,是一種集成電路,通常稱為時(shí)鐘芯片。
DS1302電路圖如下:
其內(nèi)部結(jié)構(gòu)框圖如下:
引腳名 | 作用 |
---|---|
VCC2 | 主電源 |
VCC1 | 備用電池 |
GND | 電源接地 |
X1,X2 | 32.768kHz晶振 |
CE | 芯片使能 |
IO | 數(shù)據(jù)輸入/輸出 |
SCLK | 串行時(shí)鐘 |
相關(guān)寄存器如下:
其中,第一行的CH表示時(shí)鐘暫??刂莆唬?表示時(shí)鐘暫停,置0表示時(shí)鐘靜止;倒數(shù)第二行的WP表示write protect(寫(xiě)保護(hù)),置1表示寫(xiě)入操作無(wú)效;最后一行的TCS用于控制涓流充電,一般不進(jìn)行設(shè)置,其他部分放在第四章進(jìn)行介紹。
命令字如下:
舉個(gè)例子,對(duì)時(shí)鐘操作、秒地址操作、讀:
10000001(0x81)
對(duì)時(shí)鐘操作、秒地址操作、寫(xiě):
10000000(0x80)
這與上方第三章寄存器中的讀地址和寫(xiě)地址是對(duì)應(yīng)的。
時(shí)序圖:
三個(gè)引腳:CE(使能端)、SCLK(時(shí)鐘)和I/O(數(shù)據(jù))。
規(guī)定:在時(shí)鐘的上升沿,I/O口的數(shù)據(jù)將會(huì)被寫(xiě)入,在時(shí)鐘的下降沿,時(shí)鐘芯片的數(shù)據(jù)將會(huì)被讀出。
5.1 單字節(jié)寫(xiě)步驟(Write)Step1:將CE置1;
Step2:命令字(I/O)發(fā)兩個(gè)字節(jié):第一個(gè)字節(jié)是命令字(先發(fā)最低位R/W),第二個(gè)字節(jié)是數(shù)據(jù);【一位一位依次發(fā)送】
Step3:SCLK給上升沿,將命令字最低位寫(xiě)入單片機(jī);
Step4:將SCLK置回0;
Step5:SCLK給上升沿,將命令字次低位寫(xiě)入單片機(jī);
Step6:將SCLK置回0;
…(依次循環(huán)8次)
Step7:SCLK給上升沿,將數(shù)據(jù)最低位寫(xiě)入單片機(jī);
Step8:將SCLK置回0;
Step9:SCLK給上升沿,將數(shù)據(jù)次低位寫(xiě)入單片機(jī);
Step10:將SCLK置回0;
…(依次循環(huán)8次)
Step11:將CE置0;
(每個(gè)上升沿寫(xiě)入數(shù)據(jù))
代碼示例:
//單字節(jié)寫(xiě),Command為命令字(地址),Data為要寫(xiě)入的數(shù)據(jù)
void DS1302_WriteByte(unsigned char Command,Data){unsigned char i;
DS1302_CE=1;
for(i=0;i<8;i++){DS1302_IO=Command&(0x01<DS1302_IO=Data&(0x01<
5.2 單字節(jié)讀步驟(Read)Step1:將CE置1;
Step2:命令字(I/O)發(fā)兩個(gè)字節(jié):第一個(gè)字節(jié)是命令字(先發(fā)最低位R/W),第二個(gè)字節(jié)是數(shù)據(jù);【一位一位依次發(fā)送】
Step3:SCLK給上升沿,將命令字最低位寫(xiě)入單片機(jī);
Step4:將SCLK置回0;
Step5:SCLK給上升沿,將命令字次低位寫(xiě)入單片機(jī);
Step6:將SCLK置回0;
…(依次循環(huán)8次)
Step7:SCLK給下降沿,將數(shù)據(jù)最低位讀出;
Step8:將SCLK置回0;
Step9:SCLK給下降沿,將數(shù)據(jù)次低位讀出;
Step10:將SCLK置回0;
…(依次循環(huán)8次)
Step11:將CE置0;
Step12:將I/O置0;
(每個(gè)下降沿讀出數(shù)據(jù))
【注意】:需要注意的是,從上述時(shí)序圖中可以看出,單字節(jié)寫(xiě)(Write)有16個(gè)脈沖,而單字節(jié)讀(Read)只有15個(gè)脈沖,因?yàn)楫?dāng)最后一個(gè)命令字的上升沿之后的下降沿?cái)?shù)據(jù)馬上就讀出來(lái)了,如下圖所示。
因此這里編寫(xiě)代碼時(shí)需要調(diào)整順序,對(duì)DS1302_SCLK先給0再給1,正好進(jìn)行切分:
代碼示例:
//DS1302讀一個(gè)字節(jié),Command為命令字(地址),Data為讀出的數(shù)據(jù)
unsigned char DS1302_ReadByte(unsigned char Command){unsigned char i,Data=0x00;
DS1302_CE=1;
for(i=0;i<8;i++){DS1302_IO=Command&(0x01<DS1302_SCLK=1;
DS1302_SCLK=0;
if(DS1302_IO){Data=Data|(0x01<
六、BCD碼
6.1 問(wèn)題描述Question:在利用DS1302進(jìn)行操作時(shí),假設(shè)我們對(duì)秒(0x80)寫(xiě)入初始值1(Data=0x01),每隔一秒它會(huì)進(jìn)行+1,但是當(dāng)它加到9之后,馬上變成16了,這是什么原因呢?
(1——>2——>…——>8——>9——>16——>17——>…)
這里要引入BCD碼的概念。
DS1302寄存器數(shù)據(jù)不是以二進(jìn)制進(jìn)行存儲(chǔ)的,而是以BCD碼進(jìn)行存儲(chǔ)的。
BCD碼(Binary Coded Decimal?),用4位二進(jìn)制數(shù)來(lái)表示1位十進(jìn)制數(shù)。
例:0001 0011表示13,1000 0101表示85,0001 1010不合法(因?yàn)?010無(wú)法表示十進(jìn)制數(shù))
在十六進(jìn)制中的體現(xiàn):0x13表示13,0x85表示85,0x1A不合法
6.2 問(wèn)題原因現(xiàn)象的原因:在BCD碼中,0000 1001表示數(shù)字9,而0001 0000表示數(shù)字10,而0001 0000轉(zhuǎn)為十進(jìn)制數(shù)字為16,因此才會(huì)在這里造成突變。
再回過(guò)頭來(lái)看一下寄存器,0-3位存的是秒,4-6位存的是10秒。
DS1302寫(xiě)數(shù)據(jù)時(shí)需要將十進(jìn)制數(shù)據(jù)轉(zhuǎn)為BCD碼的形式,讀數(shù)據(jù)時(shí)需要將BCD碼轉(zhuǎn)為十進(jìn)制數(shù)據(jù)形式。BCD碼轉(zhuǎn)十進(jìn)制:DEC=BCD/16*10+BCD%16; (2位BCD)
十進(jìn)制轉(zhuǎn)BCD碼:BCD=DEC/10*16+DEC%10; (2位BCD)
解釋?zhuān)築CD/16表示將數(shù)據(jù)的高四位取出(作為十位),BCD%16表示將低四位取出(作為個(gè)位)。
參考:以上相關(guān)圖片和資源均參考自DS1302時(shí)鐘芯片的數(shù)據(jù)手冊(cè),關(guān)于中英文相關(guān)數(shù)據(jù)手冊(cè)可以參考資源:https://download.csdn.net/download/didi_ya/85170337
ok,以上便是本文的全部?jī)?nèi)容了,如果對(duì)你有所幫助,記得點(diǎn)個(gè)贊喲~
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前名稱:單片機(jī)常用芯片總結(jié)(二)——DS1302時(shí)鐘芯片-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://jinyejixie.com/article36/ddessg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、企業(yè)建站、網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容