当前位置: 首页 > article >正文

全志A133 android10 mipi屏幕调试

一,确认屏幕信息

屏幕调试首先要查看屏幕规格书,主要看里面的屏供电电压vdd,背光供电电压,timing参数部分。

举个例子:

  1. 屏供电电压
    在这里插入图片描述
    可以看出供电电压为3.3V,过大则会烧屏;
  2. 背光供电电压
    在这里插入图片描述
    屏幕背光电压为12V;
  3. 屏timing参数
    在这里插入图片描述
    全志平台的timming跟其他平台有一些差异,具体公式如下:
lcd_dclk_freq的值,具体公式如下:
lcd_dclk_freq = lcd_ht * lcd_vt * fps(60) 
对于一直点不亮的mipi屏,可以适当加大数值,不一定要按照公式算出的准确结果!

lcd_hbp = hbp+hspw;
lcd_ht = hbp+hspw+hfp+ht;
lcd_hspw = hspw;
lcd_vbp = vbp+vspw;
lcd_vt = vbp+vspw+vfp+vt;
lcd_vspw = vspw;

二,设备树配置

  1. 设备树配置,主要配置disp,lcd0这两个节点:
    代码路径:longan/device/config/chips/a133/configs/b6/board.dts
       disp: disp@06000000 {
            disp_init_enable         = <1>;
            disp_mode                = <0>;

            screen0_output_type      = <1>;
            screen0_output_mode      = <4>;

            screen1_output_type      = <1>;
            screen1_output_mode      = <4>;

            screen1_output_format    = <0>;
            screen1_output_bits      = <0>;
            screen1_output_eotf      = <4>;
            screen1_output_cs        = <257>;
            screen1_output_dvi_hdmi  = <2>;
            screen1_output_range     = <2>;
            screen1_output_scan      = <0>;
            screen1_output_aspect_ratio = <8>;

            dev0_output_type         = <1>;
            dev0_output_mode         = <4>;
            dev0_screen_id           = <0>;
            dev0_do_hpd              = <0>;

            dev1_output_type         = <4>;
            dev1_output_mode         = <10>;
            dev1_screen_id           = <1>;
            dev1_do_hpd              = <1>;

            def_output_dev           = <0>;
            hdmi_mode_check          = <1>;

            fb0_format               = <0>;
            fb0_width                = <720>;
            fb0_height               = <1280>;

            fb1_format               = <0>;
            fb1_width                = <0>;
            fb1_height               = <0>;
            chn_cfg_mode             = <1>;

            disp_para_zone           = <1>;
            /*VCC-LCD*/
    		dc1sw-supply = <&reg_cldo4>;
    		/*VCC-DSI*/
    		cldo1-supply = <&reg_cldo1>;
    		/*VCC-PD*/
    		dcdc1-supply = <&reg_cldo3>;
       		 };
      lcd0: lcd0@01c0c000 {
            lcd_used            = <1>;
            lcd_driver_name     = "K080_IM2HYL802R_800X1280";  //mipi驱动
            lcd_backlight       = <50>;
            lcd_if              = <4>;

            lcd_x               = <720>;
            lcd_y               = <1280>;
            lcd_width           = <150>;
            lcd_height          = <36>;
            lcd_dclk_freq       = <58>;

            lcd_pwm_used        = <1>;
            lcd_pwm_ch          = <0>;
            lcd_pwm_freq        = <50000>;
            lcd_pwm_pol         = <1>;
            lcd_pwm_max_limit   = <255>;

            lcd_hbp             = <30>;
            lcd_ht              = <770>;
            lcd_hspw            = <6>;
            lcd_vbp             = <16>;
            lcd_vt              = <1311>;
            lcd_vspw            = <4>;

            lcd_frm             = <0>;
            lcd_gamma_en        = <0>;
            lcd_bright_curve_en = <0>;
            lcd_cmap_en         = <0>;

            deu_mode            = <0>;
            lcdgamma4iep        = <22>;
            smart_color         = <90>;

            lcd_dsi_if          = <0>;
            lcd_dsi_lane        = <4>;
            lcd_dsi_format      = <0>;
            lcd_dsi_te          = <0>;
            lcd_dsi_eotp        = <0>;

            lcd_pin_power = "dcdc1";

            lcd_power0 = "cldo1";//VCC-MIPI-LCD cldo1 1.8
            lcd_power1 = "dc1sw";//VCC-LCD cldo4 3.3

            lcd_gpio_1 = <&pio PD 22 1 0 3 1>;//LCD-RST
            lcd_gpio_2 = <&pio PE 9 1 0 3 1>;//LCD0_PWREN_H PE9
            lcd_gpio_3 = <&r_pio PL 9 1 0 3 1>;//LCD0_PWREN_H_1V8

            pinctrl-0 = <&dsi4lane_pins_a>;
            pinctrl-1 = <&dsi4lane_pins_b>;

            lcd_bl_en = <&pio PH 18 1 1 0 3 1>;
            lcd_bl_0_percent    = <15>;
            lcd_bl_100_percent  = <100>;
        };
  1. uboot驱动配置
    上面lcd节点中“lcd_driver_name = "K080_IM2HYL802R_800X1280";”有引用驱动,mipi驱动部分平台已经是已经添加,我们只需要按照要求配置。如果uboot中没有添加驱动,那么连背光都不亮。驱动代码如下:
    代码路径:longan/brandy/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd/K080_IM2HYL802R_800X1280.c

替换填入初始化代码(一般由屏厂提供,按照格式替换进全志的数组中)

/*add panel initialization below*/

static struct LCM_setting_table lcm_init_setting[] = {
  {0xB9,    3,     {0xFF,0x83,0x94} },
  {0xBA,    6,     {0x63,0x03,0x68,0x6B,0xB2,0xC0} },
  {0xB1,   10,     {0x50,0x12,0x72,0x09,0x33,0x54,0x71,0x31,0x70,0x2F} },
  {0xB2,    6,     {0x00,0x80,0x64,0x0E,0x0D,0x2F} },
  {0xB4,   21,     {0x6C,0x6D,0x6C,0x6D,0x6C,0x6D,0x01,0x01,0xFF,0x75,0x00,0x3F,0x6C,0x6D,0x6C,0x6D,0x6C,0x6D,0x01,0x01,0xFF} },
  {0xB6,    2,     {0x73,0x73} },
  {0xD3,   33,     {0x00,0x00,0x07,0x07,0x40,0x07,0x10,0x00,0x08,0x10,0x08,0x00,0x08,0x54,0x15,0x0E,0x05,0x0E,0x02,0x15,0x06,0x05,0x06,0x47,0x44,0x0A,0x0A,0x4B,0x10,0x07,0x07,0x0E,0x40} },
  {0xD5,   44,     {0x1A,0x1A,0x1B,0x1B,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x24,0x25,0x18,0x18,0x26,0x27,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x20,0x21,0x18,0x18,0x18,0x18} },
  {0xD6,   44,     {0x1A,0x1A,0x1B,0x1B,0x0B,0x0A,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x21,0x20,0x18,0x18,0x27,0x26,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x25,0x24,0x18,0x18,0x18,0x18} },
  {0xE0,   58,     {0x00,0x0C,0x19,0x20,0x23,0x26,0x29,0x28,0x51,0x61,0x70,0x6F,0x76,0x86,0x89,0x8D,0x99,0x9A,0x95,0xA1,0xB0,0x57,0x55,0x58,0x5C,0x5E,0x64,0x6B,0x7F,0x00,0x0C,0x18,0x20,0x23,0x26,0x29,0x28,0x51,0x61,0x70,0x6F,0x76,0x86,0x89,0x8D,0x99,0x9A,0x95,0xA1,0xB0,0x57,0x55,0x58,0x5C,0x5E,0x64,0x6B,0x7F} },
  {0xC0,    2,     {0x1F,0x31} },
  {0xCC,    1,     {0x0B} },
  {0xD4,    1,     {0x02} },
  {0xBD,    1,     {0x02} },
  {0xD8,   12,     {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF} },
  {0xBD,    1,     {0x00} },
  {0xBD,    1,     {0x01} },
  {0xB1,    1,     {0x60} },
  {0xBD,    1,     {0x00} },
  {0xBF,    7,     {0x40,0x81,0x50,0x00,0x1A,0xFC,0x01} },

  //SLP OUT
  {0x11,     1,     {0x00} },      // SLPOUT
  {REGFLAG_DELAY, REGFLAG_DELAY, {120} },

  //DISP ON
  {0x29,     1,     {0x00} },      // DSPON
  {REGFLAG_DELAY, REGFLAG_DELAY, {5} },

  {REGFLAG_END_OF_TABLE, REGFLAG_END_OF_TABLE, {} }
};

LCD_panel_init函数用于初始化 LCD 面板,通过 DSI(Display Serial Interface)发送初始化命令序列。

static void LCD_panel_init(u32 sel)
{
    __u32 i;

    sunxi_lcd_dsi_clk_enable(sel);
    sunxi_lcd_delay_ms(20);
    sunxi_lcd_dsi_dcs_write_0para(sel, DSI_DCS_SOFT_RESET);
    sunxi_lcd_delay_ms(10);

    print_dsi_cmd(lcm_init_setting);  //打印mipi屏初始化参数
    for (i = 0; ; i++) {
            if (lcm_init_setting[i].count == REGFLAG_END_OF_TABLE)
                break;
            else if (lcm_init_setting[i].count == REGFLAG_DELAY)
                sunxi_lcd_delay_ms(lcm_init_setting[i].para_list[0]);
#ifdef SUPPORT_DSI
            else
                dsi_dcs_wr(sel, lcm_init_setting[i].cmd, lcm_init_setting[i].para_list, lcm_init_setting[i].count);
#endif
        //break;
    }

    return;
}

一般情况下,按照如上步骤适配,基本都可以正常点亮屏幕。


http://www.kler.cn/a/570141.html

相关文章:

  • NameError: name ‘libpaddle‘ is not defined
  • 【windows driver】 开发环境简明安装教程
  • ECS单机部署Hadoop
  • CSS中table常用的独有属性
  • 【软件安装】WebStorm现在免费,但是是非商业版本
  • Machine Learning 初探
  • 火语言RPA--PDF提取表格
  • 【安装Linux on Windows with WSL】包括 VS Code 和 Git
  • 深入解析 Vue Router 的 beforeEach:功能、用法与实践指南
  • 【部署】Docker指令备忘清单(超级详细!)
  • datalist 是什么?
  • AWR microwave office 仿真学习(三)各类传输线模型学习
  • 本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成
  • FPGA学习(一) —— 四位全加器
  • 数据挖掘工程师的技术图谱和学习路径
  • 中间件专栏之MySQL篇——MySQL的索引原理
  • 【架构】信息系统战略规划的三阶段演进及核心方法
  • 通过多线程同时获取H264和H265码流
  • scala基础学习-匹配模式
  • Kettle 最常见的性能优化面试题