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


分类: WINCE驱动开发   546人阅读  评论(2)  收藏  举报

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

 

显示屏部分原理图如下:

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第1张图片

图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.  显示深度偏白

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

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第2张图片

图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问题解决后,虽然可以看到图像了,但还是偏色,如下图:

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第3张图片

图3

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

 

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

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

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

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第4张图片

图4

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

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第5张图片

图5

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

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

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

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第6张图片

图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数据对应关系

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第7张图片

图7

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

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

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

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第8张图片

图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上面部分没有显示

如下图:

WINCE6.0+ILI9806E驱动IC显示屏调试总结_第9张图片

图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配置成为输入引起了此问题,但奇怪的是之前的产品为什么就不存在这个问题。

你可能感兴趣的:(WINCE驱动开发)