WINCE6.0+ILI9806E驱动IC显示屏调试总结
分類:?WINCE驅(qū)動開發(fā)2014-01-17 18:53?546人閱讀?評論(2)?收藏?舉報
WINCE6.0+ILI9806E驅(qū)動IC顯示屏調(diào)試總結(jié)
?
顯示屏部分原理圖如下:
圖1
顯示屏采用的驅(qū)動IC是ILI9806E_IDT,支持多種分辨率,但此顯示屏只支持480*800。顯示屏VCC(30)引腳接到驅(qū)動IC的VCI引腳,VCI的供電范圍是2.5V ~ 3.6V,IOVCC(31)引腳接到驅(qū)動IC的IOVCC,IOVCC的供電范圍是1.65V ~ 3.6V。
?
我們暫時是在之前也是RGB接口的硬件平臺上飛線調(diào)試的,在調(diào)試過程中遇到下面一些問題,總結(jié)如下:
?
1.? 顯示深度偏白
整個圖像嚴(yán)重深度偏白,但如果斜視顯示屏就比較接近實際的圖像顏色,顯示圖像如下:
圖2
我們在設(shè)計VCC采用2.8V,IOVCC采用1.8V的,設(shè)計測試的時候IOVCC確實2.283V左右,這是因為CPU這邊的GPIO是3.3V的,和IOVCC的1.8V有較大的壓差,引起了電流倒灌,就導(dǎo)致了圖2中顯示不正常的現(xiàn)象,把VCC和IOVCC都接到2.8V就OK了。
?
3.276
2.792
2.? 顯示偏色
IOVCC問題解決后,雖然可以看到圖像了,但還是偏色,如下圖:
圖3
很奇怪啊,我們目前已有的產(chǎn)品CPU顯示控制器硬件上是用RGB666(但CPU這邊軟件上是采用RGB565,也就是一個像素16位的)來連接顯示屏的RGB666,現(xiàn)在的接法也一樣,為什么之前的可以正常顯示,現(xiàn)在的顯示屏就偏色呢?因為之前調(diào)試顯示屏的時候也遇到過偏色問題,是因為CPU和顯示屏的RGB沒有對應(yīng)后引起的,所以也就朝這個方向來努力,果然問題就在這里。
?
先來看下為什么之前的顯示屏就可以正常顯示
(1) 驅(qū)動IC引腳和RGB數(shù)據(jù)對應(yīng)關(guān)系
原來的顯示屏是TFT1N5676,驅(qū)動IC是HX8347-D_DS_T,此驅(qū)動IC把下面這些RGB數(shù)據(jù)接口作為顯示屏接口引出去:
圖4
此驅(qū)動IC支持6-/16-/18-bit RGB 接口,RGB數(shù)據(jù)位和引出的數(shù)據(jù)引腳如下圖:
圖5
可知R和B都是最高位對齊。
(2) CPU和顯示屏的原理圖
接著我們來看原理圖部分:
圖6
?
CPU顯示控制器雖然用RGB666的連接方式,但CPU軟件上采用的是RGB565,驅(qū)動IC選擇的是RGB666,結(jié)合圖5來看,就算CPU軟件采用RGB565,驅(qū)動IC采用RGB666,那么系統(tǒng)這邊送過來的R[4:0]還是可以送到驅(qū)動IC對應(yīng)的R[5:1],B[4:0]還是可以送到驅(qū)動IC對應(yīng)的R[5:1]最高位到最低位,而驅(qū)動IC的R0和B0是采用默認(rèn)是隨機(jī)值,因為都是最低位,所以對R和B顏色的影響非常小,不影響使用。其中CPU和驅(qū)動IC的RGB對應(yīng)關(guān)系如下
RGB數(shù)據(jù)-------CP引腳-------連接符號-------顯示屏引腳--------顯示屏符號--------驅(qū)動IC RGB數(shù)據(jù)
?
R[5:0]----------GPD[15:10]----------VD[17:12]--------10:15----------DB[17:12]------------R[5:0]
R實際只有5位,這樣CPU這邊還是能夠把R最高位送到驅(qū)動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最高位送到驅(qū)動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(最低位)
?
接下來看我們新驅(qū)動ILI9806E_IDT為什么會出現(xiàn)顯示偏色
(1) 驅(qū)動IC引腳和RGB數(shù)據(jù)對應(yīng)關(guān)系
圖7
可以看到此驅(qū)動IC支持16/18/24bit,都是最低位對齊,恰好和之前的驅(qū)動IC最高位對齊相反
(2) CPU和顯示屏的原理圖
顯示屏廠家給的初始化代碼默認(rèn)也是選擇18bit的,因為之前的OK,所以也就沒有修改這里,我們CPU硬件連接還是采用之前的RGB666,CPU軟件采用RGB565,原理圖如下:
圖8
?
RGB數(shù)據(jù)-------CP引腳-------連接符號-------顯示屏引腳--------顯示屏符號--------驅(qū)動IC RGB引腳
?
R[5:0]----------GPD[15:10]----------VD[17:12]--------19:14----------DB[21:16]------------R[5:0]
R實際只有5位,根據(jù)原理圖設(shè)計,CPU這邊還是能夠把R最高位送到驅(qū)動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最高位送到驅(qū)動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,顯示屏驅(qū)動IC這邊必須要選擇為18bit的,如果選擇為16bit的就偏色,但如果驅(qū)動IC這邊一定要選擇16bit,那么CPU和顯示屏這邊就一定要都是兩邊RGB完全對應(yīng)起來。
?
3.? 開機(jī)logo上面部分沒有顯示
如下圖:
圖9
原因是為480*800的bmp logo分配Flash的block少了,我們采用的Flash一個block=64page=64*2112Bytes,解析此圖片的時候大小為1152054,需要1152054/(64*2112)=8.5blocks,之前分配的是6個blocks。
?
?
4.? 刷機(jī)后可以啟動,重啟不能正常啟動
讀取9個bolck的logo數(shù)據(jù)=9*64*2112=0x129000,0x32000000+0x129000=0x32129000,而0x80300000+0x1d3f800=0x8203F800,恰好logo占用的空間和OS的有重疊
?
為什么刷機(jī)可以正常啟動呢?是因為刷機(jī)是先讀取logo再讀取OS的,而正常啟動是先讀取OS再讀取logo,所以存在這個差別。
5.? 系統(tǒng)啟動白屏、黑屏和顯示倒過來
Eboot階段顯示正常,在開機(jī)后進(jìn)入進(jìn)入WINCE開機(jī)界面(還沒有看到)就白屏(此概率很高,但也偶爾能夠可以正常看到WINCE界面),很奇怪,要么全部開機(jī)之后都是白屏,剛開始懷疑是硬件問題,但發(fā)現(xiàn)白屏的時候就是加載顯示驅(qū)動的時候,進(jìn)過排查,原來是
S3C2450Disp() --->DevInitialize()--->DevOutputEnableRGBIF()--->
IOCTL_SVE_FIMD_SET_OUTPUT_RGBIF--->Disp_initialize_port_RGBIF()
此函數(shù)下面把LCD_CS配置成為輸入引起了此問題,但奇怪的是之前的產(chǎn)品為什么就不存在這個問題。
總結(jié)
以上是生活随笔為你收集整理的WINCE6.0+ILI9806E驱动IC显示屏调试总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu16.04下给MT7630E
- 下一篇: 盒子模型