分类: WINCE驱动开发2014-01-17 18:53 546人阅读 评论(2) 收藏 举报

WINCE6.0+ILI9806E驱动IC显示屏调试总结

显示屏部分原理图如下:

图1

显示屏采用的驱动IC是ILI9806E_IDT,支持多种分辨率,但此显示屏只支持480*800。显示屏VCC(30)引脚接到驱动IC的VCI引脚,VCI的供电范围是2.5V ~ 3.6V,IOVCC(31)引脚接到驱动IC的IOVCC,IOVCC的供电范围是1.65V ~ 3.6V。

我们暂时是在之前也是RGB接口的硬件平台上飞线调试的,在调试过程中遇到下面一些问题,总结如下:

1.  显示深度偏白

整个图像严重深度偏白,但如果斜视显示屏就比较接近实际的图像颜色,显示图像如下:

图2

我们在设计VCC采用2.8V,IOVCC采用1.8V的,设计测试的时候IOVCC确实2.283V左右,这是因为CPU这边的GPIO是3.3V的,和IOVCC的1.8V有较大的压差,引起了电流倒灌,就导致了图2中显示不正常的现象,把VCC和IOVCC都接到2.8V就OK了。

3.276

2.792

2.  显示偏色

IOVCC问题解决后,虽然可以看到图像了,但还是偏色,如下图:

图3

很奇怪啊,我们目前已有的产品CPU显示控制器硬件上是用RGB666(但CPU这边软件上是采用RGB565,也就是一个像素16位的)来连接显示屏的RGB666,现在的接法也一样,为什么之前的可以正常显示,现在的显示屏就偏色呢?因为之前调试显示屏的时候也遇到过偏色问题,是因为CPU和显示屏的RGB没有对应后引起的,所以也就朝这个方向来努力,果然问题就在这里。

先来看下为什么之前的显示屏就可以正常显示

(1) 驱动IC引脚和RGB数据对应关系

原来的显示屏是TFT1N5676,驱动IC是HX8347-D_DS_T,此驱动IC把下面这些RGB数据接口作为显示屏接口引出去:

图4

此驱动IC支持6-/16-/18-bit RGB 接口,RGB数据位和引出的数据引脚如下图:

图5

可知R和B都是最高位对齐。

(2) CPU和显示屏的原理图

接着我们来看原理图部分:

图6

CPU显示控制器虽然用RGB666的连接方式,但CPU软件上采用的是RGB565,驱动IC选择的是RGB666,结合图5来看,就算CPU软件采用RGB565,驱动IC采用RGB666,那么系统这边送过来的R[4:0]还是可以送到驱动IC对应的R[5:1],B[4:0]还是可以送到驱动IC对应的R[5:1]最高位到最低位,而驱动IC的R0和B0是采用默认是随机值,因为都是最低位,所以对R和B颜色的影响非常小,不影响使用。其中CPU和驱动IC的RGB对应关系如下

RGB数据-------CP引脚-------连接符号-------显示屏引脚--------显示屏符号--------驱动IC RGB数据

R[5:0]----------GPD[15:10]----------VD[17:12]--------10:15----------DB[17:12]------------R[5:0]

R实际只有5位,这样CPU这边还是能够把R最高位送到驱动IC R的最高位

R4(最高位)-----------GPD15------------------VD17-------------10----------------DB17------R5(最高位)

R3-----------------------GPD14------------------VD16-------------11----------------DB16------R4

R2-----------------------GPD13------------------VD15-------------12----------------DB15------R3

R1-----------------------GPD12------------------VD14-------------13----------------DB14------R2

R0(最低位)-----------GPD11------------------VD13-------------14----------------DB13------R1

-----------------------GPD10------------------VD12-------------15----------------DB12------R0(最低位)

G[5:0]----------GPD[7:2]----------VD[11:6]--------16:21----------DB[11:6]------------G[5:0]

G5(最高位)-----------GPD7------------------VD11-------------16----------------DB11------G5(最高位)

G4-----------------------GPD6------------------VD10-------------17----------------DB10------G4

G3-----------------------GPD5------------------VD9---------------18----------------DB9-------G3

G2-----------------------GPD4------------------VD8---------------19----------------DB8-------G2

G1-----------------------GPD3------------------VD7---------------20----------------DB7-------G1

G0(最低位)---------- GPD2------------------VD6---------------21----------------DB6-------G0(最低位)

B[5:0]----------GPC[15:10]----------VD[5:0]--------22:27----------DB[5:0]------------B[5:0]

B实际只有5位,这样CPU这边还是能够把B最高位送到驱动IC B的最高位

B4(最高位)-----------GPC15------------------VD5-------------22----------------DB5------B5(最高位)

B3-----------------------GPC14------------------VD4-------------23----------------DB4------B4

B2-----------------------GPC13------------------VD3-------------24----------------DB3------B3

B1-----------------------GPC12------------------VD2-------------25----------------DB2------B2

B0(最低位)-----------GPC11------------------VD1-------------26----------------DB1------B1

-----------------------GPC10------------------VD0-------------27----------------DB0------B0(最低位)

接下来看我们新驱动ILI9806E_IDT为什么会出现显示偏色

(1) 驱动IC引脚和RGB数据对应关系

图7

可以看到此驱动IC支持16/18/24bit,都是最低位对齐,恰好和之前的驱动IC最高位对齐相反

(2) CPU和显示屏的原理图

显示屏厂家给的初始化代码默认也是选择18bit的,因为之前的OK,所以也就没有修改这里,我们CPU硬件连接还是采用之前的RGB666,CPU软件采用RGB565,原理图如下:

图8

RGB数据-------CP引脚-------连接符号-------显示屏引脚--------显示屏符号--------驱动IC RGB引脚

R[5:0]----------GPD[15:10]----------VD[17:12]--------19:14----------DB[21:16]------------R[5:0]

R实际只有5位,根据原理图设计,CPU这边还是能够把R最高位送到驱动IC R的最高位

R4(最高位)-----------GPD15------------------VD17-------------19----------------DB21------R5(最高位)

R3-----------------------GPD14------------------VD16-------------18----------------DB20------R4

R2-----------------------GPD13------------------VD15-------------17----------------DB19------R3

R1-----------------------GPD12------------------VD14-------------16----------------DB18------R2

R0(最低位)-----------GPD11------------------VD13-------------15----------------DB17------R1

-----------------------GPD10------------------VD12-------------14----------------DB16------R0(最低位)

G[5:0]----------GPD[7:2]----------VD[11:6]--------13:8----------DB[13:8]------------G[5:0]

G5(最高位)-----------GPD7------------------VD11-------------13----------------DB13------G5(最高位)

G4-----------------------GPD6------------------VD10-------------12----------------DB12------G4

G3-----------------------GPD5------------------VD9---------------11----------------DB11-------G3

G2-----------------------GPD4------------------VD8---------------10----------------DB10-------G2

G1-----------------------GPD3------------------VD7---------------9------------------DB9-------G1

G0(最低位)---------- GPD2------------------VD6---------------8------------------DB8-------G0(最低位)

B[5:0]----------GPC[15:10]----------VD[5:0]--------7:2----------DB[5:0]------------B[5:0]

B实际只有5位,这样CPU这边还是能够把B最高位送到驱动IC B的最高位

B4(最高位)-----------GPC15------------------VD5-------------22----------------DB5------B5(最高位)

B3-----------------------GPC14------------------VD4-------------23----------------DB4------B4

B2-----------------------GPC13------------------VD3-------------24----------------DB3------B3

B1-----------------------GPC12------------------VD2-------------25----------------DB2------B2

B0(最低位)-----------GPC11------------------VD1-------------26----------------DB1------B1

-----------------------GPC10------------------VD0-------------27----------------DB0------B0(最低位)

如果CPU显示控制器这边采用RGB565,显示屏驱动IC这边必须要选择为18bit的,如果选择为16bit的就偏色,但如果驱动IC这边一定要选择16bit,那么CPU和显示屏这边就一定要都是两边RGB完全对应起来。

3.  开机logo上面部分没有显示

如下图:

图9

原因是为480*800的bmp logo分配Flash的block少了,我们采用的Flash一个block=64page=64*2112Bytes,解析此图片的时候大小为1152054,需要1152054/(64*2112)=8.5blocks,之前分配的是6个blocks。

4.  刷机后可以启动,重启不能正常启动

读取9个bolck的logo数据=9*64*2112=0x129000,0x32000000+0x129000=0x32129000,而0x80300000+0x1d3f800=0x8203F800,恰好logo占用的空间和OS的有重叠

为什么刷机可以正常启动呢?是因为刷机是先读取logo再读取OS的,而正常启动是先读取OS再读取logo,所以存在这个差别。

5.  系统启动白屏、黑屏和显示倒过来

Eboot阶段显示正常,在开机后进入进入WINCE开机界面(还没有看到)就白屏(此概率很高,但也偶尔能够可以正常看到WINCE界面),很奇怪,要么全部开机之后都是白屏,刚开始怀疑是硬件问题,但发现白屏的时候就是加载显示驱动的时候,进过排查,原来是

S3C2450Disp() --->DevInitialize()--->DevOutputEnableRGBIF()--->

IOCTL_SVE_FIMD_SET_OUTPUT_RGBIF--->Disp_initialize_port_RGBIF()

此函数下面把LCD_CS配置成为输入引起了此问题,但奇怪的是之前的产品为什么就不存在这个问题。

WINCE6.0+ILI9806E驱动IC显示屏调试总结相关推荐

  1. WINCE6.0显示驱动模型介绍

    ********************************LoongEmbedded*****************作者:LoongEmbedded(kandi)时间:2011.06.4 类别 ...

  2. 【转载】WinCE6.0 Camera驱动源码分析(二)

    转载自:http://jazka.blog.51cto.com/809003/719130 本文分析从应用程序启动到开始预览整个过程中,驱动代码的执行流程.开发环境是WinCE6.0+Android6 ...

  3. WINCE6.0+S3C6410串口驱动

    ********************************LoongEmbedded************************作者:LoongEmbedded(kandi)时间:2011. ...

  4. WINCE6.0 DM.EXE 激活驱动失败的原因之一

    前些天把WINCE6.0的开发环境建好了,今天定制了一个系统,练习了一下驱动的编写和调试.把DLL文件通过VS2005部署到开发板上,用一位大侠写的DM.EXE工具进行激活,但是发现点击激活按钮式无反 ...

  5. 图解WinCE6.0下的内核驱动和用户驱动

    图解WinCE6.0下的内核驱动和用户驱动 在<WinCE驱动程序的分类>中曾提到,WinCE6.0的流驱动既可以加载到内核态也可以加载到用户态.下面通过一组图片简单说明一下这两种驱动的关 ...

  6. 0.96寸OLED显示屏驱动手册(SSD1306)

    MCU IIC接口 IIC通信接口由从地址位SA0,IIC总线数据信号SDA(输出SDAout/D2和输入SDAin /D1)和IIC总线时钟信号SCL(D0).不管是数据线还是时钟线都需要连接上拉电 ...

  7. Wince6.0 下Camera(OV3640) 驱动开发全程记录

    原文地址::http://blog.csdn.net/figthter_cui/article/details/6007100 相关文章 1.Initialization Sequence for C ...

  8. LED显示屏驱动IC基本原理

    现在市面上那么多ic产品难以辨认是那些型号和分类.下面就从ic的驱动作用和分类入手为大家解答ic板怎么辨认?并说说ic驱动未来的发展趋势.还有LED显示屏的像素密度和分辨率. 驱动IC的作用: 接收符 ...

  9. 【资料】VK6932是LED显示屏驱动芯片/LED数显驱动芯片/LED数码管驱动IC,集成MCU数字接口,数据锁存器,采用CMOS,多用于LED显示屏驱动

    产品型号:VK6932 产品品牌:VINKA/永嘉微电 封装形式:SOP32 产品年份:新年份 概述 VK6932 是一款LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU 数字接口. 数据 ...

  10. VK1629是带键盘扫描的LED数显/数码管驱动芯片,LED驱动IC,多用于高段位LED显示屏驱动

    型号:VK1629 品牌:VINKA/永嘉微电 封装:LQFP44 年份:新年份 概述   VK1629 是带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集 成有MCU 数字接口.数 ...

最新文章

  1. eureka自我保护时间_阿里面试官问我:到底知不知道什么是Eureka,这次,我没沉默...
  2. html wap php,wap.php
  3. 使用 telnet 命令 查看端口的开放、可用情况
  4. c语言用graphics画直线 带箭头直线_动漫人体比例怎么画?教你画出萌系少女!...
  5. 如何学习多传感器感知融合技术?
  6. mysql监视执行sql语句_监控mysql执行的sql语句
  7. 多媒体数据处理实验1:算术编码
  8. 举例一种计算机病毒,电脑病毒介绍及举例
  9. 唯冠和苹果的“ipad”之争的一点个人看法
  10. 交通灯keil程序加2位数码管_51单片机红绿灯两个数码管显示实验报告
  11. 清橙OJ A1046 加法器
  12. matlab如何采集两路语音信号,基于MATLAB的语音信号采集与处理
  13. 基于PIE-Engine的新疆地区棉花种植面积提取
  14. 小程序中将lees转成wxss
  15. 将开发板的usb配置为ncm网口(qnx系统)
  16. html中表格怎么合并单元格居中,word表格怎么合并单元格居中
  17. Derivation of matrix‘s eigenvalue and inverse matrix
  18. 手机克隆助手隐私政策
  19. 白细胞膜囊泡包裹在金纳米粒表面|DNA纳米结构的细胞膜囊泡|靶向细胞膜的多肽药物外泌体纳米载药
  20. 深度解析vivoX20四大创新突破!小米Mix2望尘莫及,雷军慌了

热门文章

  1. JNA模拟复杂的C类型——Java映射char*、int*、float*、double*
  2. 软件工程第一次作业——数独的求解与生成
  3. 苹果macOS 13 Ventura 5K原生动态壁纸
  4. MIKE水动力笔记1_岸线及水深数据之依靠全球数据库资源提取的方法
  5. oc实时渲染的图如何导出_VR批量渲染如何同时保存通道图?「渲云渲染」
  6. c语言ascii码16进制,C语言附录ASCII码表.doc
  7. WinHex V14.6 SR-2 注册码
  8. 黑客帝国中代码雨如何实现?用 Python 就可以!
  9. 天勤 数据结构 P80 T10
  10. 在IDEA中使用Linux命令