楊素珍,林本杰
?
基于TMS320F2812的數字鐘系統(tǒng)設計
楊素珍,林本杰
(漳州職業(yè)技術學院 機械工程學院,福建 漳州 363000)
基于TMS320F2812和實時時鐘芯片X1226設計了一種數字鐘系統(tǒng),并使用LCD19264液晶顯示模塊進行信息顯示,顯示內容包括年、月、日、時、分、秒,從硬件系統(tǒng)設計和軟件系統(tǒng)設計兩方面進行詳細的方案說明,該數字鐘系統(tǒng)結構簡單,性能穩(wěn)定,實用性高。
數字鐘;TMS320F2812;X1226;LCD19264
時鐘在諸多領域都是不可缺少的功能[1]。在工業(yè)控制領域,通常需要記錄整個工業(yè)系統(tǒng)中各個器件的啟動、停止及發(fā)生故障的時間。數字信號處理器DSP是一種能對數字信號進行實時處理的高性能CPU[2],其特性優(yōu)越,數據處理能力強,應用廣泛。本文以美國德州儀器公司生產的DSP芯片TMS320F2812[3]為核心,設計接口電路連接實時時鐘芯片X1226和LCD19264液晶顯示模塊,設計嵌入式控制程序軟件實現實時時間信息的讀取和顯示,所設計的數字鐘可為后續(xù)DSP與本系統(tǒng)模塊兼容的拓展應用奠定良好基礎。
本文的硬件系統(tǒng)的總體結構如圖1所示,其組成主要包括TMS320F2812最小系統(tǒng)、實時時鐘模塊和LCD顯示模塊。
圖1 硬件系統(tǒng)的總體結構
最小系統(tǒng)主要電路如圖2所示,由TMS320F2812主芯片、30MHz有源晶振、電源電路、復位電路、JTAG下載接口和擴展存儲器構成,擴展存儲器通過DSP主芯片的XINTF接口連接CY7C1041CV擴展256K*16位的SDRAM,XINTF接口還連接SST39VF160擴展實際使用128K*16位的FLASH,為了提高系統(tǒng)的抗干擾能力,將電源和地通過電容進行隔離,模擬地和數字地則用電感連接起來。
圖2 TMS320F2812最小系統(tǒng)電路原理圖
實時時鐘模塊選用美國Xicor公司生產的實時時鐘芯片X1226[4],該芯片同時具備時鐘和日歷的功能。其模塊電路原理圖如圖3所示,X1226芯片外接頻率為32.768kHz的晶振,為X1226提供一個實時時鐘的基準時間,保證時鐘程序的計時準確性,其誤差可控制在1s;主芯片通過I2C串行總線與X1226進行數據交互,圖中SCL為串行時鐘,作為數據輸入和輸出的時鐘同步信號,該輸入端的輸入緩沖器總是激活的;SDA為串行數據接口,它是一個雙向引腳,用于輸入或輸出數據。它是一個漏極開路輸出,可以與其他漏極開路或集電極開路輸出端線連接,輸入緩沖器總是激活的。X1226可由VCC供電,當VCC 圖3 實時時鐘模塊電路原理圖 信息的液晶顯示采用深圳拓普微科技開發(fā)有限公司生產LCD19264模塊[5],其屏幕大小為192*64(3塊64*64的屏幕拼接),由行顯示控制芯片S6B0107,列顯示控制芯片S6B0108及其輔助電路構成,控制芯片內部帶有顯示數據RAM緩沖區(qū)。本文液晶顯示模塊電路圖如圖4所示,TMS320F2812采用三態(tài)收發(fā)器HD74HC245P驅動LCD19264模塊,GPIOA0~GPIOA7連接D0~D7,用于傳輸數據,一方面是從液晶顯示模塊讀取數據或狀態(tài),另一方面是向液晶顯示模塊寫數據或者指令,GPIOB6用于控制數據HD74HC245P數據的流向。GPIOB0~GPIOB5的作用是用來產生顯示屏的讀寫、選通等控制信號,這個信號的始終是由DSP到液晶顯示模塊單向傳輸。 圖4 液晶顯示模塊電路原理圖 2.1.1 I2C接口通信方法 如圖5所示的時序邏輯圖,I2C總線要開始傳送數據時,首先將SDA設置為高電平,然后將SCL也設為高電平,接著再將SDA電平拉低,I2C總線開始發(fā)送或接收數據。I2C總線要停止傳送數據時,首先將SDA設置為低電平,然后將SCL設為高電平,接著再將SDA電平拉高,I2C總線停止發(fā)送或接收數據。 圖5 通訊的開始與停止邏輯時序 I2C應答用來表示I2C總線數據傳送成功,邏輯時序如圖6所示,每當主機或從機發(fā)送8位數據后將釋放總線,需要在第9個時鐘周期中,接收器將SDA線電平拉低,作為對接收到8位數據的應答。 圖6 數據應答邏輯時序 2.1.2實時時鐘模塊的操作 X1226內部包含實時時鐘寄存器(RTC)、狀態(tài)寄存器(SR)、控制寄存器(CCR)、報警寄存器(Alarm0、Alarm1)和用戶數據存儲器。由于RTC和SR寫操作十分頻繁,因此其存儲結構為SRAM結構,其他寄存器則均為EEPROM結構。X1226具有512x8位的存儲單元,對時間信息的讀/寫是對相應存儲單元的讀寫,與時間相關的存儲單元內容如表1所示。 表1 X1226存儲單元地址/數據 時間信息寄存器單元內容采用BCD碼表示。地址0x0036單元中,用后三位表示星期信息,0x00代表星期日,0x01~0x06表示星期一至星期六。地址0x0035單元中,數據的最高位0/1表示19XX年/20XX年,低七位用來表示年份的后兩位。地址0x0034單元中,用低五位表示月份信息,0x01~0x12表示1~12月。地址0x0033單元中,用低六位表示日期信息,0x01~0x31表示1~31日。地址0x0032單元中,最高位為1時,低六位表示小時信息,0x00~0x23表示0~23點。地址0x0031單元中,用低七位表示分鐘信息,0x00~0x59表示0~59秒。地址0x0030單元表示秒鐘方式與分鐘表示單元相似。 X1226進行讀寫之前,需要進行初始化,如果是設定CCR,寫操作則寫入#0xDE,讀操作則寫入0xDF;如果是設定其他EEPROM寄存器,讀操作寫入0xAE,讀操作則寫入0xAF,讀寫后需要等待X1226應答信號確認讀寫成功,否則重新初始化。對X1226初始化之后,如果是進行SR的寫操作,首先分兩步發(fā)送訪問地址,X1226上電后,默認其16位地址值為0x0000,讀寫地址通過先發(fā)送8位高字節(jié)地址,后發(fā)送8位低字節(jié)地址的方式實現,接著向SR(0x3F)寫入0x02,確認X1226應答后,即可完成對SR的寫操作。如果是進行CCR或EEPROM的寫操作,則寫入0x02后還需要寫入0x06。還可以進行連續(xù)寫操作,每次應答完畢后,X1226內部地址會自動加1,一頁寫完畢后,X1226會自動跳轉到下一頁的首地址。如果是進行CCR或RCT的讀操作,先進行一次X1226的寫初始化,然后分兩步發(fā)送訪問地址的高字節(jié)和低字節(jié),啟動I2C總線開始讀,進行讀初始化,然后將地址內的數據讀出,可進行連續(xù)讀取,直到I2C總線出現停止邏輯時序。 液晶顯示模塊LCD19264用于顯示從實時時鐘模塊所獲取的時間信息,模塊每個64*64屏點陣分成8頁(0~7),每頁包含8行,通過控制頁面點陣的亮暗組合實現字符的顯示,每個屏幕包含一個頁地址寄存器,一個列地址計數器,一個顯示起始行寄存器,每讀寫一個顯示字節(jié)數據后,列地址計數器自動加1。模塊內含512字節(jié)顯示RAM內,每個字節(jié)單元用于配置對應頁面某一行點陣點(1*8個點)的亮暗,0表示點不顯示,1表示顯示。顯示屏的畫面更新順序為從左到右,從上到下顯示一個頁面后,轉入下一個頁面重復更新順序,直到顯示完畢顯示RAM的最后一個字節(jié)為止。通過片選線CSB,CSA來選選中顯示屏幕,00表示左屏幕,01表示中間屏幕,10表示右邊屏幕,11表示不選。 液晶顯示模塊的命令表如表2所示,命令主要有讀狀態(tài)指令、設置指令和數據讀寫指令3類,表中,顯示開關指令用于設定屏幕顯示的開(D0=1)與關(D0=0),讀狀態(tài)可以讀出當前LCD的運行狀態(tài),由于顯示模塊為慢速設備,需要在運行狀態(tài)不忙(D7=0)的條件下進行數據讀寫。控制顯示過程為:首先顯示字符列表(利用PC軟件自動生成)中獲取顯示字符碼,判斷LCD模塊是否空閑,設定該字符碼顯示的行列值和起始行值,寫入字符碼數據,修正起始行值重復取字符碼和送字符碼過程,直到字符碼全部顯示完畢為止。 表2 LCD19264指令表 軟件程序的總體結構如圖7所示,程序功能是從實時時鐘模塊獲取時間信息后,將時間顯示顯示到液晶顯示模塊的屏幕上。 圖6 軟件程序總體結構 主要程序代碼如下: void InitSys(void) { InitVar();//初始化系統(tǒng)變量 InitSysCtrl();//禁止DSP看門狗,初始化PLL模塊,取時鐘150MHz,配置高速外設時鐘75MHz,配置低速外部時鐘為37.5MHz InitGpio();//初始化GPIOA,GPIOB口 InitX1226();//初始化實時時鐘模塊,初始化時間信息初值 Init LCD19264();//初始化液晶顯示模塊,點亮LCD } void main(void) { InitSys();//系統(tǒng)初始化 while(1) { I2C_Start();//I2C總線啟動 Time_Date=0xDE;// X1226寫操作準備 X1226_SendDate();//發(fā)送字節(jié)數據給X1226 Time_Date=0x00;//秒地址高字節(jié) X1226_SendDate(); Time_Date=0x30;//秒地址低字節(jié) X1226_SendDate(); I2C_Start(); Time_Date=0xDF; // X1226讀操作準備 X1226_SendDate(); for(int i=0;i<7;i++)//依次讀出秒,分,時,日,月,年 { X1226_ACK();//X1226應答確認,X1226內部地址自動加1 Time_RdDate [i]=X1226_ReadDate();//從X1226接收字節(jié)數據 } I2C_Stop();//I2C總線啟動 LCD_Disp();//時間信息送LCD19264模塊顯示 } } 經過多次重復實驗證明,本文所介紹的基于TMS320F2812的數字鐘系統(tǒng)能夠很好地運行,其誤差可控制在1s以內,且能夠自動地進行閏年修正,避免了人為調節(jié)閏年的麻煩。它能夠運用于電機控制系統(tǒng)和電力系統(tǒng)繼電保護裝置等工業(yè)控制系統(tǒng)中,用于記錄各種事件發(fā)生的時間,對于系統(tǒng)的維護、系統(tǒng)的調試及系統(tǒng)的改進等方面都具有重要的意義,能夠在各類系統(tǒng)的計時電路上得到廣泛的應用。 [1] 孫宏志, 等. 實時時鐘芯片X1226使用設計與功能實現[J]. 防災減災學報,2010,26(2):48-53. [2] 張衛(wèi)寧. TMS320C28x系列DSP的CPU與外設[M]. 北京:清華大學出版社, 2005. [3] 徐佩. 高性能DSP芯片TMS320F2812應用技術研究[J]. 航空計算技術,2007,37(5):86-88. [4] 涂水林, 薛正明. 實時時鐘X1226及其與單片機89C51的接口設計[J]. 常熟理工學院學報,2005,19(4):77-81. [5] 李亞東, 等. 多路多段智能溫度控制器的人機界面設計[J]. 臺州學院學報,2016,38(3):5-8. (責任編輯:馬圳煒) Design of digital clock system Based on TMS320F2812 YANG Su-zhen, LIN Ben-jie (School of Mechanical Engineering, Zhangzhou Institute of Technology, Zhangzhou 363000, China) Digital clock has been used widely in many fields. In this paper, a digital clock system is designed based on the chip TMS320F2812 and the real-time clock chip X1226, the LCD19264 liquid crystal display module is used to display the information, the display contents include year, month, day, time, minute and second. The design scheme including the hardware design and software design is described in detail, and the proposed digital clock system has the advantages of simple structure, stable performance and high practicability. digital clock; TMS320F2812; X1226; LCD19264 2017-12-19 福建省中青年教師教育科研項目(JAT160877)。 楊素珍(1982—),福建漳州人,助教,碩士,研究方向:智能機電系統(tǒng)。 1673-1417(2018)01-0043-06 10.13908/j.cnki.issn1673-1417.2018.01.0010 TH39;TN79 A2 軟件系統(tǒng)設計
2.1 X1226 實時時鐘模塊操作
2.2 液晶顯示模塊操作
2.3 程序設計
3 結束語