• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            LCDMipi調試方法及問題匯總

            更新時間:2023-12-09 21:30:40 閱讀: 評論:0

            2023年12月9日發(作者:折線統計圖的特點)

            -

            LCDMipi調試方法及問題匯總

            LCDMipi調試方法及問題匯總

            調試流程

            1. 設置 dts 中的參數 并 配置管腳

            仿造平臺的其他 lcd-*- 編寫 后 需要在 主 dts 文件中包含這個 dtsi

            1

            #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

            所以進行如下配置## 屏電源控制配置

            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// 中的 屏參

            disp_timings: display-timings {

            native-mode = <&timing0>;

            compatible = "rockchip,display-timings";

            timing0: timing0 {

            screen-type = ; //單mipi SCREEN_MIPI 雙mipi SCREEN_DUAL_MIPI

            lvds-format = ; //不用配置

            out-face = ; //屏的接線格式

            //配置顏色,可為OUT_P888(24位)、OUT_P666(18位)或者OUT_P565(16位)

            clock-frequency = <120000000>; //dclk頻率,看規格書,或者 H×V×fps

            hactive = <540>; //水平有效像素

            vactive = <960>; //垂直有效像素

            hback-porch = <80>; //水平同步信號

            hfront-porch = <81>; //水平同步信號

            vback-porch = <21>;

            vfront-porch = <21>;

            hsync-len = <10>; //水平同步信號

            vsync-len = <3>;

            hsync-active = <0>; //hync 極性控制 置 1 反轉極性

            vsync-active = <0>;

            de-active = <0>; //DEN 極性控制

            pixelclk-active = <0>; //dclk 極性控制

            swap-rb = <0>; //設 1 反轉顏色

            swap-rg = <0>;

            swap-gb = <0>;

            2. 背光部分

            在 rk3288-tb_ 中還需要打開 mipi 相關的通道 并 配置背光相關的信息。

            首先根據這顆背光 IC 的 datasheet

            我們了解到 EN 拉高時背光使能,拉低時背光禁能; FB 接受反饋信號,動態控制背光亮度

            我們知道這顆背光芯片有兩種調光方式

            一是 EN 輸入 PWM 信號進行調光

            二是 EN 使能后,通過 FB 獲得反饋信號進行調光。

            根據我們的原理圖

            BL_EN 是普通的 GPIO ,LCDC_BL 是支持 PWM 輸出的管腳,所以得知我們硬件采用的是第二種調光方式

            backlight {

            compatible = "pwm-backlight";

            pwms = <&pwm0 0 25000>; //在這里配置采用的是 pwm0 還是 pwm1

            brightness-levels = <255 254 253 252 251 250 249 248 247 246 245 244 243 242 241 240

            239 238 237 236 235 234 233 232 231 230 229 228 227 226 225 224 223 222 221 220

            219 218 217 216 215 214 213 212 211 210 209 208 207 206 205 204 203 202 201 200

            199 198 197 196 195 194 193 192 191 190 189 188 187 186 185 184 183 182 181 180

            179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160

            159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140

            139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120

            119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100

            99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70

            69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40

            39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10

            9 8 7 6 5 4 3 2 1 0>;

            default-brightness-level = <200>;

            enable-gpios = <&gpio7 GPIO_A2 GPIO_ACTIVE_HIGH>; //BL_EN 背光使能管腳

            };

            3. LCD 初始化序列 cmds

            最后如果有初始化序列的,打開之前的 screen-init = < 1 > ,并且填充初始化序列## 屏初始化序列

            disp_mipi_init_cmds: screen-on-cmds {

            compatible = "rockchip,screen-on-cmds";

            /*rockchip,cmd_debug = <1>;

            rockchip,on-cmds1 { //指的是一條初始化命令

            compatible = "rockchip,on-cmds";

            rockchip,cmd_type = ; //命令是在 low power(LPDT)還是 high speed(HSDT)下發送

            rockchip,dsi_id = <2>; //選擇通過哪個mipi發送 0==》單mipi0 1==》mipi1 2==》雙mipi0+1

            rockchip,cmd = <0x05 0x01>; //初始化命令

            //第一個字節 DSI 數據類型; 第二個字節為 LCD 的 CMD; 后面為指令內容

            rockchip,cmd_delay = <0>;

            };

            */

            };

            值得一講的是 cmd,一般屏廠或者FAE都會給出初始化序列。

            比如這里我拿到的是 MTK 平臺的 LCD 初始化代碼:

            data_array[0]=0x00043902;

            data_array[1]=0x8983FFB9;

            dsi_t_cmdq(&data_array, 2, 1);

            MDELAY(10);

            分析得知

            array[0] 中 04 代表要傳輸的字節數,3902 代表傳輸的是長包數據

            //MTK平臺 3900 代表不傳值 3905 表示傳一個數據 3902 表示傳多個數據

            array[1] 中的參數全部為傳輸的參數,而且正確的傳參數據為 B9 FF 83 89

            所以移植到 RK 平臺就是:

            rockchip,on-cmds1 {

            compatible = "rockchip,on-cmds";

            rockchip,cmd_type = ;

            rockchip,dsi_id = <0>;

            rockchip,cmd = <0x39 0xB9 0xFF 0x83 0x89>;

            //0x39 為 DSI 數據類型、 0xB9 為LCD CMD、后面為參數

            rockchip,cmd_delay = <10>;

            }

            我們根據 這塊 lcd 的 規格書,也能夠驗證結果初始化命令參數的正確性:

            DSI 協議中 ,0x29 和 0x39 區別:在 Mipi 協議中,它倆都表示 長包(Long Packet)數據類型。

            但是 Mipi DSI 的 Spec 中寫著兩者的區別 0x29 屬于 Generic long write ,0x39 屬于 DCS long write。

            DCS 系的讀寫命令,可帶參數,常用于 LCD 初始化參數命令。

            Generic 系讀寫命令,是協議規范外的命令,通常是一些 IC 定制的,只要確保主機和外設同意這些數據格式即可,通常和 DCS 通用。

            另外值得一說的是大部分初始化代碼的最后一般都是 exit_sleep 和 display_on。rockchip,on-cmds15 {

            compatible = "rockchip,on-cmds";

            rockchip,cmd_type = ;

            rockchip,dsi_id = <0>;

            rockchip,cmd = <0x05 dcs_exit_sleep_mode>;

            rockchip,cmd_delay = <120>;

            };

            rockchip,on-cmds16 {

            compatible = "rockchip,on-cmds";

            rockchip,cmd_type = ;

            rockchip,dsi_id = <0>;

            rockchip,cmd = <0x05 dcs_t_display_on>;

            rockchip,cmd_delay = <100>;

            };

            這里 dcs_exit_sleep_mode dcs_t_display_on 在 drivers/video/rockchip/transmitter/mipi_dsi.h 中有定義

            #define dcs_t_display_on 0x29

            #define dcs_exit_sleep_mode 0x11

            所以表示的 0x05 0x11 表示的含義為,短包傳輸 發送 exit_sleep_mode 命令

            這兩個命令后的延時

            *

            相當重要*??!務必確認好。

            4. 打開 config

            根據 RK 手冊中的要求

            make menuconfig

            打開三個宏

            這里也可以順手把 LVDS 的相關代碼給關掉

            5. 檢查電壓

            先不要接上屏,編譯完代碼燒錄后開機。

            檢查原理圖上各個供電管腳的電壓(DVDD、IOVDD 是否為 3.3V,VDD_LCDA 是否為 5-10V,VDD_LCDK 是否為 0V),確認電壓

            正常后,關機,上屏,結合 開機log 看能否正常開機。

            6. 調試順序

            6.1 背光有沒有亮

            背光沒亮的話確認一下接上屏的時候,量一量 VDD_LCDA 的電壓為多少(串聯電路大概能到 20V+)

            沒有就去檢查背光電路供電電壓和 backlight 相關的配置

            6.2 開機 以及 從休眠狀態喚醒 都沒有顯示內容

            之所以這樣說是因為可能存在 休眠喚醒 能顯示,但 開機 無法顯示的情況

            如果兩種情況都沒有顯示,那么很有可能是 cmds 或者 timing 仍然有問題

            1. 用示波器量波形看 DCLKP 的頻率為多少,是否為 clock-frequency 中設置的(可能實際的會略低一點)

            2. 量 RST 是否有一個 低-高 的變化,沒有則是 rst 設置的觸發方式可能反了

            3. 在 RST 高低高后會開始傳輸數據,量 lanes 是否有數據輸出。抓取數據需要專門的儀器,我們用示波器大致看看有沒有數據輸出就夠

            了。

            我在調試的時候就發現 lane 一直為低電平,沒有數據傳輸,然后采取量 RST 發現喚醒屏后待到屏幕快滅了 RST 才會被拉高。跟代碼發現

            RK 平臺的實現是!你設置的觸發電平

            你設置的觸發電平

            但是我設置的觸發電平是 低電平有效 ACTIVE_LOW

            !ACTIVE_LOW

            ACTIVE_LOW

            即先高再低,所以是錯的,改為 ACTIVE_HIGH 后正常。

            但是雖然填的是 ACTIVE_HIGH ,但是應該還是屬于低電平有效的,這里是 RK 平臺 driver 的實現有問題。

            修改后 lane 有數據傳遞了。

            但是有數據傳遞仍然怎么樣都沒有顯示。

            這時候有極大可能是 cmds 有問題。

            下面著重講一下我 cmds 碰到的問題。

            6.3 我碰到的 cmds 問題

            我當時拿到 MTK 平臺參數的時候,有的參數超過了 32個字節(有個有36個字節,有個有39個字節),完成 dtsi 中 cmds 編寫后

            燒錄,板子跑飛,空指針異常。

            發現傳遞 這個超長 參數的時候有內存溢出情況。

            于是跟代碼發現 dcs_ 的大小為 int cmds[32],所以擅自想當然的將包拆成了 39 = 28+11,還將其中的延時設置為 0 。

            這樣當然是不行的。但是一切都是基于這個拆了包的 cmds 來調,走了不少彎路。

            后來一切的其他參數都確定沒問題了。

            于是去聯系原廠的工程師,說平臺參數大小有限制,咨詢拆包是否可行。他們說建議修改 cmds[32] 改成了 cmds[400] 。

            修改后發現屏幕終于點亮了。

            終于點亮了。

            點亮了。

            問題集錦

            RK 手冊中已經有相當一部分很有參考價值的了。

            這里的一部分是自己碰到的,有的是查資料時候收集到覺得很有意義的,都放這里了。

            1. 我調試中碰到的問題

            1. 在點亮屏后剛開始有開機 logo 閃爍,向右偏移了近半個屏幕的長度,等問題。

            重新確認 clock-frequence 后發現少打了一個 0 。

            修改后解決了 閃爍,大偏移 的問題。

            2. 最初偏移還是有點大,如下圖。

            稍微降低 hs_clk ,由 504 降低到 496 解決。

            3. 垂直方向會顯示多一點內容,如下圖。

            調整 VFP 后解決,將 VFP 增大為 15 。

            4. 下面會有黑邊,如下圖。

            稍微增大 VBP 后解決,將 VBP 增大為 15。

            5. 開機 android 最左邊會被裁剪一部分,如下圖。

            增大 HBP 后解決,將 HBP 由 10 增加到 30。

            至此屏幕已完美顯示。

            2. 其他一些雜散的需要確認的內容是否有framebuffer輸出,要是改動了display這塊的clk很有可能沒有buffer輸出的,可以通過cat /dev/graphyics/fb0查看有沒有輸出

            字符。(我是通過google 插件 vysor 直接連接開發板看有沒有內容顯示,windows 平臺也可以用 total control 軟件來看)

            3. 參數為 8 字節、16字節 傳輸會異常?錯,可以正常傳輸。

            4. 顯示偏移、圖像位置偏差

            timing 中的參數設置有誤。優先確認。

            看著圖像調節前掃、回掃進行左右上下移動

            5. 白屏

            隨機出現白屏有可能是靜電問題,把LCD拿到頭發上擦幾下,如果很容易出現白屏那肯定就是靜電問題了。另外一個在有Backend IC的情

            況下,也有可能bypass沒處理好。

            結束開機logo至android動畫出現之間出現閃屏或者閃白光的情況。原因:在這個時間點kernel會會對屏再次初始化,我們可以軟件上屏蔽

            第一次初始化動作從而解決。

            6. 屏在進出睡眠或者顯示過程中白屏

            喚醒屏幕閃白光問題,說白了是背光早亮了,很有可能是下序列mdelay太久,改小點就沒有這個問題了。根本原因屏幕初始化序列下慢

            了。

            sleep out(0x11)和 display on(0x29)之間需要 mdelay(120ms)左右。

            7. 花屏

            說明 lcd 初始化成功,但是沒有 rgb 刷過來。

            timing 中的參數設置有誤。優先確認 pclk。

            花屏 還可能是總線速度有問題。

            開機就花屏最簡單的解決方式是,在 Init 結束的地方加一個刷黑屏的功能。也可以在睡眠函數里加延時函數。

            8. 屏幕閃爍

            1. pclk 有問題

            在最開始的時候,我的 pclk 漏了一個 0 ,為之前的 1/10 此時就有圖像閃爍問題。

            2. proch 有問題

            在調試完后,我嘗試將 proch 增加到極限,發現會出現圖像閃爍的問題。

            9. 屏幕抖動

            測時序,延時不足

            10. 屏幕閃動

            通過調節電壓來穩定,一般調節的電壓為VRL、VRH、VDV和VCM

            11. 喚醒閃屏問題

            這是由於每次重新RST下序列過程delay久了導致,適當減少delay時間

            12. 屏幕喚醒顯示灰色底面

            寄存器沒有使能外部升壓電路

            13. 水波紋

            通常都是rgb interface polarity導致,需要調整pclk hsync vsync de極性使之符合平臺極性

            14. 調節對比度

            VRL、VRH、VDV和VCM,這些電壓也可以用來調節亮暗(對比度)

            也可以通過調節Gamma值來實現,要調節的對象為 PRP、PRN、VRP、VRN 等

            15. 確認有沒有 framebuffer 輸出要是改動了display這塊的clk很有可能沒有buffer輸出的,可以通過cat /dev/graphyics/fb0 查看有沒有輸出字符

            如果有說明是 mipi 還沒有調通,如果沒有說明是 fb 有問題

            16. 圖像顏色不正常

            可能時鐘型號極性反了

            可能 VCOM 調節不正常

            進行 GAMMA 校正

            感謝

            這段時間基本上把有些 Mipi 移植和 RK 平臺 LCD 移植的文章看遍了。以下文章很有幫助。本文的問題集錦部分有一部分是將以下文章中

            的內容搜羅過來的:

            -

            LCDMipi調試方法及問題匯總

            本文發布于:2023-12-09 21:30:40,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/1702128640240288.html

            版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。

            本文word下載地址:LCDMipi調試方法及問題匯總.doc

            本文 PDF 下載地址:LCDMipi調試方法及問題匯總.pdf

            標簽:問題   顯示   沒有   可能   參數   屏幕
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網旗下知識大全大全欄目是一個全百科類寶庫! 優秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 亚洲第一极品精品无码久久| 国产精品久久久尹人香蕉| 鲁丝片一区二区三区免费| 亚洲AV成人片不卡无码| 国产91久久精品一区二区| 国产va免费精品观看| 亚洲精品无码你懂的网站| 日韩在线视频线观看一区| 超碰成人人人做人人爽| 99在线国内在线视频22| 一区二区三区av天堂| 国产成年码av片在线观看| 99r久视频精品视频在线| 欧美日韩在线视频不卡一区二区三区 | 久视频久免费视频久免费| 一区二区三区鲁丝不卡| 国产高清一区二区不卡| 国色精品卡一卡2卡3卡4卡在线| 精品国产高清中文字幕| 久久香蕉国产线看观看猫咪av| 老熟妇乱子交视频一区| 在线无码免费的毛片视频| 伊伊人成亚洲综合人网7777| 蜜桃无码一区二区三区| 国精品91人妻无码一区二区三区| 色婷婷欧美在线播放内射| 男人一天堂精品国产乱码| 亚洲国产精品自产在线播放| 成人亚欧欧美激情在线观看| 人妻丝袜无码专区视频网站| 国产伦精品一区二区三区| 激情中文丁香激情综合| 无码一区+中文字幕| 亚洲欧美日产综合一区二区三区| 亚洲高清免费在线观看| 国内精品人妻一区二区三区| 国产精品多p对白交换绿帽| 国产永久免费高清在线观看| 人妻少妇久久中文字幕| 中文字幕乱码一区二区三区免费| 国产区成人精品视频|