一款mipi转lvds的lcd调试(lt8912b)

客户调试一款mipi转lvds的屏,使用的转换芯片是lt8912b。现将调试过程做个记录。
这款芯片之前在别的客户项目上调试过,但是这个客户的板子上存在如下问题:配置好设备树和驱动后,i2c读取lt8912b的寄存器0x9c-9f一直是ffff。咨询龙讯的FAE,原因就是没有识别到正确的MIPI信号。

根据LT8912B的调试文档,如果HDMI 或者LVDS 没有图像输出,则首先应该check是否正确的接收到MIPI 信号,并稳定的恢复了时钟信号。
1.确认是否接收了正确的MIPI信号,通过读Video check 寄存器。
2.确认是否稳定的恢复了时钟信号,通过读Pixel Clock 寄存器。

分析过程:
(1) 开始怀疑MIPI信号问题,测试MIPI clk是正常的:
下面是HS mode 和LP mode的时钟波形:

频率有219Mhz,这个和使用的屏的参数有关。

bootable\bootloader\lk\dev\gcdb\display\include\panel_lt8912b_lvds480p.h中
static struct lane_configuration lt8912b_lvds480p_lane_config = {
4, 0, 1, 1, 1, 1, 1 //比mipi接口的lcd多了一个1
};
最后一个参数的定义:uint8_t force_clk_lane_hs; 是要来配置MIPI CLK为HS模式的。
默认的mipi屏不需要配置这个参数,比如:
static struct lane_configuration nt35521_720p_video_lane_config = {
4, 0, 1, 1, 1, 1
};
LT8912B 要求MIPI Clock Lane 是连续的,不要进入LP mode。

(2) 排除器件的影响,更换lt8912b后问题还是存在。
(3) 检查硬件,发现客户埋了个坑:把mipi的lane0正负接反了。
正常的寄存器数据如下:

[ 13.005051] <<-lt8912b->> [135]0x48 0xc1 = c1
[ 13.009326] <<-lt8912b->> [139]0x49 0xc1 = 0
[ 13.013383] <<-lt8912b->> [897]Enter read_para
[ 13.018072] <<-lt8912b->> [902][0x48] [09c] = 0x36
[ 13.031915] <<-lt8912b->> [902][0x48] [09d] = 0x63
[ 13.036251] <<-lt8912b->> [902][0x48] [09e] = 0xd
[ 13.040945] <<-lt8912b->> [902][0x48] [09f] = 0x2
[ 13.054823] <<-lt8912b->> [908][0x49] [0c] = 0xd3
[ 13.058967] <<-lt8912b->> [908][0x49] [0d] = 0x92
[ 13.080403] <<-lt8912b->> [908][0x49] [0e] = 0x29
[ 13.084488] <<-lt8912b->> [908][0x49] [0f] = 0x0
[ 13.091227] <<-lt8912b->> [912][0x49][0x13] mipi lane = 0x0
[ 13.110251] <<-lt8912b->> [914][0x49][0x15] lane swap = 0x20

识别到正确的mipi信号后,画面基本就出来了。剩下就是参数的优化了。如果lcd画面抖动的话,需要细调LCD参数。参考如下:

#ifdef MIPI_WXGA //1366x768
//H_act  V_act  H_total V_total H_BP    H_sync  V_sync  V_BP
//{1366,768,    1500,   800,    64, 56, 3,  28};
// 1366x768 VESA Timing
static int mipi_dig_set_res(struct lt8912_data *data)
{int rc = 0;lt_debug("Enter mipi_dig_set_res MIPI_1366*768");data->lt8912_client->addr = 0x49;rc = lt8912_i2c_write_byte(data, 0x18, 0x38); // hsync width 56if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x19, 0x04); // vsync width 4if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x1c, 0x56); // Panel width LSBif (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x1d, 0x05); // Panel width MSB-1366if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x2f, 0x0c); // FIFO Buff Length 12 --?if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x34, 0xDC); // H-TOTAL LSBif (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x35, 0x05); // H-TOTAL MSB 1500if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x36, 0x20); // V-TOTAL LSBif (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x37, 0x03); // V-TOTAL MSB 800if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x38, 0x1C); // VBP LSB 28if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x39, 0x00); // VBP MSBif (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x3a, 0x00); // VFP LSB 0if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x3b, 0x00); // VFP MSBif (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x3c, 0x40); // HBP LSB 64if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x3d, 0x00); // HBP MSBif (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x3e, 0x0C); // HFP LSB 12if (rc)return rc;rc = lt8912_i2c_write_byte(data, 0x3f, 0x00); // HFP MSBif (rc)return rc;lt_debug("End   mipi_dig_set_res MIPI_1366*768");return 0;
}
#endif

可以使用i2c工具直接去修改寄存器来实时修改,观察参数的效果。

一款mipi转lvds的lcd调试(lt8912b)相关推荐

  1. LVDS,LCD调试总结(持续更新)

    1.LVDS接口分类与数据格式 单路6it LVDS 这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口.此,也称18位或18b ...

  2. android lcd调试 高通平台lcd调试深入分析总结(mipi和rgb接口)

    各位网友:最近发现我这篇文章转载的到处都是,有的则以原创存在,转载时请注明出处,还有文中错误的地方请指正!谢谢合作. 一:点亮lcd in kernel 其实点亮lcd很简单必须保证以后几个步骤正确: ...

  3. 联芯 1860平台 icn6211 mipi to RGB 转换芯片 调试 和 st7789 LCD调试spi 9bit 模式

    关键字:联芯科技,LC1860,LC186x,Chipone Technology,icn6211,mipi bridge,mipi to RGB,mipi转换芯片,RGB666,st7789,st7 ...

  4. Android MIPI转LVDS显示屏调试--- bootloader阶段显示(4)

    <80_NU323_3_Multimedia_Driver_Development_and_Bringup_Guide___Display.pdf>提到Once Kernel bringu ...

  5. Mipi Lcd调试

    Mipi Lcd调试 1 DSI主频配置 2 DSI通道数量配置 3 DSI 时钟和数据时序配置 4 DSI极性和HFP,HBP,HSYN,VFP,VBP,VSYN 5 MIPI命令 短帧结构 • 帧 ...

  6. 第4季2:并口、MIPI、LVDS的简介

    以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除. 一.并口的简介 1.并口的含义 并口的含义,可以从AR0130或OV9712的原理图中形象地理解. 如下图所示,AR0130采用12bi ...

  7. ICN6211-6202MIPI转RGB MIPI转LVDS

    集创北方,ICN6211-ICN6202 MIPI转RGB,MIPI转LVDS,芯片在MTK,高通,全志,RK方案商已经调试运用量产 特点 • 支持1-4路灵活配置的MIPI DSI信号输入 • MI ...

  8. 海思3518E开发笔记4.2——sensor数据交互接口(MIPI、LVDS、DVP并口),以AR0130和OV9712为例

    目录 前言 DVP(并口) LVDS MIPI(MIPI-CSI2) 总结 前言 摄像头是一个独立的芯片,和主控芯片是弧线独立的,两者通过接口进行交互,交互的信息有控制信号和数据信号 控制信号常用I2 ...

  9. 如何去实现GM8775 MIPI转LVDS屛的设计

    GM8775 MIPI转LVDS 屏:LVDS 1920x1200 分辨率1.先看屏规格书,计算后将屏分辨率及前后肩填入PC端工具进行转换 根据屏规格书把屏参写入工具生成一段初始化参数注意检查:1.硬 ...

最新文章

  1. Car-eye-http-flv-module 实现nginx-rtmp-mudule HTTP方式的FLV直播功能
  2. FootSwitch脚踏开关:三位USB静音脚踏板脚踏开关脚踏键盘鼠标
  3. Android RecycleView 去掉默认动画
  4. input标签加disabled属性后无法获得其value值
  5. 【thymeleaf】转义符:使用转义符拼接输出单引号
  6. EF Core 实现读写分离的最佳方案
  7. linux path环境变量起什么作用,shell基础(5)PATH环境变量的作用和使用方法
  8. TortoiseSVN2IDE.pas源代码
  9. redis java 缓存服务器_java中对Redis的缓存进行操作
  10. 2020 年,开启现代库的基建学习 —— 从项目演进看前端工程化发展
  11. oc UIAlertController封装
  12. Windows版本Apache+php的Xhprof应用__[2]
  13. POJ_2828 Buy Ticket(线段树)
  14. ember.js 101 入门教程 第一课
  15. 深入浅出MFC笔记(5)
  16. Windows 硬盘分区整数大小计算
  17. 微信个人赞赏码怎么用?微信赞赏码使用教程详解
  18. [游泳] 全浸式游泳呼吸法
  19. AutoCAD系统变量大全
  20. 优化店铺标题的好处在哪?如何写标题,什么样的标题能带来流量?

热门文章

  1. 十万行业质变正当时:华为云解出了一道产业AI公式
  2. 一个hin秀的小学三年级奥数题 [hin秀]
  3. 高性能本地缓存Ristretto(一)——存储策略
  4. 仙剑java单机游戏_仙剑游戏源码(含文档)
  5. 浅谈LOG日志的写法
  6. 苹果沙盒服务器验证,我收到21004的状态值回复来自苹果的沙盒测试服务器自动再生订阅的IOS?(I'm gett...
  7. Janino框架初识与使用教程
  8. 计算机网络基础--网络体系结构
  9. 研发程序员求职简历表-Word简历可编辑下载
  10. WIN10 连接 BOSE QC35 蓝牙耳机时断时续问题