EDN China > 其它文章 > 嵌入式系统 > 正文
?

(多图) S3c2410,ARM平台上对uCGUI的移植实践

作者:gurongjiang: EDN China?? 2009年03月27日 ?? 收藏0

  EDN博客精华文章??作者:gurongjiang

  uC/GUI是Micrium公司的用户图形界面。它给可以方便的移植到基于uC/OS程序上。uC/GUI提供了2D图形库,字库,视窗管理器WM,PC外观控件,以及鼠标与触摸屏的支持。对于一些简单的基于嵌入式平台的应用程序设计可以采用它。

  下面我来谈谈移植的过程:

  1. 虽然uC/GUI可以使用在单任务环境中,但是它可以很好的和uC/OS兼容,所以我推荐先将uC/OS移植好。我的另一篇文章有实践的说明。

  2. 写一个没有操作系统下的LCD驱动,我使用的是NEC的NL2432DR22-12B。我博客也有相关的介绍。

  这里我再强调一下要点,因为GUI移植成败与它直接相关:

  1)初始化LCD的IO口

  2)开启LCD的背光

  3)配置LCDCON1,他主要设置的是vclk(hclk/(clkval+1)*2,clkval自定义),vclk‘一般应该大于6.5M。设置选择了TFT,16bbp的颜色深度等等

  4)配置LCDCON2,3,4。根据时序图(与LCD液晶datasheet相关)例如:

  设置:一下的字域:他们直接影响屏幕的偏移,可以手动慢慢调试也可以计算:

程序

时序图

  方法如下:

  VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图,VBPD=t3/t6=1.02 mS/31.77μs=32。

  VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,

  是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图,VFPD=t5/t6=0.35 ms/31.77μs=11。

  VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。如图,VSPW=t2/t6=0.06 ms/31.77μs=2。

  HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图,VBPD=t7×VCLK=1.89 μs×25MHz=47。

  HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图,HFPD=t9×VCLK=0.94 μs×25 MHz="24"。

  HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数,如图,HSPW=3.77μs×25 MHz="94"。

  3.正式开始移植uC/GUI:

  1)配置config下的LCDConf.h。设置LCD的Xsize和Ysize:

  #define LCD_XSIZE????? (320)?? /* X-resolution of LCD, Logical coor. */

  #define LCD_YSIZE????? (240)?? /* Y-resolution of LCD, Logical coor. */

  设置LCD的总线宽度,等宏

  还有一些其他设置,与具体LCD相关。

  2) 配置config下的GUIConf.h:

  设置GUI的支持,如是否用到WM等。

  设置默认字体,背景色,前景色等。

  3)将已经调试成功的裸机下的LCD移植进来,改写LCDDriver下的LCDSLin.c。

  并且完成GUI要求的借口函数:

程序

  示例:

程序

  完成这些借口函数后,设置相关宏使其可以被LCD_Private.h正常条用,驱动函数应该接入LCD.c下对应的函数中。可以仿真调试看LCD.c中GUI的一些常用绘图函数能否正常的调用自己写的驱动函数。如果可以经正常调用,那么驱动就基本移植成功了。

  效果图:

效果图

点击看原图


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

ARM? uCGUI? LCD?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈