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