



摘 "要: 在此計(jì)以STM32系列處理器作為控制器,利用uCGUI進(jìn)行圖形界面設(shè)計(jì),利用循環(huán)移位算法將黑白圖像定制成符合TFT?EFD顯示的數(shù)據(jù)格式,實(shí)現(xiàn)了靜態(tài)EFD圖像的數(shù)據(jù)傳輸,可以根據(jù)實(shí)際要求傳輸不同靜態(tài)EFD圖像,后期如果需要可以升級(jí)成傳輸數(shù)據(jù)流來支持動(dòng)態(tài)顯示。
關(guān)鍵詞: 循環(huán)移位算法; EFD顯示; uCGUI; 數(shù)據(jù)傳輸
中圖分類號(hào): TN919?34; TP274+.2 " " " " " " " 文獻(xiàn)標(biāo)識(shí)碼: A " " " " " " " " " 文章編號(hào): 1004?373X(2015)06?0097?04
Design of EFD image data transmission system
QIU Guang?dong, LUO Zhi?jie, ZHOU Guo?fu
(Institute of Electronic Paper Displays, South China Academy of Adavanced Optoelectronics, South China Normal University, Guangzhou 510006, China)
Abstract: In this design, STM32 series microprocessor is taken as the controller, uCGUI for graphical interface design and cyclic shift algorithm for making the black?and?white image meet the TFT?EFD (Electro? Fluidic Display) data format to realize static EFD image data transmission. It can transmit various static EFD images according to the practical requirement. If needs later on, it can be upgraded to transmit data flow to support the dynamic display.
Keywords: cycle displacement algorithm; electro? fluidic displays; uCGUI; data transmission
電子紙技術(shù)近年來發(fā)展迅速,憑借其超低耗能、閱讀視角廣、類紙顯示等一系列優(yōu)點(diǎn),可能引領(lǐng)新一代的顯示潮流。目前,電子紙的彩色動(dòng)態(tài)圖像顯示是一個(gè)前沿研究方向。EFD(Electrofluidic Display)是一種將電潤(rùn)濕與微流技術(shù)結(jié)合的新型顯示技術(shù),其響應(yīng)時(shí)間可小于10 ms,讓動(dòng)態(tài)顯示成為了可能。動(dòng)態(tài)圖像顯示的前提是實(shí)現(xiàn)靜態(tài)圖像顯示,如果將靜態(tài)圖像顯示成熟穩(wěn)定,那么只要在1 s時(shí)間內(nèi)刷新25幀以上的圖片就可以實(shí)現(xiàn)動(dòng)態(tài)顯示。因此研究靜態(tài)圖像顯示對(duì)找到最佳時(shí)序來實(shí)現(xiàn)動(dòng)態(tài)顯示有著積極的推動(dòng)作用。
1 "設(shè)計(jì)原理
本設(shè)計(jì)采用的單色TFT?EFD顯示屏的分辨率是320×240,行線連接著晶體管的柵極,控制著晶體管的打開與關(guān)閉,列線連接著晶體管的源極,控制著數(shù)據(jù)的傳輸,整體的結(jié)構(gòu)如圖1所示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\24t1.tifgt;
圖1 EPD Panel
基于EFD的圖像顯示經(jīng)歷了圖像采集,圖像傳輸,圖像顯示等步驟。EFD目前只支持黑白圖像顯示,因此圖像采集利用Processing軟件對(duì)圖片進(jìn)行一次加工,轉(zhuǎn)換成黑白圖像。數(shù)據(jù)生成之后需要進(jìn)行傳輸,傳遞給微控制器進(jìn)行處理,這時(shí)需要對(duì)數(shù)據(jù)進(jìn)行二次加工,變成滿足TFTEFD顯示屏驅(qū)動(dòng)芯片要求的格式,之后通過DMA方式傳遞給外部的SRAM。FPGA讀取SRAM的數(shù)據(jù),根據(jù)相應(yīng)的時(shí)序控制驅(qū)動(dòng)芯片輸出數(shù)據(jù),從而實(shí)現(xiàn)圖像顯示。如果控制好時(shí)序,能在1 s內(nèi)刷新25幀以上,那么就可以實(shí)現(xiàn)圖像的動(dòng)態(tài)顯示。
數(shù)據(jù)的傳輸是整個(gè)過程的中間階段,需要進(jìn)行不斷的測(cè)試來找到最優(yōu)的傳輸數(shù)據(jù)時(shí)序,構(gòu)造出相對(duì)完善的波形序列來實(shí)現(xiàn)動(dòng)態(tài)顯示。因此搭建數(shù)據(jù)傳輸系統(tǒng)來顯示不同的圖像,測(cè)試其顯示效果,對(duì)于實(shí)現(xiàn)穩(wěn)定的動(dòng)態(tài)顯示有積極的作用。本設(shè)計(jì)利用uCGUI構(gòu)造圖形控制界面,可以傳輸不同的EFD圖像數(shù)據(jù)給SRAM,F(xiàn)PGA讀取其中的數(shù)據(jù)就可以進(jìn)行圖像顯示,并且系統(tǒng)界面簡(jiǎn)單直觀,操作起來也相對(duì)簡(jiǎn)便。
2 "系統(tǒng)設(shè)計(jì)
2.1 "硬件設(shè)計(jì)
利用STM32F103ZET6微處理器作為主控芯片,SD卡作為存儲(chǔ)設(shè)備,SRAM作為轉(zhuǎn)換數(shù)據(jù)的輸送目的地,TFT?LCD用作顯示與觸摸控制,各個(gè)硬件相互配合構(gòu)建起一個(gè)完整的數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)框圖如圖2所示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\24t2.tifgt;
圖2 系統(tǒng)結(jié)構(gòu)
顯示模塊采用2.8寸ALIENTEK TFTLCD模塊,利用ILI9320控制器作為驅(qū)動(dòng)芯片進(jìn)行驅(qū)動(dòng)。ILI9320液晶控制器自帶顯存,其顯存總大小為172 820 b(240×320×[1818])。并且ALIENTEK TFTLCD模塊自帶電阻式觸摸屏,可以實(shí)現(xiàn)觸控的功能。ALIENTEK TFTLCD模塊自帶的觸摸屏控制芯片為XPT2046,內(nèi)部含有12位分辨率125 kHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器,是一款4導(dǎo)線制觸摸屏控制器。
由于數(shù)據(jù)量比較大,將大量數(shù)據(jù)儲(chǔ)存在SD卡中[1],SD卡的配置使用SPI驅(qū)動(dòng),最高通信速度可達(dá)18 Mb/s,每秒可傳輸數(shù)據(jù)2 MB以上,可以滿足一般的應(yīng)用需求。SRAM采用的是IS62WV51216芯片,存儲(chǔ)容量為1 MB,采用STM32的FSMC接口對(duì)其進(jìn)行配置。FSMC是靈活的靜態(tài)存儲(chǔ)控制器,能夠與同步或異步存儲(chǔ)器、16位PC存儲(chǔ)器卡接口,STM32的FSMC接口支持包括SRAM,NAND FLASH,NOR FLASH等存儲(chǔ)器。本設(shè)計(jì)使用FSMC的BANK1區(qū)域3來控制IS62WV51216芯片。
2.2 "軟件設(shè)計(jì)
FATFS文件系統(tǒng):FATFS是一個(gè)完全免費(fèi)開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計(jì)。它用標(biāo)準(zhǔn)C 語(yǔ)言編寫,一般只需要修改2個(gè)文件,即ffconf.h和diskio.c,之后進(jìn)行簡(jiǎn)單配置就可以移植到單片機(jī)上,進(jìn)而可以對(duì)SD卡和FLASH進(jìn)行文件的讀、寫操作。
uCGUI移植:uCGUI 是一種小型化的嵌入式圖形界面接口,該接口獨(dú)立于處理器和LCD 控制器種類,對(duì)系統(tǒng)的要求很低[2]。它設(shè)計(jì)用于為任何使用LCD圖形顯示的應(yīng)用提供高效的獨(dú)立于處理器和LCD控制器的圖形用戶接口[3],它適用單任務(wù)或是多任務(wù)系統(tǒng)環(huán)境,并且在任意LCD控制器和CPU下進(jìn)行任何尺寸的真實(shí)顯示或虛擬顯示。
本設(shè)計(jì)依靠uCGUI進(jìn)行界面設(shè)計(jì),設(shè)計(jì)比較直觀的按鍵和列表來控制圖像傳輸和圖像顯示。使用uCGUI也需要做移植的工作,移植的工作包括顯示屏和觸摸屏兩個(gè)部分。
顯示屏:首先,TFT?LCD顯示屏的底層驅(qū)動(dòng)函數(shù)需要事先寫好,保證單線程程序中正常顯示。
其次,向工程中加入uCGUI程序包。
再次,根據(jù)自己的顯示屏規(guī)格配置LcdConf.h GuiConf.h
GuiTouchConf.h文件
最后,修改LcdDriver使uCGUI與你的LCD驅(qū)動(dòng)相互關(guān)聯(lián)。
觸摸屏:若要在uCGUI 中使用觸摸屏, 則必須將GUI_SUPPORT_TOUCH (Config 目錄下GUIConf.h中定義的宏)設(shè)置為1[4]。同時(shí)要編寫底層的觸摸屏源驅(qū)動(dòng)函數(shù),對(duì)gui_TouchConf.h文件中進(jìn)行配置,然后在GUI_X_Touch.c文件中進(jìn)行函數(shù)的改動(dòng)。
具體的移植過程可以參考uCGUI使用手冊(cè),這里不再贅述。
數(shù)據(jù)轉(zhuǎn)換算法?循環(huán)移位:顯示屏里每一個(gè)像素格里有一滴彩色油墨,油墨在加電時(shí)會(huì)收縮,在不加電時(shí)會(huì)平鋪。下極板是一層反光隔膜,里邊每一個(gè)像素格里有一個(gè)TFT晶體管作為電壓開關(guān),上極板是玻璃板,當(dāng)在上下極板間加入適當(dāng)電壓,像素格里的油墨就會(huì)打開,用光照射就顯示出明亮狀態(tài),當(dāng)不加電時(shí)就會(huì)平鋪顯示出的是油墨的顏色。EFD?Panel的微觀結(jié)構(gòu)如圖3所示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\24t3.tifgt;
圖3 EPD Panel微結(jié)構(gòu)
由于EFD是國(guó)內(nèi)新型顯示技術(shù),有著自身的圖像數(shù)據(jù)格式,需要定制符合其顯示格式的數(shù)據(jù)來實(shí)現(xiàn)圖像顯示。控制油墨打開與關(guān)閉的芯片要求一個(gè)像素格有兩位進(jìn)行控制,即“01”代表打開,“10”代表關(guān)閉,因此需要對(duì)原始圖像數(shù)據(jù)進(jìn)行二次加工來滿足要求。EPD Panel 的規(guī)格是320×240,即240行,320列,由于驅(qū)動(dòng)芯片的數(shù)據(jù)輸出位數(shù)是8位,因此先定義一個(gè)字符型的二維數(shù)組data[240][80],然后利用內(nèi)存管理單元開辟相應(yīng)的區(qū)域來存放最終數(shù)據(jù)。利用FATFS模塊的f_read函數(shù)從文本文檔里讀取數(shù)據(jù),根據(jù)文檔中每一個(gè)數(shù)據(jù)的內(nèi)容是‘1’還是‘0’,分別對(duì)二維數(shù)組內(nèi)的元素進(jìn)行0x01或0x02的賦值操作,如果移位次數(shù)沒有達(dá)到4次則進(jìn)行左移兩位操作,否則讀取下一個(gè)數(shù)據(jù)重新進(jìn)行判斷。這樣每4個(gè)數(shù)據(jù)構(gòu)成二維數(shù)組里的一個(gè)元素值。接下來的工作就是判斷列數(shù)與行數(shù)是否小于預(yù)先設(shè)定數(shù)值,如果列數(shù)超出設(shè)定值,則行數(shù)加1,從新的一行開始讀取數(shù)據(jù),如果行數(shù)超出設(shè)定值,則循環(huán)結(jié)束,所有數(shù)據(jù)均被轉(zhuǎn)換完。
算法流程圖如圖4所示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\24t4.tifgt;
圖4 圖像轉(zhuǎn)換算法
在Keil集成開發(fā)環(huán)境下利用C語(yǔ)言編寫數(shù)據(jù)格式轉(zhuǎn)換代碼,實(shí)現(xiàn)圖像轉(zhuǎn)換的重要代碼片段如下:
if(*(num++)=='1')
{
if((x%4==0)amp;amp;(x!=0))j++;
data[i][j]|=0x01;
if(x!=(3+4*j))data[i][j]lt;lt;=2;
}
else
{
if(x==320||x==321)continue;
if((x%4==0)amp;amp;(x!=0))j++;
data[i][j]|=0x02;
if(x!=(3+4*j))data[i][j]lt;lt;=2;
}
界面設(shè)計(jì)部分:進(jìn)行完所有的移植工作之后,就可以進(jìn)行界面的設(shè)計(jì),具體的界面程序流程圖如圖5所示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\24t5.tifgt;
圖5 主程序流程圖
整個(gè)系統(tǒng)分成了3個(gè)界面,界面之間可以實(shí)現(xiàn)相互的切換。第一個(gè)界面是進(jìn)入界面,第二個(gè)界面是控制界面,第三個(gè)界面是數(shù)據(jù)列表界面。具體實(shí)現(xiàn)方法是建立了非模態(tài)對(duì)話框,以第一個(gè)界面為例,其對(duì)話框建立代碼為:
GUI_CreateDialogBox(_aDialogCreate1,GUI_COUNTOF(_aDialogCreate1),
amp;_cbCallback1, 0, 0, 0);
構(gòu)造的ENTER按鍵用來控制界面的交換。第二個(gè)界面構(gòu)造了三個(gè)按鍵來實(shí)現(xiàn)不同的控制,包括Begin Button,Exit Button,List Button,利用掃描方式來檢測(cè)按鍵的觸摸,從而執(zhí)行不同的功能函數(shù),代碼片段如下:
switch(GUI_GetKey())
{
case "GUI_ID_BUTTON0: datacopy(col); " //控制數(shù)據(jù)傳送
break;
case "GUI_ID_BUTTON1: LED0=1; " //界面轉(zhuǎn)換標(biāo)志置位
break;
case "GUI_ID_BUTTON2: GUI_Clear();
BUTTON_Delete(hButton[0]);
BUTTON_Delete(hButton[1]);
BUTTON_Delete(hButton[2]);
GUI_CreateDialogBox(ImagelistDialog, "GUI_COUNTOF(ImagelistDialog), nbsp; "amp;listCallBack, 0, 0, 0); " " " " " " "http://界面轉(zhuǎn)換
break;
default:break;
}
第三個(gè)界面是圖像名稱的列表,是將對(duì)話框與列表結(jié)合顯示出存儲(chǔ)在SD卡中圖像名稱,進(jìn)而來控制傳輸不同的圖像。三個(gè)界面的顯示效果如圖6所示。
3 "結(jié) "語(yǔ)
本設(shè)計(jì)可以作為EFD圖像顯示的測(cè)試裝置來進(jìn)行使用,通過顯示不同的圖像來找到合適的波形圖來輔助動(dòng)態(tài)圖像顯示,同時(shí)實(shí)現(xiàn)了信息的可視化顯示[5],后期可以進(jìn)行程序上的修改,對(duì)系統(tǒng)進(jìn)行改進(jìn)與升級(jí),以數(shù)據(jù)流的形式傳輸數(shù)據(jù),和終端的FPGA進(jìn)行配合來實(shí)現(xiàn)動(dòng)態(tài)顯示。
lt;E:\王芳\現(xiàn)代電子技術(shù)201506\現(xiàn)代電子技術(shù)15年38卷第6期\Image\24t6.tifgt;
圖6 整體控制界面
參考文獻(xiàn)
[1] 米波,賀鋒濤.基于STM32的視頻流圖像更新方法的研究[J].西安航空學(xué)院學(xué)報(bào),2014,32(1):64?66.
[2] 王蘭英.基于STM32 嵌入式系統(tǒng)的uCGUI 移植與實(shí)現(xiàn)[J].四川理工學(xué)院學(xué)報(bào),2012,25(1):56?58.
[3] 徐寶國(guó),宋愛國(guó).基于UCOS和UCGU I的嵌入式數(shù)字示波器[J].測(cè)控技術(shù),2007,26(7):7?8.
[4] 王宜結(jié).基于uCGUI 的觸摸屏消息流轉(zhuǎn)機(jī)制的研究[J].淮南師范學(xué)院學(xué)報(bào),2013,15(3):35?37.
[5] 羅衛(wèi)兵,胡健生.基于STM32+uCGUI的北斗導(dǎo)航定位系統(tǒng)設(shè)計(jì)[J].液晶與顯示,2014,29(2):195?201.
[6] 申智源.TFT?LCD技術(shù):結(jié)構(gòu)、原理及制造技術(shù)[M].北京:電子工業(yè)出版社,2012.