【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

2021-09-09 22:55:25      索炜达电子      669     

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

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

LCD控制器的Nand-Flash可以储存字库和图片,支持FAT32文件系统管理,通过N-LINK下载线连接电脑USB,就可以和U盘一模一样使用(使用系统自带驱动,写速度是3.2Mbytes/S,读速度是5.6Mbytes/S):

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

这样用的话其实就是一个SLC颗粒的U盘。。。

这个是用图形LCD控制器做好的GVGA显示卡,可以接大尺寸的VGA显示器,目前最大支持24位色1280*800@60Hz分辨率:

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

两个2.54简牛插座一个是SPI接口的,另一个是Intel 8080接口的,VGA插座旁边那个是PS/2键盘和鼠标接口,因为市面上大部分USB鼠标和键盘都兼容PS/2,所以就做成了USB插座;再过去那个4脚2.54排针是触摸屏插座,可以接15寸以上的4线电阻触摸屏都没问题,因为触摸屏程序是经过优化的,误差和跳动非常小!鼠标、键盘、触摸屏的触发事件是通过指令回传给CPU,鼠标的光标是由图形LCD控制器内部产生的。

  对于具备2D图形加速和指令缓冲功能的LCD控制器来说,其实用SPI接口发送指令显示图形、文字、图片就足够了,没必要用Intel 8080总线,麻烦而且显示速度基本一样。

目前具备的功能和特征:

1) 硬件2D图形加速协处理器,以硬件DMA的方式显示BMP图片、文字、矩形、圆形、直线、点、区域填充、区域拷贝、显存拷贝等等。

2) Nand-Flash作为字库和图片的储存器(结合N-LINK下载线和U盘一模一样使用)。

3) 双显存自动管理设计,避免屏幕更新时出现”拉窗帘”现象。

4) 24位色(RGB888)显示,带VGA时序输出。

5) 基于FAT/FAT32文件系统管理字库和图片,支持多级文件夹(子目录)。

6) 可自行制作BIN字库,支持多种字库工具生成的字库。

7) 字库显示编码格式支持ASCII、GB2312、GBK、BIG5、UNICODE(等宽/非等宽),并且支持文字剪切显示。

8) 支持16bbp(RGB565)/24bbp(RGB888)的BMP格式位图,可实现图片裁剪、透明显示。

9) 支持SPI(串行) 或者Intel 8080(并行)通信接口。

10) 支持4线电阻触摸屏、PS/2鼠标、PS/2键盘、4×6矩阵键盘、RTC时钟显示、背光亮度调节、文本光标、蜂鸣器。

  注意了,以下功能是没有2D图形加速的:文字放大/缩小、文字旋转、图片放大/缩小、图片旋转、图片半透明显示、图层半透明叠加、图层淡入淡出;因为若要实现这些功能, FPGA成本可能要翻倍!

  因为图形LCD控制器具备图形2D加速功能,而且可储存并显示BIN字库和BMP图片,因此拿它做emWin的显示屏再合适不过了,因为emWin底层驱动已经预留了图形LCD控制器的接口,只要把LCD驱动移植好,显示速度是飞快的,而且不需要担心没有ROM储存字库和图片,还可以用emWin的Skinning方式实现位图皮肤,做位图皮肤时可以整幅图片贴图,而不再需要对整幅图片进行切片分解,界面贴图非常方便、快捷!测试的硬件连接图:

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

以下是800×600分辨率下点亮12寸VGA显示器的效果:

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

看的出是emWin做的界面吗?

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

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

【E976】模仿RA8875/RA8876做个图形LCD控制器,STM32跑emWin接VGA显示器测试OK

不要以为文字剪切显示是个简单的事情,用FPGA逻辑来实现并不那么简单,也许瑞佑觉得这个功能不重要所以没在RA8875/RA8876上实现,但在emWin应用中如果没有文字剪切显示的话就没法做移动窗口了!

目录│文件列表:

 │ 不绕弯路,获取海量资源.jpg

 └ demo_emwin_skinPRJ_V530noOS_CodeBlocks_v116

    │ CleanUp.bat

    │ ReadMe.html

    │ readme.txt

    │ SimError.log

    │ SimulationTrial.cbp

    │ SimulationTrial.cscope_file_list

    │ SimulationTrial.depend

    │ SimulationTrial.layout

    ├ Application

    │  │ bitmap.h

    │  │ MainTask.c

    │  │ WindowDLG.rar

    │  │ WINpage1.c

    │  │ WINpage1_top.c

    │  │ WINpage2.c

    │  │ WINpage2_top.c

    │  │ wintop.c

    │  │ wintop.h

    │  ├ pics

    │  │  │ Page1_M.bmp

    │  │  │ Page1_M.c

    │  │  │ Page1_N.bmp

    │  │  │ Page1_N.c

    │  │  │ Page1_P.bmp

    │  │  │ Page1_P.c

    │  │  │ Page1_TN.bmp

    │  │  │ Page1_TN.c

    │  │  │ Page2_M.bmp

    │  │  │ Page2_M.c

    │  │  │ Page2_N.bmp

    │  │  │ Page2_N.c

    │  │  │ Page2_P.bmp

    │  │  │ Page2_P.c

    │  │  ├ mov0

    │  │  │  │ 00.bmp

    │  │  │  │ 00.c

    │  │  │  │ 01.bmp

    │  │  │  │ 01.c

    │  │  │  │ 02.bmp

    │  │  │  │ 02.c

    │  │  │  │ 03.bmp

    │  │  │  │ 03.c

    │  │  │  │ 04.bmp

    │  │  │  │ 04.c

    │  │  │  │ 05.bmp

    │  │  │  │ 05.c

    │  │  │  │ 06.bmp

    │  │  │  │ 06.c

    │  │  │  │ 07.bmp

    │  │  │  │ 07.c

    │  │  │  │ 08.bmp

    │  │  │  │ 08.c

    │  │  │  │ 09.bmp

    │  │  │  │ 09.c

    │  │  │  │ 10.bmp

    │  │  │  │ 10.c

    │  │  │  │ 11.bmp

    │  │  │  │ 11.c

    │  │  │  │ 12.bmp

    │  │  │  │ 12.c

    │  │  │  │ 13.bmp

    │  │  │  │ 13.c

    │  │  │  │ 14.bmp

    │  │  │  │ 14.c

TAGRA8875
  • 5 次
  • 1 分