2023年12月9日發(作者:側面積公式)

LCD(Mipi)調試流程及問題歸納
目錄
目錄調試流程設置 dts 中的參數 并 配置管腳背光部分 LCD 初始化序列 cmds 打開 config 檢查電壓調試順序背光有沒有亮開
機 以及 從休眠狀態喚醒 都沒有顯示內容我碰到的 cmds 問題 問題集錦我調試中碰到的問題其他一些雜散的需要確認的內容數
據為 8 位16位顯示偏移圖像位置偏差白屏屏在進出睡眠或者顯示過程中白屏花屏屏幕閃爍屏幕抖動屏幕閃動喚醒閃屏問題屏幕
喚醒顯示灰色底面水波紋調節對比度確認有沒有 framebuffer 輸出圖像顏色不正常 感謝
調試流程
設置 dts 中的參數 并 配置管腳
仿造平臺的其他 lcd-*- 編寫 后 需要在 主 dts 文件中包含這個 dtsi
#include ““
先看屏的手冊
里面的關鍵信息有 分辨率(540×960) 接口(2條lanes)
## MIPI Host配置
disp_mipi_init: mipi_dsi_init{
compatible = "rockchip,mipi_dsi_init";
/* 是否要在 dtsi 中初始化 1 0 */
rockchip,screen_init = <1>;
/* 要幾條數據 lane ,根據原理圖和 mipi 規格書*/
rockchip,dsi_lane = <2>;
/* ddr clk 一條 lane 的傳輸速率 Mbits/s */
/* 100 + H_total×V_total×fps×3(一個rgb為3字節)×8(8bits)/lanes */
/* 這里的 total 指的是 sync + front + back + active */
/* 比如 H_total = Hsync + HFP(hfront-proch) + HBP(hback-porch) + Hactive */
rockchip,dsi_hs_clk = <1000>;
/* 單mipi 還是雙 mipi*/
rockchip,mipi_dsi_num = <1>;
};
看原理圖,完成管腳的配置
可以看到,我這里只用到了 LCD_RST,沒有用到 LCD_EN (是 VCC_LCD),說明是默認使能的,也沒有 LCD_CS
所以進行如下配置<喎?"/kf/ware/vc/" target="_blank"
class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:sql;">## 屏電源控制配置disp_mipi_power_ctr: mipi_power_ctr {
compatible = "rockchip,mipi_power_ctr"; mipi_lcd_rst:mipi_lcd_rst{ compatible = "rockchip,lcd_rst"; rockchip,gpios
= <&gpio2 GPIO_B7 GPIO_ACTIVE_LOW>; rockchip,delay = <100>; }; /* // 配置 lcd_en GPIO 哪一路 ,有可能沒有
LCD_EN 那么就是 VCC 常供電 mipi_lcd_en:mipi_lcd_en { compatible = "rockchip,lcd_en"; rockchip,gpios = <&gpio0
GPIO_C1 GPIO_ACTIVE_HIGH>; rockchip,delay = <100>; }; */ //還可能有片選 cs};
根據屏的規格書 完成 timings 配置
垂直方向的信息:
重要的參數有 垂直同步信號 VFP VBP VS 對應填充到屏參中的 Vfront-proch Vback-proch Vsync-len
同樣
水平方向的信息:
要注意的是, HS HBP HFP 雖然最小值是 5,但是不能設置的這么低
因為后面還有兩條要求,HBLK = HS + HBP + HFP >= 24 且 HS + HBP > 19
所以最初設置 HS = HBP = HFP = 10!你設置的觸發電平
你設置的觸發電平
但是我設置的觸發電平是 低電平有效 ACTIVE_LOW
即
!ACTIVE_LOW
ACTIVE_LOW
即先高再低,所以是錯的,改為 ACTIVE_HIGH 后正常。
但是雖然填的是 ACTIVE_HIGH ,但是應該還是屬于低電平有效的,這里是 RK 平臺 driver 的實現有問題。
修改后 lane 有數據傳遞了。
但是有數據傳遞仍然怎么樣都沒有顯示。
這時候有極大可能是 cmds 有問題。
下面著重講一下我 cmds 碰到的問題。
我碰到的 cmds 問題
我當時拿到 MTK 平臺參數的時候,有的參數超過了 32個字節(有個有36個字節,有個有39個字節),完成 dtsi 中 cmds
編寫后
燒錄,板子跑飛,空指針異常。
發現傳遞 這個超長 參數的時候有內存溢出情況。
于是跟代碼發現 dcs_ 的大小為 int cmds[32],所以擅自想當然的將包拆成了 39 = 28+11,還將其中的延時設
置為 0 。
這樣當然是不行的。但是一切都是基于這個拆了包的 cmds 來調,走了不少彎路。
后來一切的其他參數都確定沒問題了。
于是去聯系原廠的工程師,說平臺參數大小有限制,咨詢拆包是否可行。他們說建議修改 cmds[32] 改成了 cmds[400] 。
修改后發現屏幕終于點亮了。
終于點亮了。
點亮了。
問題集錦
RK 手冊中已經有相當一部分很有參考價值的了。
這里的一部分是自己碰到的,有的是查資料時候收集到覺得很有意義的,都放這里了。
我調試中碰到的問題
在點亮屏后剛開始有開機 logo 閃爍,向右偏移了近半個屏幕的長度,等問題。
重新確認 clock-frequence 后發現少打了一個 0 。
修改后解決了 閃爍,大偏移 的問題。最初偏移還是有點大,如下圖。
稍微降低 hs_clk ,由 504 降低到 496 解決。垂直方向會顯示多一點內容,如下圖。
調整 VFP 后解決,將 VFP 增大為 15 。下面會有黑邊,如下圖。
稍微增大 VBP 后解決,將 VBP 增大為 15。開機 android 最左邊會被裁剪一部分,如下圖。
增大 HBP 后解決,將 HBP 由 10 增加到 30。
至此屏幕已完美顯示。
其他一些雜散的需要確認的內容
是否有framebuffer輸出,要是改動了display這塊的clk很有可能沒有buffer輸出的,可以通過cat /dev/graphyics/fb0查看
有沒有輸出字符。(我是通過google 插件 vysor 直接連接開發板看有沒有內容顯示,windows 平臺也可以用 total control
軟件來看)
數據為 8 位、16位
數據為 8 位 和 16 位 的時候,寫命令和數據的函數要注意變化。
會發現 如果 參數為 8 位的時候, 傳輸模式會自動由 LP 模式 變成 HS 模式。
顯示偏移、圖像位置偏差
timing 中的參數設置有誤。優先確認。
看著圖像調節前掃、回掃進行左右上下移動
白屏
隨機出現白屏有可能是靜電問題,把LCD拿到頭發上擦幾下,如果很容易出現白屏那肯定就是靜電問題了。另外一個在有
Backend IC的情況下,也有可能bypass沒處理好。
結束開機logo至android動畫出現之間出現閃屏或者閃白光的情況。原因:在這個時間點kernel會會對屏再次初始化,我們可
以軟件上屏蔽第一次初始化動作從而解決。
屏在進出睡眠或者顯示過程中白屏
喚醒屏幕閃白光問題,說白了是背光早亮了,很有可能是下序列mdelay太久,改小點就沒有這個問題了。根本原因屏幕初始化
序列下慢了。
sleep out(0x11)和 display on(0x29)之間需要 mdelay(120ms)左右。
花屏
說明 lcd 初始化成功,但是沒有 rgb 刷過來。
timing 中的參數設置有誤。優先確認 pclk。
花屏 還可能是總線速度有問題。
開機就花屏最簡單的解決方式是,在 Init 結束的地方加一個刷黑屏的功能。也可以在睡眠函數里加延時函數。
屏幕閃爍
pclk 有問題
在最開始的時候,我的 pclk 漏了一個 0 ,為之前的 1/10 此時就有圖像閃爍問題。 proch 有問題
在調試完后,我嘗試將 proch 增加到極限,發現會出現圖像閃爍的問題。
屏幕抖動測時序,延時不足
屏幕閃動
通過調節電壓來穩定,一般調節的電壓為VRL、VRH、VDV和VCM
喚醒閃屏問題
這是由於每次重新RST下序列過程delay久了導致,適當減少delay時間
屏幕喚醒顯示灰色底面
寄存器沒有使能外部升壓電路
水波紋
通常都是rgb interface polarity導致,需要調整pclk hsync vsync de極性使之符合平臺極性
調節對比度
VRL、VRH、VDV和VCM,這些電壓也可以用來調節亮暗(對比度)
也可以通過調節Gamma值來實現,要調節的對象為 PRP、PRN、VRP、VRN 等
確認有沒有 framebuffer 輸出
要是改動了display這塊的clk很有可能沒有buffer輸出的,可以通過cat /dev/graphyics/fb0 查看有沒有輸出字符
如果有說明是 mipi 還沒有調通,如果沒有說明是 fb 有問題
圖像顏色不正常
可能時鐘型號極性反了
可能 VCOM 調節不正常
進行 GAMMA 校正
感謝
這段時間基本上把有些 Mipi 移植和 RK 平臺 LCD 移植的文章看遍了。以下文章很有幫助。本文的問題集錦部分有一部分是將
以下文章中的內容搜羅過來的:
android lcd調試 高通平臺lcd調試深入分析總結(mipi和rgb接口)
firefly rk3288 的 wiki 百科
Mipi DSI 協議介紹
Mipi 調試經驗
最后,得感謝這段時間師兄 Baker 和 Nick 的指點。
還有網上兩位 RK 劉哥和“llg”和“勇氣” 的指點。
收益頗豐。謝謝謝謝!
另外 劉哥 llg 提出了一種方法:不起 android ,直接寫 framebuffer 。這樣對像素點的直接操作會比對圖片的操作更加直
觀。
暫時還不了解是什么意思,準備今晚下班了去了解一下。
本文發布于:2023-12-09 21:19:43,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/1702127984241123.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:LCD(Mipi)調試流程及問題歸納.doc
本文 PDF 下載地址:LCD(Mipi)調試流程及問題歸納.pdf
| 留言與評論(共有 0 條評論) |