手机开机后LCD显示黑屏

来源:互联网 发布:android连接数据库 编辑:程序博客网 时间:2024/04/29 10:53

一、问题现象

合入厂商提供的LCD初始化序列后从按下Power键开机,preloader-》lk-》kernel-》normal mode手机全程LCD黑屏

LCD模组厂是BOYI,LCD IC为otm1289

二、问题分析

1. 怀疑厂商初始化序列有问题

2. 怀疑初始化序列里面的设备使能锁关闭太早导致

3. 从LCD初始化流程上来分析,看看哪一步出现了问题,首先是Rst管脚是否有信号输入

三、实际验证

1. 怀疑厂商初始化序列有问题

boyi IC厂商来现场支持后按照IC的datasheet查看了一下寄存器配置,没有什么问题,并且已经确认,在他们治具上是可以正常亮屏,排除了初始化Code的问题

2. 怀疑初始化序列里面的设备使能锁关闭太早导致

将初始化使能开关关闭的代码往后放,放到初始化最后:

static u8 lcd_boyi_otm8019a_cmd_129[]={0x00,0x00};
static u8 lcd_boyi_otm8019a_cmd_130[]={0xFF,0xFF,0xFF,0xFF};

测试验证无效,排除这个原因

3. 从LCD初始化流程上来分析,看看哪一步出现了问题,首先是Rst管脚是否有信号输入

开机过程中使用示波器测量reset管脚,reset管脚实现复位功能的高低高电平没有变化,即没有执行成功!

这次算是找到问题点了


解决方式:

之前是在dws里面将reset管脚配置成功能脚,现在改一下改为I/O管脚,在lcm_init函数里面添加管脚模式(如红色标注):

static void lcm_init(void)
{
    printf("%s, Rst gpio is 0x%x\n", __func__,GPIO_LCD_RST_PIN);
    mt_set_gpio_mode(GPIO_LCD_RST_PIN,GPIO_MODE_GPIO);

    MDELAY(10);
mt_set_gpio_out(GPIO_LCD_RST_PIN, GPIO_OUT_ONE);
    MDELAY(10);
mt_set_gpio_out(GPIO_LCD_RST_PIN, GPIO_OUT_ZERO);
    MDELAY(10);
    //SET_RESET_PIN(1);
mt_set_gpio_out(GPIO_LCD_RST_PIN, GPIO_OUT_ONE);
    MDELAY(120);
#if ONTIM_MODE
        dsi_set_cmdq_V2_common(lcm_initialization_setting, ARRAY_SIZE(lcm_initialization_setting), 1);
        #else
    push_table(lcm_initialization_setting, sizeof(lcm_initialization_setting) / sizeof(struct LCM_setting_table), 1);
#endif
}


编译boot,烧录到手机里面发现LCD亮屏

















0 0