DBI(i80)/DPI(RGB)/DSI【转】
本文轉載自:http://blog.csdn.net/liuxd3000/article/details/17437317
(1)DBI接口
?????? A,也就是通常所講的MCU借口,俗稱80 system接口。The lcd interface between host processor and LCM device list as below,The LCM driver will repeated update panel display。MCU借口通過并行接口傳輸控制命令和數據,并通過往LCM模組自帶的GRAM(graphic RAM)更新數據實現屏幕的刷新。
???? DBI接口分為串行和并行兩種,模型如下:
?
?????? B,以典型的18位數據跟16位數據做說明(8位寄存器控制)。
如上硬件采用18位數據線,控制命令和參數占用DB0到DB7并行傳輸,圖像數據采用RGB666的格式并行傳輸。
如上硬件采用16位數據線,控制命令和參數占用DB0到DB7并行傳輸,圖像數據采用RGB565的格式并行傳輸。
??????? C,關于DBI data format的說明
(I)對于16位的datawidth,典型的數據格式舉例如下
1cycle/1pixel,RGB565,格式是:rrrrrggggggbbbbb
3cycle/2pixel,RGB666,格式是:xxxxrrrrrrgggggg
????????????????????????????????????????????????????????xxxxbbbbbbrrrrrr
????????????????????????????????????????????????????????xxxxggggggbbbbbb
3cycle/2pixel,RGB888,格式是:rrrrrrrrgggggggg
???????????????????????????????????????????????????????? bbbbbbbbrrrrrrrr
???????????????????????????????????????????????????????? ggggggggbbbbbbbb
(II)對于18位的datawidth,典型的數據格式舉例如下
1cycle/1pixel,RGB666,格式是:rrrrrrggggggbbbbbb
3cycle/2pixel,RGB888,格式是:rrrrrrrrgggggggg
???????????????????????????????????????????????????????? bbbbbbbbrrrrrrrr
???????????????????????????????????????????????????????? ggggggggbbbbbbbb
???????D,硬件接口及時序
(I)硬件連接圖:
?????????????????????????????????????????????????????????????????????????????????
RESX:復位;CSX:chip select片選;TE:tearing enable;D/CX:register select寄存器選擇;WRX/SCL:write control;RDX:read control;DB[....]:傳輸線。
(II)寫周期:
?????????????????????????????????????????????????????????
(III)讀周期:
????????????????????????????????????????????????????
(IV)關于屏參中6個讀寫時序
?????????????????????????????????????????????????????
(2)DPI接口
????? 也就是通常所說的RGB接口,采用普通的同步、時鐘、信號線來傳輸特定數據,采用SPI等控制線完成命令控制。某種程度上,DPI與DBI的最大差別是,DPI的數據線和控制線分離,而DBI是復用的。
????? 它的模型如下:
它的信號時序圖如下(注意DE模式跟SYNC模式的區別):
??????? 其中,backporch和syncwidth應盡量分配大些,因為靠它決定有效區域的起始位置,而frontporch則可以分配小點(該方法可用在sync模式的屏參驅動DE的屏,需注意backporch+syncwidth+frontporch才等于DE模式下的blanking值)。
? ? ? ? 曾經在調試一個DPI接口LCM時碰到一個奇怪現象,RGB的接口用一個LVDS轉換芯片跟一款LVDS模組相連。重燒程序完后可以顯示圖像,斷電再上電就沒有圖像,后來發現是上電屏參初始化中沒有配置一個CS拉高的使能信號腳。燒完程序后該腳為高所以可以顯示,重斷電再上電默認為低所以沒有圖像。
? ? ? ? DPI接口的CLOCK計算方法:
其實ref為0,其他的三個參數以屏參中設定為準。
??????就DPI接口的CLOCK極性選擇,作如下說明:
A、首先看數據線,當開始傳輸第一個數據時,如果EN為下降沿,即傳輸Valid data?? 時EN低有效。則:Params->dpi.de_pol=LCM_POLARITY_FALLING;?反之亦然;
B、VSYNC和HSYNC分別代表一幀數據和一行數據的開始,當一幀以下降沿開始時,設置:Params->dpi.vsync_pol=LCM_POLARITY_FALLING;?反之亦然;當一行以下降沿開始時,設置:Params->dpi.hsync_pol=LCM_POLARITY_FALLING; 反之亦然。
C、PCLK的極性沒有固定的要求,主要是看其與data的關系,即保證latch到正確的數據,這一點和sensor的PCLK設置相同。當開始傳輸第一個數據時,如果PCLK為下降沿,即在下降沿latch數據時,最好設置:Params->dpi.clk_pol=LCM_POLARITY_FALLING;?反之亦然。
(3)DPI與DBI的兼容
??????? 現在很多LCM的模組可以做到DBI和DPI接口的兼容。因為在IM2/IM1/IM0由手機主板決定的前提下,比如6516支持MCU接口,同時該模組放到另一款DPI接口的主板上也可以照樣使用。
??????? 另一個補充問題,關于顯示位數,由于嵌入式WINDOWS系統的GUI是16位的,不同于桌面WINDOWS的32位,所以24位的位圖在WIN CE中,只能以16位色顯示,一定會丟掉某些顏色。這個缺陷還在于,就算是18(RGB666)位的LCM數據位顯式,最終軟件中接受的GUI顏色還是16位,要把RGB565轉成RGB666才能當18位色顯示,相當于插值了。
(4)DSI接口
??????? DSI,是一種串行傳輸方式,包括數據、指令、其他信息。連接方式如下圖:
DSI的數據傳輸過程如下:
由于DSI的數據是封包處理的,不像DBI接口那樣可以明顯知道原始的傳輸內容,所以在一些問題的解決方法是不同的。在調試OTM8009A的DSI接口LCM時,發現LCD在按電源鍵睡眠后必須按兩次才能喚醒,一開始無論如何都沒有想到是屏的問題,最后是修改LCM的DSI驅動公共函數解決的,也就是把dsi_enable_power中的DSI_lane0_ULP_mode形參都置0,以避免DSI處于極度睡眠中。
???? DSI的三種格式分類說明如下:
???????關于CABC的調節還有另一種問題,就是DSI調節亮度跟DSI VIDEO MODE的沖突。CABC是設定最大亮度,LCD的亮度填充會隨著畫面內容的變化來自動調節,達到省電的目的。當然,菜單的亮度調節是另外一回事,這就導致出現開機圖像異常和睡眠后喚醒的圖像異常,根本原因在于在RGB數據中穿插DSI控制命令,如果芯片發送端無法做到在RGB幀之間發送CABC命令,導致RGB圖像斷裂連接不上,就會出現異常。
?????? 在調節DSI屏有時會出現“DSI waite”的問題,原因還是在屏的供電沒有。如果屏沒有在UB階段供電,會導致系統開機一直卡在這個地方循環。
總結
以上是生活随笔為你收集整理的DBI(i80)/DPI(RGB)/DSI【转】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA实现https单向认证
- 下一篇: 淘宝开源Android容器化框架Atla