社区导航

 

搜索
查看: 4561|回复: 19

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

[复制链接]

16

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-6-4 02:46 | 显示全部楼层 |阅读模式

   看到STM32+RA8875+emWin做人机界面这么流行,于是也用FPGA模仿RA8875做了个图形LCD控制器。图形LCD控制器的系统主构架是:FPGA+DDR2+Nand-FlashFPGA里面还跑了个8051,因为要做指令缓冲、FAT32文件系统、Nand-Flash驱动程序,这三样东西没有C语言单靠FPGA基本是没法实现的,其实这也是图形LCD控制器和RA8875/RA8876最大不同的地方,可以说在某些方面是RA8875/RA8876的升级版!还是先上图:
image001.jpg
   LCD控制器的Nand-Flash可以储存字库和图片,支持FAT32文件系统管理,通过N-LINK下载线连接电脑USB,就可以和U盘一模一样使用(使用系统自带驱动,写速度是3.2Mbytes/S,读速度是5.6Mbytes/S)
image003.jpg
这样用的话其实就是一个SLC颗粒的U盘。。。
这个是用图形LCD控制器做好的GVGA显示卡,可以接大尺寸的VGA显示器,目前最大支持24位色1280*800@60Hz分辨率:

image005.jpg
  两个2.54简牛插座一个是SPI接口的,另一个是Intel 8080接口的,VGA插座旁边那个是PS/2键盘和鼠标接口,因为市面上大部分USB鼠标和键盘都兼容PS/2,所以就做成了USB插座;再过去那个42.54排针是触摸屏插座,可以接15寸以上的4线电阻触摸屏都没问题,因为触摸屏程序是经过优化的,误差和跳动非常小!鼠标、键盘、触摸屏的触发事件是通过指令回传给CPU,鼠标的光标是由图形LCD控制器内部产生的。
  对于具备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) 字库显示编码格式支持ASCIIGB2312GBKBIG5UNICODE(等宽/非等宽),并且支持文字剪切显示。
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储存字库和图片,还可以用emWinSkinning方式实现位图皮肤,做位图皮肤时可以整幅图片贴图,而不再需要对整幅图片进行切片分解,界面贴图非常方便、快捷!测试的硬件连接图:

image007.jpg

以下是800×600分辨率下点亮12寸VGA显示器的效果:
image009.jpg
看的出是emWin做的界面吗?


image011.jpg

image013.png

image015.png

图形LCD控制器还有一个比RA8875/RA8876好的地方就是能实现文字剪切显示:
image017.jpg
  不要以为文字剪切显示是个简单的事情,用FPGA逻辑来实现并不那么简单,也许瑞佑觉得这个功能不重要所以没在RA8875/RA8876上实现,但在emWin应用中如果没有文字剪切显示的话就没法做移动窗口了!
做个列表对RA8876SSD1963图形LCD控制器做个比较:
  
   
  
RA8876
图形LCD控制器
SSD1963
MCU接口
8080/6800/I2C/SPI
8080/SPI
8080/6800
最大分辨率
多显存
  1366×768@16.77M
双显存
  1280×800@16.77M
单显存
  864×480@16.77M
显存区
多显存区,用户随意切换和操作各个显存区;可实现混合透明、画中画等
双显存区,操作区和显示区自动切换管理
单显存区
BTE区块传输引擎
显存/区域拷贝、光栅操作、混合透明、淡入淡出、画中画等
显存/区域拷贝
不支持
外部ROM
SPI-Flash
Nand-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个图形光标
不支持
PWM
2
1
不支持
RTC实时时钟
不支持
支持(外接RTC时钟IC)
不支持
待机模式
支持
不支持
不支持


最后奉献上emWin通过Skinning方式实现位图皮肤的源代码,用emWin的朋友应该很感兴趣:
demo_emwin_skinPRJ_V530noOS_CodeBlocks_v116.rar (4.13 MB, 下载次数: 82)

回复

使用道具 举报

714

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2016-6-4 08:16 | 显示全部楼层
楼主自己搞的??

回复

使用道具 举报

275

TA的帖子

4

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-6-4 08:25 | 显示全部楼层

回复

使用道具 举报

54

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-6-4 09:06 | 显示全部楼层
不错呦,顶一个!
相信自己,力争最佳状态的自己

回复

使用道具 举报

533

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2016-6-4 09:09 | 显示全部楼层
大神级别
刻苦学习,共同进步

回复

使用道具 举报

117

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2016-6-4 09:32 | 显示全部楼层
不错,顶一个。
逆风的方向更适合飞翔!

回复

使用道具 举报

1214

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

测评达人

发表于 2016-6-4 10:33 | 显示全部楼层
厉害!

回复

使用道具 举报

841

TA的帖子

5

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

荣誉会员勋章

发表于 2016-6-4 10:46 | 显示全部楼层
好厉害,赞一个

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-6-4 11:15 | 显示全部楼层

回复

使用道具 举报

16

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2016-6-6 01:39 | 显示全部楼层
残雪 发表于 2016-6-4 10:46
好厉害,赞一个

没什么技术含量,献丑了~~~~~
GLCD主要是为了让emWin可以像串口屏、组态屏一样方便使用字库和图片,GLCD和串口屏、组态屏最大的区别是emWin管理控件、页面和用户程序更方便一些,界面和用户程序的移植性更好,串口屏、组态屏换个厂家的话程序基本上又要重新写一遍...

回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-6-6 06:02 | 显示全部楼层
大神出现了
http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-6-6 06:05 | 显示全部楼层
本帖最后由 ddllxxrr 于 2016-6-6 06:07 编辑

Nand Flash是FPGA控制么?????坏块管理也在其中么????

http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

使用道具 举报

16

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2016-6-6 23:53 来自手机 | 显示全部楼层


是的,nand flash的控制和管理都在fpga那边实现的

回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-6-7 05:33 | 显示全部楼层
glcd 发表于 2016-6-6 23:53
是的,nand flash的控制和管理都在fpga那边实现的

http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

使用道具 举报

1万

TA的帖子

15

TA的资源

版主

Rank: 6Rank: 6

发表于 2016-6-7 05:34 | 显示全部楼层
glcd 发表于 2016-6-6 23:53
是的,nand flash的控制和管理都在fpga那边实现的

http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr

回复

使用道具 举报

16

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2016-6-7 10:32 | 显示全部楼层
原来是版主,失敬失敬!

回复

使用道具 举报

3

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-6-11 21:52 | 显示全部楼层
厉害!我以前用过ucgui,感觉做界面不错,控件用起来很方便,就是比较耗RAM!楼主这个思路不错,赞一个~~~

回复

使用道具 举报

16

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2016-6-13 12:32 | 显示全部楼层
tq6639 发表于 2016-6-11 21:52
厉害!我以前用过ucgui,感觉做界面不错,控件用起来很方便,就是比较耗RAM!楼主这个思路不错,赞一个~~ ...

现在的CPU RAM都比较大,比如STM32F103VC都有48Kbytes的SRAM了,才11RMB,一般做简单的界面也够用了。但emWin做界面优势还是很大的,你应该同意这个说法吧?哈哈

回复

使用道具 举报

16

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2016-6-13 12:55 | 显示全部楼层
发个emWin界面效果演示: GLCD-EMWIN模拟器效果演示.rar (497.4 KB, 下载次数: 26)

回复

使用道具 举报

2

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2016-6-24 10:34 | 显示全部楼层
很厉害

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/7 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

词云| Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-7-14 03:54 , Processed in 0.565189 second(s), 41 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表