看到STM32+RA8875+emWin做人機(jī)界面這么流行,于是也用FPGA模仿RA8875做了個(gè)圖形LCD控制器。圖形LCD控制器的系統(tǒng)主構(gòu)架是:FPGA+DDR2+Nand-Flash,FPGA里面還跑了個(gè)8051,因?yàn)橐鲋噶罹彌_、FAT32文件系統(tǒng)、Nand-Flash驅(qū)動(dòng)程序,這三樣?xùn)|西沒有C語言單靠FPGA基本是沒法實(shí)現(xiàn)的,其實(shí)這也是圖形LCD控制器和RA8875/RA8876最大不同的地方,可以說在某些方面是RA8875/RA8876的升級(jí)版!還是先上圖:
LCD控制器的Nand-Flash可以儲(chǔ)存字庫和圖片,支持FAT32文件系統(tǒng)管理,通過N-LINK下載線連接電腦USB,就可以和U盤一模一樣使用(使用系統(tǒng)自帶驅(qū)動(dòng),寫速度是3.2Mbytes/S,讀速度是5.6Mbytes/S):
這樣用的話其實(shí)就是一個(gè)SLC顆粒的U盤。。。 這個(gè)是用圖形LCD控制器做好的GVGA顯示卡,可以接大尺寸的VGA顯示器,目前最大支持24位色1280*800@60Hz分辨率:
兩個(gè)2.54簡牛插座 一個(gè)是SPI接口的,另一個(gè)是Intel 8080接口的,VGA插座旁邊那個(gè)是PS/2鍵盤和鼠標(biāo)接口,因?yàn)槭忻嫔洗蟛糠?/font>USB鼠標(biāo)和鍵盤都兼容PS/2,所以就做成了USB插座;再過去那個(gè)4腳2.54排針是觸摸屏插座,可以接15寸以上的4線電阻觸摸屏都沒問題,因?yàn)橛|摸屏程序是經(jīng)過優(yōu)化的,誤差和跳動(dòng)非常小!鼠標(biāo)、鍵盤、觸摸屏的觸發(fā)事件是通過指令回傳給CPU,鼠標(biāo)的光標(biāo)是由圖形LCD控制器內(nèi)部產(chǎn)生的。 對(duì)于具備2D圖形加速和指令緩沖功能的LCD控制器來說,其實(shí)用SPI接口發(fā)送指令顯示圖形、文字、圖片就足夠了,沒必要用Intel 8080總線,麻煩而且顯示速度基本一樣。 目前具備的功能和特征: 1) 基于emWin應(yīng)用,可實(shí)現(xiàn)組態(tài)、拖放式人機(jī)用戶界面設(shè)計(jì)。 2) 硬件2D圖形加速協(xié)處理器,以硬件DMA的方式顯示BMP圖片、文字、矩形、圓形、直線、點(diǎn)、區(qū)域填充、區(qū)域拷貝、顯存拷貝等等。 3) Nand-Flash作為字庫和圖片的儲(chǔ)存器(結(jié)合N-LINK下載線和U盤一模一樣使用)。 4) 雙顯存自動(dòng)管理設(shè)計(jì),避免屏幕更新時(shí)出現(xiàn)”拉窗簾”現(xiàn)象。 5) 24位色(RGB888)顯示,帶VGA時(shí)序輸出。 6) 基于FAT/FAT32文件系統(tǒng)管理字庫和圖片,支持多級(jí)文件夾(子目錄)。 7) 可自行制作BIN字庫,支持多種字庫工具生成的字庫。 8) 字庫顯示編碼格式支持ASCII、GB2312、GBK、BIG5、UNICODE(等寬/非等寬),并且支持文字剪切顯示。 9) 支持16bbp(RGB565)/24bbp(RGB888)的BMP格式位圖,可實(shí)現(xiàn)圖片裁剪、透明顯示。 10) 支持SPI(串行) 或者Intel 8080(并行)通信接口。 11) 支持4線電阻觸摸屏、PS/2鼠標(biāo)、PS/2鍵盤、4×6矩陣鍵盤、RTC時(shí)鐘顯示、背光亮度調(diào)節(jié)、文本光標(biāo)、蜂鳴器。 注意了,以下功能是沒有2D圖形加速的:文字放大/縮小、文字旋轉(zhuǎn)、圖片放大/縮小、圖片旋轉(zhuǎn)、圖片半透明顯示、圖層半透明疊加、圖層淡入淡出;因?yàn)槿粢獙?shí)現(xiàn)這些功能, FPGA成本可能要翻倍!
因?yàn)閳D形LCD控制器具備圖形2D加速功能,而且可儲(chǔ)存并顯示BIN字庫和BMP圖片,因此拿它做emWin的顯示屏再合適不過了,因?yàn)?/font>emWin底層驅(qū)動(dòng)已經(jīng)預(yù)留了圖形LCD控制器的接口,只要把LCD驅(qū)動(dòng)移植好,顯示速度是飛快的,而且不需要擔(dān)心沒有ROM儲(chǔ)存字庫和圖片,還可以用emWin的Skinning方式實(shí)現(xiàn)位圖皮膚,做位圖皮膚時(shí)可以整幅圖片貼圖,而不再需要對(duì)整幅圖片進(jìn)行切片分解,界面貼圖非常方便、快捷!測試的硬件連接圖:
以下是800×600分辨率下點(diǎn)亮12寸VGA顯示器的效果:
看的出是emWin做的界面嗎?
圖形LCD控制器還有一個(gè)比RA8875/RA8876好的地方就是能實(shí)現(xiàn)文字剪切顯示:
不要以為文字剪切顯示是個(gè)簡單的事情,用FPGA邏輯來實(shí)現(xiàn)并不那么簡單,也許瑞佑覺得這個(gè)功能不重要所以沒在RA8875/RA8876上實(shí)現(xiàn),但在emWin應(yīng)用中如果沒有文字剪切顯示的話就沒法做移動(dòng)窗口了! 做個(gè)列表對(duì)RA8876、SSD1963和圖形LCD控制器做個(gè)比較:
功能 |
RA8876
|
圖形LCD控制器
|
SSD1963
|
|
8080/6800/I2C/SPI
|
8080/SPI
|
8080/6800
|
最大分辨率
|
|
|
|
顯存區(qū)
|
多顯存區(qū),用戶隨意切換和操作各個(gè)顯存區(qū);可實(shí)現(xiàn)混合透明、畫中畫等
|
雙顯存區(qū),操作區(qū)和顯示區(qū)自動(dòng)切換管理
|
單顯存區(qū)
|
BTE區(qū)塊傳輸引擎
|
顯存/區(qū)域拷貝、光柵操作、混合透明、淡入淡出、畫中畫等
|
顯存/區(qū)域拷貝
|
不支持
|
外部ROM
|
SPI-Flash
|
Nand-Flash
|
不支持
|
外部ROM訪問接口
|
不支持
|
USB(U盤模式)
FAT32文件系統(tǒng)管理
|
不支持
|
字庫
|
SPI字庫芯片
ASCII/GB2312/BIG5/
Unicode
文字90度旋轉(zhuǎn)顯示
通過寄存器控制顯示(DMA)
|
自己制作BIN字庫
U盤模式寫入Nand-Flash
ASCII/GB2312/BIG5/
Unicode(等寬/非等寬)
文字剪切顯示
通過指令控制顯示(DMA)
|
不支持
|
圖片
|
BMP位圖
單色/TFT相同顏色
預(yù)存外部SPI-Flash
通過寄存器控制顯示(DMA)
|
BMP位圖
16/24位色
U盤模式寫入Nand-Flash
通過指令控制顯示(DMA)
|
不支持
|
2D圖形加速協(xié)處理器
|
畫點(diǎn)、線、曲線、橢圓、三角形、矩形、圓角矩形、區(qū)域填充
通過寄存器管理
|
畫點(diǎn)、線、橢圓、矩形、區(qū)域填充
通過指令管理
|
不支持
|
指令緩存
|
不支持
|
支持
|
不支持
|
PS/2設(shè)備
|
不支持
|
PS/2鼠標(biāo)、PS/2鍵盤
|
不支持
|
矩陣鍵盤
|
5×5矩陣鍵盤
|
4×6矩陣鍵盤
|
不支持
|
觸摸屏
|
4線電阻
|
4線電阻(外接控制器IC)
|
不支持
|
光標(biāo)
|
4個(gè)圖形光標(biāo)
|
1個(gè)文本光標(biāo),1個(gè)圖形光標(biāo)
|
不支持
|
|
2路
|
1路
|
不支持
|
RTC實(shí)時(shí)時(shí)鐘
|
不支持
|
支持(外接RTC時(shí)鐘IC)
|
不支持
|
待機(jī)模式
|
支持
|
不支持
|
不支持
|
最后奉獻(xiàn)上emWin通過Skinning方式實(shí)現(xiàn)位圖皮膚的源代碼:
|