[lcm] Qualcomm平台显示屏lcd添加I2C读取功能

简介: 1硬件设计分析采用IC 的I2C 功能读取ID 寄存器2ARM9 更改GPIO 配置3LK 添加代码4LK 阶段不接屏不亮背光5kernel 阶段不接屏不亮背光6kernel 阶段I2C 配置更多相关文章:更多相关文章:《高通Qualcom...

更多相关文章:

更多相关文章:

《高通Qualcomm平台lk(light kernel)启动流程1——aboot_init()之前》:
http://blog.csdn.net/u014134180/article/details/78133916
《高通Qualcomm平台lk(light kernel)启动流程2——aboot_init()》:
http://blog.csdn.net/u014134180/article/details/78132580
《高通Qualcomm平台lk(light kernel)启动流程3——到高通lcm屏点亮》:
http://blog.csdn.net/u014134180/article/details/78177040

《[lcm] Qualcomm Android Display Subsystem 架构》
http://blog.csdn.net/u014134180/article/details/78129502

《[lcm] Qualcomm平台的显示屏lcd驱动移植步骤》:
http://blog.csdn.net/u014134180/article/details/78129499
《[lcm] Qualcomm平台兼容多显示屏lcd的方法&并从lk传输到kernel过程》:
http://blog.csdn.net/u014134180/article/details/78166978
《[lcm] Qualcomm平台显示屏lcd添加I2C读取功能》:
http://blog.csdn.net/u014134180/article/details/78176160

1、硬件设计分析——采用IC 的I2C 功能读取ID 寄存器

这颗IC 支持MIPI 和I2C,根据IC 厂FAE 给的datasheet,ID 寄存器只支持I2C 读取,MIPI 不可以读取该寄存器。此颗IC 的I2C 功能使用有如下几点:

  1. LK 阶段可以通过读取寄存器ID,判断IC 是否正常起来;结合ID 脚,区分一供和二供。
  2. LK 阶段可以通过读取寄存器ID,判断是否有屏连接,控制无屏情况下,不亮背光。
  3. Kernel 阶段实现ESD 功能,以及不接屏不亮背光。
  4. 效果调试,通过I2C 写寄存器。
  5. 设计弊端:据和IC 厂FAE 沟通,ID 寄存器是区分IC 型号;模组厂并没有和IC 厂沟通,烧写特定寄存器不同的值用区分哪家模组厂,IC 支持,如果这样,硬件设计就可以不需要LCD_ID0 这个pin 脚,还能节省一些功耗。

2、ARM9 更改GPIO 配置

Arm9 默认BLSP 配置是SPI,需要更改为I2C 模式,修改如下。

这里写图片描述

3、LK 添加代码

1、分析硬件原理图LCD 的I2C 连接在BLSP7.
2、BLSP7 对应的是BLSP2 QUP3,物理地址0x7AF7000,IRQ 是333.参考文档SP80-P3255-6B。如下图:

这里写图片描述
这里写图片描述

3、在bootable/bootloader/lk/target/msm8953/oem_panel.c 文件

  1. i2c 的地址和寄存器ID
    这里写图片描述

  2. qup_blsp_i2c_init是i2c 初始化函数,lcd_i2c_read_id 函数是读取ID 寄存器的值存储在val,根据val 的值是否是0x21,判断是否有屏连接,再根据status_id0 判断是一供还是二供。
    这里写图片描述

  3. 下图是lcd_i2c_read_id函数,struct i2c_msg 存储两组数据,第一组是写ID 寄存器地址,第二组是读取的值。
    这里写图片描述

4、qup_blsp_i2c_init 函数在/bootable/bootloader/lk/platform/msm_shared/i2c_qup.c

  1. init 函数主要修改gpio_config_blsp_i2cclock_config_blsp_i2c
    这里写图片描述

  2. gpio_config_blsp_i2c 函数修改对应I2C 的gpio。
    这里写图片描述

  3. clock_config_blsp_i2c 函数需要配置几个clock
    这里写图片描述

5、文件路径/bootable/bootloader/lk/msm8953/msm8953-clock.c

  1. 时序添加时参考本文档中的结构体
    这里写图片描述
    这里写图片描述

4、LK 阶段不接屏不亮背光

oem_panel.c 文件定义全局变量lcm_exist,根据i2c 读ID 寄存器的值是否为0x21 判断是
否有连接屏幕,在/platform/msm_shared/display.c 文件中是否要打开背光。

这里写图片描述

5、kernel 阶段不接屏不亮背光

kernel/drivers/video/msm/mdss/mdss_dsi_panel.c 文件,函数mdss_dsi_panel_bl_ctrl中去调用nt1021_read_registers 函数,根据返回值判断是否有连接屏幕,如果没有,就不level值设置为0 , 不输出pwm 。nt1021_read_registers 函数在/kernel/drivers/video/msm/msm_dba/nt51021.c 文件,是kernel 阶段i2c 驱动代码。

这里写图片描述

6、kernel 阶段I2C 配置

这里写图片描述

1、在msm8953.dtsi 添加i2c_7,对比i2c_1,修改i2c_7的寄存器。
2、在msm8953-mtp.dts 中添加&i2c_7 结构,添加使能gpio 和pinctrl。硬件设计,gpio63 控制I2C 上拉开关。
3、在msm8953-pinctrl.dtsi中针对具体的pinctrl-0,pinctrl-1 配置,参考其他gpio 配置。
4、i2c_7 的解析都在/kernel/drivers/video/msm/msm_dba/nt51021.c文件,被外部调用的函数接口有3 个,如下:

  1. 这个函数是被用来做kernel 阶段判断是否有屏连接,是否需要点亮背光。
    这里写图片描述

  2. 这个函数是用来优化背光在低亮度抖动,被mdss_dsi_panel_bklt_dcs 函数调用,文件位
    /kernel/drivers/video/msm/mdss/mdss_dsi_panel.cmdss_dsi_panel_bklt_dcs 函数是写主屏IC 产生PWM 寄存器,产生不同的pwm 控制背光亮度变化。
    这里写图片描述

  3. 这个函数是用来做屏幕ESD,由于主屏ESD 还没有达到要求,软件暂未调试添加。
    这里写图片描述

Wu_Being博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!

《[lcm] Qualcomm平台显示屏lcd添加I2C读取功能》:
http://blog.csdn.net/u014134180/article/details/78176160

Wu_Being 吴兵博客接受赞助费二维码

如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。

目录
相关文章
|
4月前
|
异构计算
FPGA新起点V1开发板(十)——按键控制LED
FPGA新起点V1开发板(十)——按键控制LED
FPGA新起点V1开发板(十)——按键控制LED
|
4月前
|
异构计算
FPGA强化(9):TFT_LCD液晶屏驱动
FPGA强化(9):TFT_LCD液晶屏驱动
58 0
|
6月前
|
IDE 物联网 开发工具
【瑞萨MCU】玩转 HMI-Board 之 MDK + RASC 点灯
【瑞萨MCU】玩转 HMI-Board 之 MDK + RASC 点灯
|
11月前
|
芯片
LED面板显示屏驱动芯片
一、基本概述 TM1638是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动、键盘扫描等电路。本产品质量可靠、稳定性好、抗干扰能力强。 二、主要应用场合 主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电表等数码管或LED显示设备。 三、管脚说明 DIO口输出数据时为N管开漏输出,在读键的时候需要外接1K-10K的上拉电阻。推荐10K的上拉 电阻。DIO在时钟的下降沿控制N管的动作,此时读数时不稳定,在时钟的上升沿读数才时稳定。 四、串行数据传输 读取和接收1个BIT都在时钟的上
MicroPython 玩转硬件系列7:OLED显示
MicroPython 玩转硬件系列7:OLED显示
|
编解码 物联网
国产MCU-CW32F030开发学习-ST7735 LCD模块
国产MCU-CW32F030开发学习-ST7735 LCD模块
131 0
国产MCU-CW32F030开发学习-ST7735 LCD模块
|
传感器
野火RA6M5开发板 DHT11温湿度传感器 OLED显示测试学习
野火RA6M5开发板 DHT11温湿度传感器 OLED显示测试学习
121 0
野火RA6M5开发板 DHT11温湿度传感器 OLED显示测试学习
51单片机学习-HC-05蓝牙模块-LCD12864显示
51单片机学习-HC-05蓝牙模块-LCD12864显示
158 0
51单片机学习-HC-05蓝牙模块-LCD12864显示
野火RA6M5开发板 IIC-OLED测试学习
野火RA6M5开发板 IIC-OLED测试学习
101 0
野火RA6M5开发板 IIC-OLED测试学习