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

时间:2016-04-11 18:59:17   收藏:0   阅读:3788

RA8875相信大家都熟悉吧?我们很多工程师都热衷于STM32+RA8875+emWin做界面显示,去年瑞佑又推出了同系列新产品RA8876/RA8877

图形LCD控制器的系统主构架是:FPGA+DDR2+Nand-FlashFPGA里面还跑了个8051,因为要做指令缓冲、FAT32文件系统、Nand-Flash驱动程序,这三样东西没有C语言单靠FPGA是没法实现的,其实和RA8875/RA8876最大的不同就是这三个功能,可以说在某些方面是RA8875/RA8876的升级版!当然成本也没法和RA8875/RA8876比,毕竟我没有能力去做流片或者去做邦定!还是先上图:

技术分享


技术分享


图形LCD控制器框架图:

技术分享

其中I2C控制器是接外部RTC时钟芯片和触摸屏芯片用的,PWM控制器和蜂鸣器控制器其实就是1I/O输出。

 

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

技术分享

不会有人想拿来当U盘用吧?还是SLC颗粒的,哈哈。。。

 

这个是用图形LCD控制器做好的GUI2VGA图形卡:

技术分享

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

对于具备2D图形加速和指令缓冲功能的LCD控制器来说,其实用SPI接口发送指令显示图形、文字、图片就足够了,没必要用Intel 8080总线,麻烦而且显示速度基本一样,因为不管是自己做的图形库还是emWin,写像素操作都是非常少的,更何况20MHzSPI接口写像素速度并不会慢。

特征:

1) 硬件2D图形加速协处理器,快速执行绘图、显示功能。

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

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

4) 24位色(RGB888)显示,网络素材直接用,画面绝不失真。

5) 基于FAT/FAT32文件系统管理字库和图片,支持多级文件夹(子目录),在字库和图片数量非常多时,管理非常方便。

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

7) 字库显示编码格式支持ASCIIGB2312GBKBIG5UNICODE(等宽/非等宽)

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

9) 支持画点、线、圆、矩形和多边形等常用GUI功能。

10) 支持SPI(串行) 或者Intel8080(并行)通信接口。

11) 经优化的高精度四线电阻触摸屏支持。

12) 支持PS/2鼠标和PS/2键盘。

13) 支持4×6矩阵键盘。

14) RTC时钟显示。

15) 16级背光亮度调节。

16) 支持文本光标。

17) 带蜂鸣器。

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

 

技术分享

 

以下是1024×768分辨率下点亮32寸VGA显示器的效果:

技术分享


技术分享

除了EDIT控件以外,其他地方都贴了24位色的BMP图片,以下是这个界面的测试情况:

技术分享


技术分享

除了EDIT控件和下拉列表控件以外,其他地方都贴了24位色的BMP图片,以下是这个界面的测试情况:

技术分享

现在的STM32F207VET6是裸跑emWin的,如果改成跑操作系统,加上其他任务的执行时间,STM32F207VET6的耗时势必也会增加;比如,假如其他任务的执行时间总共是100ms,那么STM32F207VET6的耗时将是229ms,图形LCD控制器的耗时还是272ms;假如其他任务的执行时间总共是200ms,那么STM32F207VET6的耗时将是329ms,图形LCD控制器的耗时将会和STM32F207VET6一样都是329ms

技术分享


技术分享


在这里分析一下指令缓冲机制对整个显示系统的影响:

若显示设备使用的是传统TFT液晶屏时,CPU除了要运行用户程序之外还需要负责液晶图形绘制工作,“程序执行“和“图形绘制”只能是先后关系而不能并行执行,但如果“图形绘制”使用的是DMA机制,“程序执行“和“ 图形绘制”有时是并行执行,有时是先后执行:

技术分享


若显示设备使用的是图形LCD控制器时,CPU在执行液晶图形绘制时是把所有的绘图操作在极短的时间内通过指令传输给图形LCD控制器,然后接着运行用户程序;这样在CPU运行用户程序的同时,图形LCD控制器也在执行绘图操作,所以“程序执行“和“ 图形绘制”是并行执行的:

技术分享

指令缓冲还有个好处是提高图形LCD控制器的显示速度,比如用户CPU发了一条显示矩形的指令给LCD控制器,LCD控制器总要检查矩形有没有超出显示区吧?这个工作LCD控制器可以在DMA等待时间去处理,对显示时间没有影响;但如果没有指令缓冲机制的话,这些工作是要花显示时间的!

 

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

技术分享

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

 

最后做个列表对RA8876SSD1963和图形LCD控制器做个比较:

技术分享

GUI图形屏产品说明书

第一次使用GUI图形屏_HelloWord例程

GUI图形屏性能测试(SPI接口)

emWin注意事项

emWin驱动移植(上)

emWin驱动移植(下)

emWin使用字库和位图

诺嵌光电

www.neqee.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!