引言
嵌入式技術(shù)是當(dāng)前發(fā)展速度最快、應(yīng)用最廣、前景最好的信息技術(shù)領(lǐng)域之一。目前,社會上嵌入式系統(tǒng)人才短缺的現(xiàn)狀給各大高校帶來了契機(jī),很多高校的電子信息工程專業(yè)都開設(shè)了相關(guān)的嵌入式課程。嵌入式系統(tǒng)主要由兩部分組成:一是硬件,二是軟件。本設(shè)計(jì)是基于32位ARM7TDMI-S核的LPC2131微控制器,內(nèi)部帶有獨(dú)立電源和時(shí)鐘源的實(shí)時(shí)時(shí)鐘,在節(jié)電模式下極大地降低了功耗。通過硬件和軟件的結(jié)合操作,實(shí)現(xiàn)了對內(nèi)部各個時(shí)間寄存器的秒、分、小時(shí)、日、月、年和星期的控制,能夠?qū)⒉杉礁鱾€時(shí)間數(shù)據(jù)通過串口發(fā)送到上位機(jī)上,達(dá)到實(shí)時(shí)系統(tǒng)的顯示功能。此設(shè)計(jì)便于形成專用的時(shí)鐘控制的嵌入式裝置,也能夠嵌入到各種智能化應(yīng)用系統(tǒng)中。
1 系統(tǒng)工作原理
該系統(tǒng)主要基于LPC2131為核心的主控電路,由JTAG下載模塊、外部時(shí)鐘源模塊、ARM7微控制器模塊、串口通信模塊(RS-232)等電路組成。LPC2131微控制器內(nèi)部帶有實(shí)時(shí)時(shí)鐘模塊,可以由外部獨(dú)立的時(shí)鐘振蕩器來提供時(shí)鐘源或由基于內(nèi)部VPB時(shí)鐘的可編程預(yù)分頻器來提供時(shí)鐘源,達(dá)到對時(shí)鐘寄存器秒、分、小時(shí)、日、月、年和星期的控制。同時(shí)將控制的數(shù)據(jù)通過串口與PC機(jī)通信,來實(shí)現(xiàn)結(jié)果,將數(shù)據(jù)顯示在PC機(jī)上。
1.1 實(shí)時(shí)時(shí)鐘內(nèi)部結(jié)構(gòu)介紹
LPC2131內(nèi)部實(shí)時(shí)時(shí)鐘結(jié)構(gòu)框圖如圖1所示。實(shí)時(shí)時(shí)鐘包含混合寄存器、時(shí)間寄存器、時(shí)間計(jì)數(shù)器、報(bào)警寄存器和預(yù)分頻器等。其中,混合寄存器包括:中斷位置寄存器(ILR)、時(shí)鐘節(jié)拍計(jì)數(shù)器(CTC)、時(shí)鐘控制寄存器(CCR)、計(jì)數(shù)器遞增中斷寄存器(CIIR)、報(bào)警屏蔽寄存器(A-MR);時(shí)間計(jì)數(shù)器包括:秒寄存器(SEC)、分寄存器(MIN)、小時(shí)寄存器(HOUR)、日期寄存器(DOM)、星期寄存器(DOW)、年寄存器(DOY)、月寄存器(MONTH)、年寄存器(YEAR);時(shí)間寄存器組包括:完整時(shí)間寄存器0(CTIME0)、完整時(shí)間寄存器1(CTIME1)、完整時(shí)間寄存器2(CTIME2);報(bào)警寄存器包括:秒報(bào)警值(ALSEC)、分報(bào)警值(ALMIN)、小時(shí)報(bào)警值(ALHOUR)、日期報(bào)警值(ALDOM)、星期報(bào)警值(ALDOW)、月報(bào)警值(ALM-ON)、年報(bào)警值(ALYEAR);預(yù)分頻器包括:預(yù)分頻值整數(shù)部分(PREINT)、預(yù)分頻值小數(shù)部分(PREFRAC)。
1.2 實(shí)時(shí)時(shí)鐘的基本操作
首先,設(shè)置時(shí)鐘控制寄存器(CCR)可以選擇RTC的計(jì)數(shù)時(shí)鐘,可以由外部振蕩器32.768 kHz提供或內(nèi)部Fpclk分頻得到。當(dāng)使用Fpclk作為時(shí)鐘源時(shí),它的基準(zhǔn)時(shí)鐘分頻器允許調(diào)節(jié)任何頻率高于65.536 kHz的外設(shè)時(shí)鐘源產(chǎn)生一個32.768 kHz的基準(zhǔn)時(shí)鐘,實(shí)現(xiàn)準(zhǔn)確計(jì)時(shí)操作。
其次,如果CCR選擇內(nèi)部時(shí)鐘源,則設(shè)置RTC基準(zhǔn)時(shí)鐘分頻器(PREINT、PREFRAC),如果選擇外部32.768kHz就不必設(shè)置預(yù)分頻寄存器的值,預(yù)分頻寄存器值的計(jì)數(shù)如下:
接著初始化實(shí)時(shí)時(shí)鐘(RTC)的各個時(shí)鐘值,如YEAR、MONTH、DOM等,報(bào)警中斷設(shè)置,如CIIR、AMR等,然后啟動RTC,即CCR的CLKEN位置位,讀取完整的時(shí)間寄存器值。在此過程中時(shí)鐘節(jié)拍計(jì)數(shù)器(CTC)是一個15位計(jì)數(shù)器,每秒計(jì)數(shù)32 768個時(shí)鐘,當(dāng)有CTC秒進(jìn)位時(shí),完整時(shí)間CTIME0~CTIME2、RTC時(shí)間寄存器(如SEC、MIN)將會更新。實(shí)時(shí)時(shí)鐘中斷有兩種:一種增量中斷,由CIIR控制;另一種為報(bào)警中斷。本設(shè)計(jì)使用的是增量中斷。
最后將串口初始化,設(shè)置串口的波特率、數(shù)據(jù)位、停止位、校驗(yàn)位等,將串口與上位機(jī)連接,將串口采集到的時(shí)間寄存器變化的時(shí)間值發(fā)送到上位機(jī)上顯示,得到對實(shí)時(shí)時(shí)鐘的控制結(jié)果。
1.3 寄存器的功能介紹
時(shí)鐘控制寄存器(CCR)是一個5位寄存器,控制時(shí)鐘電路的分頻操作。計(jì)數(shù)器增量中斷寄存器(CIIR):可以使計(jì)數(shù)器每次增加時(shí)產(chǎn)生一次中斷,在中斷位置寄存器的位0(ILR[0])寫入1之前,該中斷一直保持有效。完整時(shí)間寄存器0(CTIME0)和完整時(shí)間寄存器1(CTIME1):
CTIME0包括秒、分、小時(shí)、和星期,CTIME1包括日期、月和年。具體寄存器描述略——編者注。
預(yù)分頻整數(shù)寄存器(PREINT):預(yù)分頻的整數(shù)部分。預(yù)分頻整數(shù)部分計(jì)算如下:
預(yù)分頻小數(shù)寄存器(PREFRAC):預(yù)分頻的小數(shù)部分。預(yù)分頻小數(shù)部分計(jì)算如下:
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)的硬件結(jié)構(gòu)
該系統(tǒng)對ARM7微控制器LPC2131的實(shí)時(shí)時(shí)鐘模塊的各個寄存器控制,來達(dá)到對時(shí)鐘的精確控制。該系統(tǒng)的硬件結(jié)構(gòu)圖,如圖2所示。包括復(fù)位電路模塊、JTAG下載模塊、通信模塊(RS-232)、ARM7微控制器模塊及外部振蕩電路模塊。
2.2 系統(tǒng)的硬件原理圖
復(fù)位電路如圖3所示,采用復(fù)位芯片SP708S,可以大大提高M(jìn)CU的復(fù)位性能。通過確定的電壓值(閾值)啟動復(fù)位操作,同時(shí)排除瞬間干擾的影響,又防MCU在電源啟動和關(guān)閉期間的誤操作,保證數(shù)據(jù)安全。用阻容復(fù)位穩(wěn)定性差,常常有按了復(fù)位鍵沒反應(yīng),要按一段時(shí)間才能復(fù)位的經(jīng)歷,容易復(fù)位不成功。
JTAG下載電路如圖4所示,采用20引腳的JTAG口,使用下載工具J-LINK,由軟件MDK將從PC機(jī)通過J-LINK,下載到LPC2131里。
串口通信電路如圖5所示,采用串口芯片MAX3232,將MAX3232與LPC2131連接起來,實(shí)現(xiàn)上位機(jī)與下位機(jī)數(shù)據(jù)通信。
ARM7微控制器模塊及外部振蕩電路的系統(tǒng)時(shí)鐘源晶振為11.059 2 MHz,實(shí)時(shí)時(shí)鐘的晶振為32.768 kHz。電路圖略——編者注。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 程序流程
本系統(tǒng)采用了高級語言C編寫LPC2131程序,本程序主要完成對實(shí)時(shí)時(shí)鐘RTC的各個時(shí)間寄存器的設(shè)定、顯示以及對串口0的初始化設(shè)定。然后通過CPU采集實(shí)時(shí)時(shí)鐘的各個時(shí)間寄存器變化的數(shù)據(jù),經(jīng)串口連接到上位機(jī),在上位機(jī)上顯示出時(shí)間來。程序流程如圖6所示。
3.2 控制程序
根據(jù)程序流程,可將程序分為三大部分:第一部分,對串口的初始化及串口發(fā)送數(shù)據(jù)的函數(shù)初始化。第二部分,對實(shí)時(shí)時(shí)鐘的初始化,來設(shè)置基準(zhǔn)時(shí)鐘、時(shí)、分、秒等各個寄存器,將采集到的數(shù)據(jù)通過終端顯示出來。第三部分,主函數(shù)部分,將秒增量中斷標(biāo)志置位、清楚RTC中斷,而后循環(huán)地將時(shí)間在串口調(diào)試助手上顯示。
4 實(shí)驗(yàn)結(jié)果
將以上程序在MDK中運(yùn)行,下載到LPC2131中,將串口與PC機(jī)連接,設(shè)置好串口調(diào)試助手,波特率9 600bps,數(shù)據(jù)位8位,1個停止位,無校驗(yàn)位。得到時(shí)間結(jié)果。
結(jié)語
本文介紹了基于ARM7TDMI-S核的芯片LPC2131和內(nèi)部的實(shí)時(shí)時(shí)鐘(RTC)的工作原理,設(shè)計(jì)了基于實(shí)時(shí)時(shí)鐘與LPC2131的串行通信的采樣系統(tǒng),將時(shí)間顯示在上位機(jī)上。這種時(shí)鐘控制系統(tǒng)在現(xiàn)代生產(chǎn)、生活中應(yīng)用廣泛。在實(shí)際應(yīng)用中,只需根據(jù)本文的基本思想進(jìn)行適當(dāng)?shù)囊浦玻纯稍O(shè)計(jì)成專用的時(shí)鐘控制的嵌入式裝置,并嵌入到各種智能化應(yīng)用系統(tǒng)中。