AA065VD数据线连接错位的现象及分析总结
作者:LoongEmbedded(kandi)
时间:2011.11.21
类别:WINCE驱动开发
********************************LoongEmbedded********************************
本文基于WINCE6.0+S3C6410的系统
1. 显示屏工作的概述
如果要使LCD显示屏正常显示,不仅需要LCD驱动器,而且还需要相应的LCD控制器。一般情况下,生产LCD显示屏的厂家会把LCD驱动器集成在显示屏中,而LCD控制器则由外部的电路来实现,代表性的是CPU内部集成了LCD控制器,比如S3C6410等,这样就可以通过S3C6410的LCD控制器来产生LCD驱动器所需要的控制信号和数据信号来控制LCD显示屏的正常显示了。
2. S3C6410的LCD控制器功能描述
图1 S3C6410显示控制器的模块图
S3C6410显示控制器由VSFR、VDMA、VPRCS、VTIME和视频时钟发生器组成,VSFR包含可编程寄存器集和两个256*25的调色板存储器,它们用来配置显示控制器;VDMA是一个专门用于显示的DMA,它可以从帧缓冲(frame buffer)中把数据转移到VPRCS中,通过使用这个特殊的DMA,视频数据可以在不需要CPU干涉的情况下显示在显示屏上;VPRCS接收到来之VDMA的数据,先转化为合适的数据格式(比如每个像素8位的模式,或者每个像素16位的模式),然后通过数据端口把视频数据发送到显示设备上。VTIME由可编译逻辑组成,以支持不同LCD驱动器的接口时序和速率的要求,VTIME模块产生RGB-VSYNC、RGB_HSYNC、RGB_VCLK等控制信号。
3. S3C6410显示控制器的视频数据流
图2 视频数据流
S3C6410显示控制器支持5层窗口显示,每层窗口都有一个专门的VDMA,而每个VDMA中都有一个FIFO。当FIFO全部为空或者部分为空时,VDMA以突发内存传输的模式(每次突发请求可以获取4/8/16个字的连续的内存数据,总线传输数据期间不允许总线支配权的变化)来从帧内存(frame memory)获取视频数据。当内存控制器的总线仲裁(bus arbitrator)接收此类型的传输请求时,4/8/16个连续字数据从系统内存(system memory)中转移到内部的FIFO中,然后VPRCS接收到VDMA中FIFO发送过来的视频数据,经过转换为合适的数据格式后发送到视频数据端口,从而发送到显示设备。
4. RGB数据格式
S3C6410显示控制器需要指定帧缓冲区的存储格式,这样VPRCS在从FIFO接收到视频数据后就可以根据指定的存储格式来转换为合适的数据格式发送出去了,比如AA065VD显示屏的RGB引脚分别为666,那么S3C6410显示控制器可以输出RGB666的视频数据,就需要指定帧缓冲的存储格式为RGB666,见下图的描述
图3 RGB666的数据存储格式
我们再来看LCD数据引脚的映射图:
图4 LCD数据引脚映射图
因为我们采用RGB666的视频数据存储格式,由图4可知是VD[23:18]引脚用于输出对应的R[5:0]数据,VD[15:10]引脚输出G[5:0]数据,VD[7:2]引脚输出B[5:0]数据。但如果不小心错向上图一样错位连接了,那么就会出现画面偏色,见下图:
图5 RGB数据线连接错位时的显示画面
那么为什么会出现上面这样的情况呢?我们来比较LCD控制器输出RGB数据时,正确连线和错误连线时LCD显示屏接收到的数据的对比
图6 数据线连接错位和正确连接时LCD接收到的数据对比图