趙振東,李彥斌,董曉龍,姬占濤
(西安工程大學(xué) 電子信息學(xué)院,西安710048)
?
趙振東,李彥斌,董曉龍,姬占濤
(西安工程大學(xué) 電子信息學(xué)院,西安710048)
摘要:DS1302是一種串行時(shí)鐘芯片,在需要實(shí)時(shí)時(shí)鐘的嵌入式系統(tǒng)中得到了越來(lái)越廣泛的應(yīng)用。本文首先介紹了DS1302的結(jié)構(gòu)和工作原理,并對(duì)其讀寫(xiě)時(shí)序進(jìn)行了詳細(xì)的分析,介紹了TMS320F28335通過(guò)模擬時(shí)序的方法實(shí)現(xiàn)了對(duì)DS1302的讀寫(xiě)操作,詳細(xì)介紹了其開(kāi)發(fā)過(guò)程,并利用示波器觀察了其輸出的波形,驗(yàn)證了軟件和硬件的正確性。
關(guān)鍵詞:TMS320F28335;DS1302;模擬時(shí)序
引言
目前嵌入式設(shè)備大多工作于實(shí)時(shí)的環(huán)境中,這樣不僅可以記錄實(shí)時(shí)的數(shù)據(jù),而且向外界提供的數(shù)據(jù)具有時(shí)間信息,為以后對(duì)數(shù)據(jù)的分析與檢索帶來(lái)了方便。然而有些CPU芯片(如DSP)內(nèi)并未集成RTC(實(shí)時(shí)時(shí)鐘)控制器,所以為實(shí)現(xiàn)此功能就需要在外部擴(kuò)展實(shí)時(shí)時(shí)鐘控制芯片。本文使用TI公司C2000系列DSP TMS320F28335與MAXIM公司的串行實(shí)時(shí)時(shí)鐘芯片DS1302來(lái)顯示時(shí)鐘,并通過(guò)模擬串行控制協(xié)議來(lái)實(shí)現(xiàn)對(duì)DS1302的操作。
1TMS320F28335
本文以TMS320F28335為例,在CCS3.3環(huán)境下對(duì)DS1302進(jìn)行了開(kāi)發(fā),圖1為T(mén)MS320F28335與DS1302連接原理圖。
圖1 TMS320F28335與DS1302連接原理圖
2DS1302工作原理
DS1302是MAXIM公司生產(chǎn)的一款實(shí)時(shí)時(shí)鐘芯片,并且具備涓流充電的功能,在手持設(shè)備以及通信領(lǐng)域得到了普遍的應(yīng)用,它的主要特性如下:
① DS1302能夠?qū)崿F(xiàn)秒、分鐘、小時(shí)、日、周、月、年的顯示,而且具有閏年自動(dòng)調(diào)整的功能,并且可以配置時(shí)間顯示的方式為24小時(shí)制或者12小時(shí)制。
② 有數(shù)據(jù)存儲(chǔ)空間RAM,其大小為31字節(jié)。
③ 相對(duì)于并行通信的方式來(lái)說(shuō),使用串行I/O通信的方式,比較節(jié)省I/O口。
④ DS1302在2.0~5.5 V之間的電壓范圍內(nèi)均可以正常工作。
⑤ DS1302在2.0 V的工作電壓下,其工作電流不超過(guò)300 nA,可見(jiàn)其功耗很低。
⑥ DS1302共有8個(gè)引腳,其經(jīng)典的應(yīng)用電路是1引腳作為主電源VCC2的供電引腳,2引腳和3引腳分別作為晶振的輸入X1和輸出X2的引腳,4引腳是供電電源GND的引腳,5引腳是使能端CE的輸入引腳,6引腳是數(shù)據(jù)傳輸I/O的輸入/輸出引腳,7引腳是通信時(shí)鐘SCLK的輸入引腳,8引腳是備用電源VCC1的供電引腳。
2.1DS1302寄存器介紹
DS1302的地址寄存器由8位組成,各個(gè)位的介紹略——編者注。本文考慮CLOCK功能,即相應(yīng)的對(duì)應(yīng)位為0;由于要進(jìn)行寫(xiě)操作,則對(duì)應(yīng)的最高位為1;而地址寄存器所要表示的地址是由A0~A4來(lái)決定的;最低位為讀寫(xiě)位。
DS1302的時(shí)鐘寄存器中秒、分、時(shí)、日、月、周、年寄存器的設(shè)置略——編者注。地址的變化范圍分別為00000~00111,其中涓流充電的寄存器地址為01000。在DS1302的地址中最高位和最低位已經(jīng)確定。
2.2DS1302通信時(shí)序
DS1302采用CE、I/O和 SCLK這3根線通信,其中使能線是CE,時(shí)鐘線是單方向的SCLK, 雙方向流通的I/ O數(shù)據(jù)線。具體的時(shí)序如圖2所示。
從圖2可以看到進(jìn)行讀、寫(xiě)操作的時(shí)候,寫(xiě)操作分成兩步:第一步為寫(xiě)入指向所要寫(xiě)入數(shù)據(jù)的寄存器的地址;第二步是寫(xiě)入的初值;讀操作也分為兩步:第一步為寫(xiě)入指向所要讀取數(shù)據(jù)的寄存器的地址;第二步為讀取對(duì)應(yīng)的值;下面具體分析:CE使能高電平有效,針對(duì)寫(xiě)操作,首先寫(xiě)的是所要指向的寄存器的地址,比如秒寄存器,先寫(xiě)其對(duì)應(yīng)的地址,然后再寫(xiě)入對(duì)應(yīng)的初值,同時(shí)可以看到,當(dāng)SCLK由低電平變?yōu)楦唠娖綍r(shí),數(shù)據(jù)才被寫(xiě)到DS1302;針對(duì)讀操作,首先寫(xiě)的是所要指向的寄存器的地址,比如秒寄存器,然后讀對(duì)應(yīng)的值,同時(shí)可以看到,當(dāng)SCLK由高變低的時(shí)候,數(shù)據(jù)才被讀取,寫(xiě)到CPU中。
需要注意的是,讀數(shù)據(jù)的時(shí)候,在寫(xiě)完所要指向的寄存器的地址之后,即要寫(xiě)入的所要指向的寄存器地址的最后一位所對(duì)應(yīng)的是SCLK的第8個(gè)脈沖的上升沿,而將要讀取的數(shù)據(jù)的第1位則對(duì)應(yīng)的是SCLK第8個(gè)脈沖的下降沿。
圖2 讀寫(xiě)時(shí)序
由實(shí)際的時(shí)序圖3可看出,電平的變化是需要一個(gè)過(guò)程的,即慢慢地上升和下降。那么在寫(xiě)程序時(shí)就要注意好對(duì)應(yīng)的時(shí)刻,如果在電平還未穩(wěn)定的時(shí)候進(jìn)行讀、寫(xiě)操作,將會(huì)導(dǎo)致讀寫(xiě)的失敗。在圖中可以看到,tCDD、tDC、tCL、tCH、tR、tF的時(shí)間需要確定,因此要查到這些變量對(duì)應(yīng)的值。在本實(shí)驗(yàn)中取tCDD+ tF+tCL<1 μs; tR+tCH<1 μs;tCDD<3 μs。
圖3 讀寫(xiě)對(duì)應(yīng)的時(shí)序圖
2.3硬件電路
DS1302實(shí)際的硬件連接電路圖如圖4所示,其中主電源引腳是VCC2,DS1302的供電是由VCC1與VCC2的電壓大小決定的,當(dāng)兩者相差0.2 V時(shí),即VCC2高于 VCC1時(shí),由 VCC2供電;VCC2低于 VCC1時(shí),由 VCC1供電。DS1302的基準(zhǔn)時(shí)鐘為32.768 kHz,接在X1與X2之間;若使用的是有源晶振,只需接到X1端子上即可,X2引腳懸空;GND為接地引腳;CE 是DS1302的使能引腳;I/O為讀寫(xiě)數(shù)據(jù)引腳;SCLK是時(shí)鐘的輸入引腳,它是為通信提供的時(shí)鐘信號(hào);VCC1是備用電源引腳。
圖4 硬件連接圖
3DSP主程序設(shè)計(jì)
圖5 主程序流程圖
主程序流程圖如圖5所示,簡(jiǎn)要地描述了DS1302讀取數(shù)據(jù)的整個(gè)過(guò)程,在后面的程序中詳細(xì)地介紹了各個(gè)模塊的操作、使用的規(guī)則、及其需要注意的問(wèn)題。主要程序略——編者注。
I/O通信要注意讀寫(xiě)方向,寫(xiě)程序時(shí),需要把TMS320F28335與之對(duì)應(yīng)的GPIO配置為輸出口,對(duì)DS1302讀操作時(shí)要把TMS320F28335對(duì)應(yīng)的GPIO配置成輸入口,即為以下程序:
EALLOW;
GpioCtrlRegs.GPCDIR.bit.GPIO79=1;
EDIS;
write_ds1302_byte(addr);
//對(duì)DS1302進(jìn)行寫(xiě)操作
EALLOW;
GpioCtrlRegs.GPCDIR.bit.GPIO79=0;
//配置GPIO為輸入,即對(duì)DS1302進(jìn)行讀EDIS
4實(shí)驗(yàn)結(jié)果
DS1302寫(xiě)入和讀出的數(shù)據(jù)是低位先發(fā),DS1302寫(xiě)入數(shù)據(jù)是在時(shí)鐘的上升沿,而讀出數(shù)據(jù)則在時(shí)鐘的下降沿。在讀取數(shù)據(jù)時(shí),若指向讀寄存器的指針?biāo)鶎?duì)應(yīng)的第8個(gè)脈沖,則要注意第8個(gè)脈沖的上升沿對(duì)應(yīng)的是指向讀寄存器指針的最后1位,下降沿所對(duì)應(yīng)的是讀數(shù)據(jù)的第1位。
4.1寫(xiě)入初值
圖6為清除保護(hù)位操作,控制寄存器地址為8EH,控制字為00,為了能給寄存器寫(xiě)入控制字,寫(xiě)入秒、分、時(shí)、日、月、周日、年的初值,DS1302寫(xiě)入數(shù)據(jù)應(yīng)是從低位先發(fā)的,分別為0111 0001B、0000 0000B,反過(guò)來(lái)看即為8EH、00。
圖6 清除保護(hù)位
圖7為指向秒、分寄存器的指針值與寫(xiě)入的初值,即秒寄存器地址為80H,初值為18,分寄存器地址為82H,初值為48。由于是低位先發(fā),對(duì)應(yīng)的示波器的數(shù)為0000 0001B、 0001 1000B、0100 0001、0001 0010,初值對(duì)應(yīng)的是BCD碼,所以為18秒、48分。
圖7 寫(xiě)秒、分寄存器
圖8為指向時(shí)、日寄存器的指針值與寫(xiě)入的初值,即秒寄存器地址為84H,初值為16,分寄存器地址為86H,初值為14。由于是低位先發(fā),對(duì)應(yīng)的示波器的數(shù)為0010 0001B、0110 1000B、0110 0001B、0010 1000B,初值對(duì)應(yīng)的是BCD碼為16時(shí),14日。
圖8 寫(xiě)時(shí)、日寄存器
圖9為指向月、周寄存器的指針值跟寫(xiě)入的初值,即秒寄存器地址為88H,初值為02,分寄存器地址為8AH,初值為07。由于是低位先發(fā),對(duì)應(yīng)的示波器的數(shù)為0001 0001B、0100 0000B、0101 0001B、1110 0000B,初值對(duì)應(yīng)的是BCD碼為2月,星期日。
圖9 寫(xiě)月、周寄存器
圖10為指向年寄存器指針值與寫(xiě)入的初值,即秒寄存器地址8CH與初值13,以及寫(xiě)保護(hù),控制寄存器地址為8EH,控制字為01。由于是低位先發(fā),對(duì)應(yīng)的示波器的數(shù)為0011 0001B、1100 1000B、0111 0001B、0000 0001B,初值對(duì)應(yīng)的是BCD碼,表示13年。
圖10 寫(xiě)年寄存器和寫(xiě)保護(hù)寄存器
寫(xiě)入的初值為13年2月14日16時(shí)53分39秒,周日。
4.2讀寄存器的值
讀寄存器的標(biāo)準(zhǔn)為寫(xiě)入指向讀寄存器的地址,然后針對(duì)具體的地址讀操作。
圖11為指向秒、分寄存器的指針值與讀出的值,即秒寄存器地址81H,讀出值為1010 0010B,分寄存器地址為83H,讀出值為1000 1000B。由于是低位先發(fā),因此對(duì)應(yīng)的讀出數(shù)為0100 0101B、0001 0010B,對(duì)應(yīng)的BCD碼為45秒,12分。
圖11 讀秒、分寄存器
圖12為指向時(shí)、日寄存器的指針值跟讀出的值,即秒寄存器地址85H,讀值1110 1000B;分寄存器地址87H,讀出值為0010 1000B。由于是低位先發(fā),因此對(duì)應(yīng)的讀出數(shù)為0001 0111B,0001 0100B。對(duì)應(yīng)的BCD碼為17時(shí),14日。
圖12 讀時(shí)、日寄存器
圖13指向月、周寄存器的指針值跟讀出的值,即秒寄存器地址89H,讀出值0100 0000B; 分寄存器地址8BH,讀出值為1110 0000B。由于是低位先發(fā),因此對(duì)應(yīng)的讀出數(shù)為0000 0010B,0000 0111B。對(duì)應(yīng)的BCD碼為2月,星期日。
圖13 讀月、周寄存器
圖14為指向年寄存器的指針值及示波器的讀出值,即秒寄存器地址8DH,讀出值1100 1000B,由于是低位先發(fā),所以對(duì)應(yīng)的讀出數(shù)為0001 0011B。對(duì)應(yīng)的BCD碼為13年。
圖14 讀年寄存器
綜上所述,讀出的值為13年2月14日17時(shí)12分45秒,星期日。
結(jié)語(yǔ)
本文研究了TMS320F28335與DS1302通信的問(wèn)題,從實(shí)驗(yàn)中可以看出年、月、日、周寄存器的值在當(dāng)天讀取是不變的,而秒、分、時(shí)寄存器的值是變化的,與實(shí)際是一致的。從另一個(gè)角度來(lái)說(shuō),這也驗(yàn)證了通信協(xié)議的正確性,即手冊(cè)資料的正確性。
編者注:本文為期刊縮略版,全文見(jiàn)本刊網(wǎng)站www.mesnet.com.cn。
參考文獻(xiàn)
[1] TI.TMS320F28335,TMS320F28334,TMS320F28332,TMS 320F28235,TMS320 F28234,TMS320F28232數(shù)字信號(hào)控制器 (DSC) [EB/OL].[2015-09].http://www.ti.com.cn/cn/lit/ds/symlink/tms320f28332.pdf?keyMatch=tms 320 f28335&tisearch=Search-CN-TechDocs.
[2] 劉陵順,高艷麗,張樹(shù)團(tuán),等.TMS320F28335 DSP 原理及開(kāi)發(fā)編程[M].北京:北京航空航天大學(xué)出版社,2011:408-419.
[3] MAXIM.DS1302 Trick-Charge Timekeeping Chip [EB/OL].[2015-09].https://www.maximintegrated.com/cn/products/digital/real-time-clocks/DS1302.html.
趙振東(研究生)、李彥斌(工程師),研究方向?yàn)楝F(xiàn)代電力電子變換與電力傳動(dòng)技術(shù)、伺服系統(tǒng)。
Zhao Zhendong,Li Yanbin,Dong Xiaolong,Ji Zhantao
(School of Electronic Information,Xi′an Polytechnic University,Xi′an 710048,China)
Abstract:The DS1302 is a kind of serial clock chip,which has been widely applied in the embedded system that needs the real-time clock.In the paper,the structure and operating principle of the DS1302 are described,and its read and write timing are analyzed.The TMS320F28335 realizes read and write operations of DS1302 by analog timing method,and the development process is introduced.The correctness of the hardware and software is verified through the output waveform of the oscilloscope.
Key words:TMS320F28335;DS1302;analog timing
收稿日期:(責(zé)任編輯:楊迪娜2015-09-29)
中圖分類號(hào):TP29
文獻(xiàn)標(biāo)識(shí)碼:A