glcd 发表于 2016-6-4 02:27:24

模仿RA8875_RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

本帖最后由 glcd 于 2016-6-11 23:30 编辑

   图形LCD控制器的系统主构架是:FPGA+DDR2+Nand-Flash,FPGA里面还跑了个8051,因为要做指令缓冲、FAT32文件系统、Nand-Flash驱动程序,这三样东西没有C语言单靠FPGA基本是没法实现的,其实这也是图形LCD控制器和RA8875/RA8876最大不同的地方,可以说在某些方面是RA8875/RA8876的升级版:

   LCD控制器的Nand-Flash可以储存字库和图片,支持FAT32文件系统管理,可以和U盘一模一样使用(使用系统自带驱动,写速度是3.2Mbytes/S,读速度是5.6Mbytes/S):

这样用的话其实就是一个SLC颗粒的U盘。。。这个是用图形LCD控制器做好的GVGA显示卡,可以接大尺寸的VGA显示器,目前最大支持24位色1280*800@60Hz分辨率:
对于具备2D图形加速和指令缓冲功能的LCD控制器来说,其实用SPI接口发送指令显示图形、文字、图片就足够了,没必要用Intel 8080总线,麻烦而且显示速度基本一样。目前具备的功能和特征:1) 基于emWin应用,可实现组态、拖放式人机用户界面设计。2) 硬件2D图形加速协处理器,以硬件DMA的方式显示BMP图片、文字、矩形、圆形、直线、点、区域填充、区域拷贝、显存拷贝等等。3) Nand-Flash作为字库和图片的储存器(结合N-LINK下载线和U盘一模一样使用)。4) 双显存自动管理设计,避免屏幕更新时出现”拉窗帘”现象。5) 24位色(RGB888)显示,带VGA时序输出。6) 基于FAT/FAT32文件系统管理字库和图片,支持多级文件夹(子目录)。7) 可自行制作BIN字库,支持多种字库工具生成的字库。8) 字库显示编码格式支持ASCII、GB2312、GBK、BIG5、UNICODE(等宽/非等宽),并且支持文字剪切显示。9) 支持16bbp(RGB565)/24bbp(RGB888)的BMP格式位图,可实现图片裁剪、透明显示。10) 支持SPI(串行) 或者Intel 8080(并行)通信接口。11) 支持4线电阻触摸屏、PS/2鼠标、PS/2键盘、4×6矩阵键盘、RTC时钟显示、背光亮度调节、文本光标、蜂鸣器。注意了,以下功能是没有2D图形加速的:文字放大/缩小、文字旋转、图片放大/缩小、图片旋转、图片半透明显示、图层半透明叠加、图层淡入淡出;因为若要实现这些功能, FPGA成本可能要翻倍!因为图形LCD控制器具备图形2D加速功能,而且可储存并显示BIN字库和BMP图片,因此拿它做emWin的显示屏再合适不过了,因为emWin底层驱动已经预留了图形LCD控制器的接口,只要把LCD驱动移植好,显示速度是飞快的,而且不需要担心没有ROM储存字库和图片,还可以用emWin的Skinning方式实现位图皮肤,做位图皮肤时可以整幅图片贴图,而不再需要对整幅图片进行切片分解,界面贴图非常方便、快捷!测试的硬件连接图:
以下是800×600分辨率下点亮12寸VGA显示器的效果:

看的出是emWin做的界面吗?



图形LCD控制器还有一个比RA8875/RA8876好的地方就是能实现文字剪切显示:


做个列表对RA8876、SSD1963和图形LCD控制器做个比较:
功能RA8876图形LCD控制器SSD1963
MCU接口8080/6800/I2C/SPI8080/SPI8080/6800
最大分辨率多显存
1366×768@16.77M色双显存
1280×800@16.77M色单显存
864×480@16.77M色
显存区多显存区,用户随意切换和操作各个显存区;可实现混合透明、画中画等双显存区,操作区和显示区自动切换管理单显存区
BTE区块传输引擎显存/区域拷贝、光栅操作、混合透明、淡入淡出、画中画等显存/区域拷贝不支持
外部ROMSPI-FlashNand-Flash不支持
外部ROM访问接口不支持USB(U盘模式)
FAT32文件系统管理不支持
字库SPI字库芯片
ASCII/GB2312/BIG5/
Unicode
文字90度旋转显示
通过寄存器控制显示(DMA)自己制作BIN字库
U盘模式写入Nand-Flash
ASCII/GB2312/BIG5/
Unicode(等宽/非等宽)
文字剪切显示
通过指令控制显示(DMA)不支持
图片BMP位图
单色/TFT相同颜色
预存外部SPI-Flash
通过寄存器控制显示(DMA)BMP位图
16/24位色
U盘模式写入Nand-Flash
通过指令控制显示(DMA)不支持
2D图形加速协处理器画点、线、曲线、椭圆、三角形、矩形、圆角矩形、区域填充
通过寄存器管理画点、线、椭圆、矩形、区域填充
通过指令管理不支持
指令缓存不支持支持不支持
PS/2设备不支持PS/2鼠标、PS/2键盘不支持
矩阵键盘5×5矩阵键盘4×6矩阵键盘不支持
触摸屏4线电阻4线电阻(外接控制器IC)不支持
光标4个图形光标1个文本光标,1个图形光标不支持
PWM2路1路不支持
RTC实时时钟不支持支持(外接RTC时钟IC)不支持
待机模式支持不支持不支持
最后奉献上emWin通过Skinning方式实现位图皮肤的源代码:

加拿大 发表于 2016-6-4 17:19:26

好高端啊!{:3_41:}

glcd 发表于 2016-6-6 01:07:32

加拿大 发表于 2016-6-4 17:19
好高端啊!

献丑了,没什么技术含量,自己顶一下~~~~~

xjhylg 发表于 2016-6-6 01:38:59

想不出咋形容了.
只能说老母牛不下崽-----NB坏了.

glcd 发表于 2016-6-13 13:02:50

xjhylg 发表于 2016-6-6 01:38
想不出咋形容了.
只能说老母牛不下崽-----NB坏了.

哈哈,多谢支持!说白了我只是做了个SPI串口屏而已,只是SPI接口通信更高速,以至可以用到emWin上。emWin做界面太有优势了,不用白浪费!
发个emWin界面效果演示:

vitence 发表于 2016-7-10 14:04:54

学习下

87866906 发表于 2016-8-17 11:00:14

很想看看啊 谢谢

newphj 发表于 2016-8-17 13:13:08

太NB坏了。。。好想搞一块

qunda 发表于 2016-9-1 15:36:58

楼主表格可以导出EXCL吗?

wolfgang2015 发表于 2016-9-1 15:45:03

高级应用,赞一个~~~
页: [1] 2
查看完整版本: 模仿RA8875_RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK