linux之调试mipi液晶屏
設計了一塊嵌入式電路板,運行linux系統,主控CPU為px30,需要適配一塊顯示驅動IC為ILI9881D的5.0寸液晶屏,分辨率為720*1280。
液晶驅動電路如下:
MIPI通道為4lane,pwm調光驅動為負極性(占空比最小亮度最高)。
液晶屏廠家提供了一份初始化代碼文件和一份時序參數文件;
參照Rockchip官方參考文檔:Rockchip_DRM_Panel_Porting_Guide_V1.3_20171209.pdf-Linux文檔類資源-CSDN下載
第二章MIPI-DSI部分,在px30_linux->kernel->arch->arm64->boot->dts文件夾下新建一個lcd-mipi720x1280-KLD50225HHMB.dtsi文件,加入如下代碼:
&dsi_in_vopl {status = "disabled"; };&dsi_in_vopb {status = "okay"; };&route_dsi {status = "okay";};&mipi_dphy {status = "okay"; };根據廠家提供的初始化代碼編輯panel-init-sequence = [],初始化代碼如下:
initinal: { Generic_Long_Writ_3P(0xFF,0x98,0x81,0x03);Generic_Short_Write_1P(0x01,0x00); Generic_Short_Write_1P(0x02,0x00);Generic_Short_Write_1P(0x03,0x73);Generic_Short_Write_1P(0x04,0x00); Generic_Short_Write_1P(0x05,0x00); Generic_Short_Write_1P(0x06,0x0A); Generic_Short_Write_1P(0x07,0x00); Generic_Short_Write_1P(0x08,0x00); Generic_Short_Write_1P(0x09,0x01); Generic_Short_Write_1P(0x0a,0x00); Generic_Short_Write_1P(0x0b,0x00); Generic_Short_Write_1P(0x0c,0x01); Generic_Short_Write_1P(0x0d,0x00); Generic_Short_Write_1P(0x0e,0x00); Generic_Short_Write_1P(0x0f,0x1D); Generic_Short_Write_1P(0x10,0x1D); Generic_Short_Write_1P(0x11,0x00); Generic_Short_Write_1P(0x12,0x00); Generic_Short_Write_1P(0x13,0x00); Generic_Short_Write_1P(0x14,0x00); Generic_Short_Write_1P(0x15,0x00); Generic_Short_Write_1P(0x16,0x00); Generic_Short_Write_1P(0x17,0x00); Generic_Short_Write_1P(0x18,0x00); Generic_Short_Write_1P(0x19,0x00); Generic_Short_Write_1P(0x1a,0x00); Generic_Short_Write_1P(0x1b,0x00); Generic_Short_Write_1P(0x1c,0x00); Generic_Short_Write_1P(0x1d,0x00); Generic_Short_Write_1P(0x1e,0x40); Generic_Short_Write_1P(0x1f,0x80);Generic_Short_Write_1P(0x20,0x06); Generic_Short_Write_1P(0x21,0x02); Generic_Short_Write_1P(0x22,0x00); Generic_Short_Write_1P(0x23,0x00); Generic_Short_Write_1P(0x24,0x00); Generic_Short_Write_1P(0x25,0x00); Generic_Short_Write_1P(0x26,0x00); Generic_Short_Write_1P(0x27,0x00); Generic_Short_Write_1P(0x28,0x33); Generic_Short_Write_1P(0x29,0x03); Generic_Short_Write_1P(0x2a,0x00);Generic_Short_Write_1P(0x2b,0x00); Generic_Short_Write_1P(0x2c,0x00); Generic_Short_Write_1P(0x2d,0x00); Generic_Short_Write_1P(0x2e,0x00); Generic_Short_Write_1P(0x2f,0x00); Generic_Short_Write_1P(0x30,0x00); Generic_Short_Write_1P(0x31,0x00); Generic_Short_Write_1P(0x32,0x00); Generic_Short_Write_1P(0x33,0x00); Generic_Short_Write_1P(0x34,0x04); Generic_Short_Write_1P(0x35,0x00); Generic_Short_Write_1P(0x36,0x00); Generic_Short_Write_1P(0x37,0x00); Generic_Short_Write_1P(0x38,0x3C); Generic_Short_Write_1P(0x39,0x35); Generic_Short_Write_1P(0x3a,0x01); Generic_Short_Write_1P(0x3b,0x40); Generic_Short_Write_1P(0x3c,0x00); Generic_Short_Write_1P(0x3d,0x01); Generic_Short_Write_1P(0x3e,0x00); Generic_Short_Write_1P(0x3f,0x00); Generic_Short_Write_1P(0x40,0x00); Generic_Short_Write_1P(0x41,0x88); Generic_Short_Write_1P(0x42,0x00); Generic_Short_Write_1P(0x43,0x00); Generic_Short_Write_1P(0x44,0x1F); Generic_Short_Write_1P(0x50,0x01); Generic_Short_Write_1P(0x51,0x23); Generic_Short_Write_1P(0x52,0x45); Generic_Short_Write_1P(0x53,0x67); Generic_Short_Write_1P(0x54,0x89); Generic_Short_Write_1P(0x55,0xab); Generic_Short_Write_1P(0x56,0x01); Generic_Short_Write_1P(0x57,0x23); Generic_Short_Write_1P(0x58,0x45); Generic_Short_Write_1P(0x59,0x67); Generic_Short_Write_1P(0x5a,0x89); Generic_Short_Write_1P(0x5b,0xab); Generic_Short_Write_1P(0x5c,0xcd); Generic_Short_Write_1P(0x5d,0xef); Generic_Short_Write_1P(0x5e,0x11); Generic_Short_Write_1P(0x5f,0x01); Generic_Short_Write_1P(0x60,0x00); Generic_Short_Write_1P(0x61,0x15); Generic_Short_Write_1P(0x62,0x14); Generic_Short_Write_1P(0x63,0x0E); Generic_Short_Write_1P(0x64,0x0F); Generic_Short_Write_1P(0x65,0x0C); Generic_Short_Write_1P(0x66,0x0D); Generic_Short_Write_1P(0x67,0x06); Generic_Short_Write_1P(0x68,0x02); Generic_Short_Write_1P(0x69,0x07); Generic_Short_Write_1P(0x6a,0x02); Generic_Short_Write_1P(0x6b,0x02); Generic_Short_Write_1P(0x6c,0x02); Generic_Short_Write_1P(0x6d,0x02); Generic_Short_Write_1P(0x6e,0x02); Generic_Short_Write_1P(0x6f,0x02);Generic_Short_Write_1P(0x70,0x02); Generic_Short_Write_1P(0x71,0x02); Generic_Short_Write_1P(0x72,0x02); Generic_Short_Write_1P(0x73,0x02); Generic_Short_Write_1P(0x74,0x02); Generic_Short_Write_1P(0x75,0x01); Generic_Short_Write_1P(0x76,0x00); Generic_Short_Write_1P(0x77,0x14); Generic_Short_Write_1P(0x78,0x15); Generic_Short_Write_1P(0x79,0x0E); Generic_Short_Write_1P(0x7a,0x0F); Generic_Short_Write_1P(0x7b,0x0C); Generic_Short_Write_1P(0x7c,0x0D); Generic_Short_Write_1P(0x7d,0x06); Generic_Short_Write_1P(0x7e,0x02); Generic_Short_Write_1P(0x7f,0x07);Generic_Short_Write_1P(0x80,0x02); Generic_Short_Write_1P(0x81,0x02); Generic_Short_Write_1P(0x82,0x02); Generic_Short_Write_1P(0x83,0x02); Generic_Short_Write_1P(0x84,0x02); Generic_Short_Write_1P(0x85,0x02); Generic_Short_Write_1P(0x86,0x02); Generic_Short_Write_1P(0x87,0x02); Generic_Short_Write_1P(0x88,0x02); Generic_Short_Write_1P(0x89,0x02); Generic_Short_Write_1P(0x8A,0x02);Generic_Long_Write_3P(0xFF,0x98,0x81,0x04); //Generic_Short_Write_1P(0x00,0x80);Generic_Short_Write_1P(0x70,0x00); Generic_Short_Write_1P(0x71,0x00); Generic_Short_Write_1P(0x82,0x0F);Generic_Short_Write_1P(0x84,0x0F);Generic_Short_Write_1P(0x85,0x0D); Generic_Short_Write_1P(0x32,0xAC);Generic_Short_Write_1P(0x8C,0x80);Generic_Short_Write_1P(0x3C,0xF5); Generic_Short_Write_1P(0xB5,0x07);Generic_Short_Write_1P(0x31,0x45); Generic_Short_Write_1P(0x3A,0x24); Generic_Short_Write_1P(0x88,0x33);Generic_Long_Write_3P(0xFF,0x98,0x81,0x01); Generic_Short_Write_1P(0x22,0x0A); Generic_Short_Write_1P(0x31,0x00); Generic_Short_Write_1P(0x53,0x93); // 8A VCOM1 Generic_Short_Write_1P(0x55,0xA2); // A2 VCOM2 Generic_Short_Write_1P(0x50,0x81); Generic_Short_Write_1P(0x51,0x85);Generic_Short_Write_1P(0x62,0x0D);Generic_Long_Write_3P(0xFF,0x98,0x81,0x01);Generic_Short_Write_1P(0xA0,0x00); Generic_Short_Write_1P(0xA1,0x1A); Generic_Short_Write_1P(0xA2,0x28); Generic_Short_Write_1P(0xA3,0x13); Generic_Short_Write_1P(0xA4,0x16); Generic_Short_Write_1P(0xA5,0x29); Generic_Short_Write_1P(0xA6,0x1D); Generic_Short_Write_1P(0xA7,0x1E); Generic_Short_Write_1P(0xA8,0x84); Generic_Short_Write_1P(0xA9,0x1C); Generic_Short_Write_1P(0xAA,0x28); Generic_Short_Write_1P(0xAB,0x75); Generic_Short_Write_1P(0xAC,0x1A); Generic_Short_Write_1P(0xAD,0x19); Generic_Short_Write_1P(0xAE,0x4D); Generic_Short_Write_1P(0xAF,0x22); Generic_Short_Write_1P(0xB0,0x28); Generic_Short_Write_1P(0xB1,0x54); Generic_Short_Write_1P(0xB2,0x66); Generic_Short_Write_1P(0xB3,0x39); Generic_Short_Write_1P(0xC0,0x00); Generic_Short_Write_1P(0xC1,0x1A); Generic_Short_Write_1P(0xC2,0x28); Generic_Short_Write_1P(0xC3,0x13); Generic_Short_Write_1P(0xC4,0x16); Generic_Short_Write_1P(0xC5,0x29); Generic_Short_Write_1P(0xC6,0x1D); Generic_Short_Write_1P(0xC7,0x1E); Generic_Short_Write_1P(0xC8,0x84); Generic_Short_Write_1P(0xC9,0x1C); Generic_Short_Write_1P(0xCA,0x28); Generic_Short_Write_1P(0xCB,0x75); Generic_Short_Write_1P(0xCC,0x1A); Generic_Short_Write_1P(0xCD,0x19); Generic_Short_Write_1P(0xCE,0x4D); Generic_Short_Write_1P(0xCF,0x22); Generic_Short_Write_1P(0xD0,0x28); Generic_Short_Write_1P(0xD1,0x54); Generic_Short_Write_1P(0xD2,0x66); Generic_Short_Write_1P(0xD3,0x39);Generic_Long_Write_3P(0xFF,0x98,0x81,0x00); Generic_Short_Write_1P(0x35,0x00); //Generic_Short_Write_1P(0x36,0x03); // Generic_Long_Write_3P(0xFF,0x98,0x81,0x04); //BIST //Generic_Short_Write_1P(0x2F,0x01);DCS_Short_Write_NP(0x11); Delay(120); DCS_Short_Write_NP(0x29); } 9881d_enter_sleep_code(){Generic_Long_Write_3P(0xFF,0x98,0x81,0x00); //page 0 DCS_Short_Write_NP(0x28); //display off delay 10ms DCS_Short_Write_NP(0x10); //sleep indelay 120ms}9881d_exit_sleep_code() { Generic_Long_Write_3P(0xFF,0x98,0x81,0x00); //page 0 DCS_Short_Write_NP(0x11); // sleep out delay 120ms DCS_Short_Write_NP(0x29); //display on delay 10ms }根據廠家提供的時序文件編輯display-timings {},時序參數如下:
一些延時相關參數廠家沒有提供,如reset、init等,這個可根據官方文檔的建議設置,如果不成功再做些調整。
編輯完成的dtsi文件:
/** Copyright (C) 2018 9tripod, Inc.* arch/arm/boot/dts/lcd-mipi720x1280-KLD50225HHMB.dtsi* lcd model: KLD50225HHMB* resolution: 720x1280* mipi channel: single */&dsi {status = "okay";rockchip,line-rate = <550>;panel@0 {compatible = "sitronix,ILI9881D", "simple-panel-dsi";reg = <0>;power-supply = <&vcc3v3_lcd>;backlight = <&backlight>;//backlight = <&pwm_bl>;reset-gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;prepare-delay-ms = <100>;reset-delay-ms = <220>;init-delay-ms = <120>;enable-delay-ms = <120>;disable-delay-ms = <100>;unprepare-delay-ms = <120>;width-mm = <62>;height-mm = <110>;dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST /*|MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET*/)>;dsi,format = <MIPI_DSI_FMT_RGB888>;dsi,lanes = <4>;panel-init-sequence = [39 00 04 FF 98 81 0315 00 02 01 0015 00 02 02 0015 00 02 03 7315 00 02 04 0015 00 02 05 0015 00 02 06 0A15 00 02 07 0015 00 02 08 0015 00 02 09 0115 00 02 0A 0015 00 02 0B 0015 00 02 0C 0115 00 02 0D 0015 00 02 0E 0015 00 02 0F 1D15 00 02 10 1D15 00 02 11 0015 00 02 12 0015 00 02 13 0015 00 02 14 0015 00 02 15 0015 00 02 16 0015 00 02 17 0015 00 02 18 0015 00 02 19 0015 00 02 1A 0015 00 02 1B 0015 00 02 1C 0015 00 02 1D 0015 00 02 1E 4015 00 02 1F 8015 00 02 20 0615 00 02 21 0215 00 02 22 0015 00 02 23 0015 00 02 24 0015 00 02 25 0015 00 02 26 0015 00 02 27 0015 00 02 28 3315 00 02 29 0315 00 02 2A 0015 00 02 2B 0015 00 02 2C 0015 00 02 2D 0015 00 02 2E 0015 00 02 2F 0015 00 02 30 0015 00 02 31 0015 00 02 32 0015 00 02 33 0015 00 02 34 0415 00 02 35 0015 00 02 36 0015 00 02 37 0015 00 02 38 3C15 00 02 39 3515 00 02 3A 0115 00 02 3B 4015 00 02 3C 0015 00 02 3D 0115 00 02 3E 0015 00 02 3F 0015 00 02 40 0015 00 02 41 8815 00 02 42 0015 00 02 43 0015 00 02 44 1F15 00 02 50 0115 00 02 51 2315 00 02 52 4515 00 02 53 6715 00 02 54 8915 00 02 55 AB15 00 02 56 0115 00 02 57 2315 00 02 58 4515 00 02 59 6715 00 02 5A 8915 00 02 5B AB15 00 02 5C CD15 00 02 5D EF15 00 02 5E 1115 00 02 5F 0115 00 02 60 0015 00 02 61 1515 00 02 62 1415 00 02 63 0E15 00 02 64 0F15 00 02 65 0C15 00 02 66 0D15 00 02 67 0615 00 02 68 0215 00 02 69 0715 00 02 6A 0215 00 02 6B 0215 00 02 6C 0215 00 02 6D 0215 00 02 6E 0215 00 02 6F 0215 00 02 70 0215 00 02 71 0215 00 02 72 0215 00 02 73 0215 00 02 74 0215 00 02 75 0115 00 02 76 0015 00 02 77 1415 00 02 78 1515 00 02 79 0E15 00 02 7A 0F15 00 02 7B 0C15 00 02 7C 0D15 00 02 7D 0615 00 02 7E 0215 00 02 7F 0715 00 02 80 0215 00 02 81 0215 00 02 82 0215 00 02 83 0215 00 02 84 0215 00 02 85 0215 00 02 86 0215 00 02 87 0215 00 02 88 0215 00 02 89 0215 00 02 8A 0239 00 04 FF 98 81 0415 00 02 70 0015 00 02 71 0015 00 02 82 0F15 00 02 84 0F15 00 02 85 0D15 00 02 32 AC15 00 02 8C 8015 00 02 3C F515 00 02 B5 0715 00 02 31 4515 00 02 3A 2415 00 02 88 3339 00 04 FF 98 81 0115 00 02 22 0A15 00 02 31 0015 00 02 53 9315 00 02 55 A215 00 02 50 8115 00 02 51 8515 00 02 62 0D39 00 04 FF 98 81 0115 00 02 A0 0015 00 02 A1 1A15 00 02 A2 2815 00 02 A3 1315 00 02 A4 1615 00 02 A5 2915 00 02 A6 1D15 00 02 A7 1E15 00 02 A8 8415 00 02 A9 1C15 00 02 AA 2815 00 02 AB 7515 00 02 AC 1A15 00 02 AD 1915 00 02 AE 4D15 00 02 AF 2215 00 02 B0 2815 00 02 B1 5415 00 02 B2 6615 00 02 B3 3915 00 02 C0 0015 00 02 C1 1A15 00 02 C2 2815 00 02 C3 1315 00 02 C4 1615 00 02 C5 2915 00 02 C6 1D15 00 02 C7 1E15 00 02 C8 8415 00 02 C9 1C15 00 02 CA 2815 00 02 CB 7515 00 02 CC 1A15 00 02 CD 1915 00 02 CE 4D15 00 02 CF 2215 00 02 D0 2815 00 02 D1 5415 00 02 D2 6615 00 02 D3 3939 00 04 FF 98 81 0015 00 02 35 00 /* 39 00 04 FF 98 81 04 */ /* 15 00 02 2F 01 */05 78 01 1105 00 01 29];panel-exit-sequence = [];display-timings {native-mode = <&timing0>;timing0: timing0 {clock-frequency = <65000000>;hactive = <720>;vactive = <1280>;hfront-porch = <50>;hsync-len = <8>;hback-porch = <50>;vfront-porch = <30>;vsync-len = <8>;vback-porch = <30>;hsync-active = <0>;vsync-active = <0>;de-active = <0>;pixelclk-active = <0>;swap-rb = <0>;swap-rg = <0>;swap-gb = <0>;};};}; };&dsi_in_vopl {status = "disabled"; };&dsi_in_vopb {status = "okay"; };&route_dsi {status = "okay";};&mipi_dphy {status = "okay"; };將lcd-mipi720x1280-KLD50225HHMB.dtsi加入x30.dts文件中:
#include "lcd-mipi720x1280-KLD50225HHMB.dtsi" //5 inch mipi 720*1280還需在x30.dts文件中加入backlight設置:
backlight: backlight {compatible = "pwm-backlight";pwms = <&pwm1 0 25000 1>;enable-gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;//pinctrl-names = "default";//pinctrl-0 = <&bl_en>;brightness-levels = <0 1 2 3 4 5 6 78 9 10 11 12 13 14 1516 17 18 19 20 21 22 2324 25 26 27 28 29 30 3132 33 34 35 36 37 38 3940 41 42 43 44 45 46 4748 49 50 51 52 53 54 5556 57 58 59 60 61 62 6364 65 66 67 68 69 70 7172 73 74 75 76 77 78 7980 81 82 83 84 85 86 8788 89 90 91 92 93 94 9596 97 98 99 100 101 102 103104 105 106 107 108 109 110 111112 113 114 115 116 117 118 119120 121 122 123 124 125 126 127128 129 130 131 132 133 134 135136 137 138 139 140 141 142 143144 145 146 147 148 149 150 151152 153 154 155 156 157 158 159160 161 162 163 164 165 166 167168 169 170 171 172 173 174 175176 177 178 179 180 181 182 183184 185 186 187 188 189 190 191192 193 194 195 196 197 198 199200 201 202 203 204 205 206 207208 209 210 211 212 213 214 215216 217 218 219 220 221 222 223224 225 226 227 228 229 230 231232 233 234 235 236 237 238 239240 241 242 243 244 245 246 247248 249 250 251 252 253 254 255>;default-brightness-level = <200>;};pwms 的第4個參數為1表示背光為負極性。
點亮之后的效果如下:
?
總結
以上是生活随笔為你收集整理的linux之调试mipi液晶屏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 查看开机关机日志
- 下一篇: 数学建模最小二乘法拟合_MATLAB最小