基于 NXP i.MX8QM Bumblebee 智能座舱 Varitronix COG-PVLSZT002-01 14.8寸屏幕调试

一.前言

Varitronix 是 BOE 旗下的公司 ,我们调试的是 Varitronix 关于车载中控屏幕部分的解决方案 ,这是一款  14.8 寸的屏幕 ,通过 Serdes 的方式和 SOC 连接 ,里面包含了屏幕部分 ,触摸部分和重力感应部分 ,我们接下来要讲的是对 Varitronix COG-PVLSZT002-01 14.8 寸 1920X1080 屏幕部分的调试


                                                                                                        图1 Varitronix 14.8 寸屏幕实物图

我们接下来看一下数据流程图 :

屏幕通过 Serdes 的方式与主板相连 ,主板串行器为 TI DS90UB947 ,屏幕解串器为 TI DS90UB948 ,主板把 LVDS 信号通过 TI DS90UB947 串行器发送给屏幕解串器 DS90UB948 ,DS90UB948 输出 LVDS 信号给屏幕进行显示


                                                                                                                  图2 信号数据流程图

二. 屏幕调试软硬件环境

2.1.  软件环境 :

使用的是 imx-yocto_L4.14.98_0.0.0 


2.2.  硬件环境 :

Bumblebee-MB_V1.0(i.MX8QM 智能座舱)

 Varitronix COG-PVLSZT002-01  , 1920 X 1080 , 14.8 寸的屏幕


                                  图3 屏幕硬件实物图

三. 实现 Serdes 数据通信

关于屏幕的上电部分和 I2C-SEL 电压选择请参考我前面的博文 《 基于 NXP i.MX8QM Bumblebee 智能座舱 HannStar HSD123KPW2 屏幕调试 》第三章节 

在以上步骤都做了之后还是没有检查到设备 ,通过测量发现我们的板和 Varitronix 接口的定义不一样 ,在对 L101 和 L102 部分进行跳线后可以检查到 DS90UB948


                               图4 FPD-LINK 接口顺序交换

通过读取 DS90UB947 寄存器 0x06 ,可以识别到解串器的地址


                                                                                           图5 DS90UB947 寄存器 0x06 使用说明


通过命令读出  i2cdump -y 7 0x0c 读出 DS90UB948 设备地址 :


                               图6  S90UB948 设备地址

四. 点亮背光

我们看一下背光电路 ,点亮背光需要控制 LED_Driver 的 BL_PWM 和 BL_EN ,对应的DS90UB948 PIN 脚为 D_GPIO2 和 D_GPIO3


                                                                                          图7  COG-PVLSZT002-01 背光电路


D_GPIO2 对应的寄存器为 :0X1E ,D_GPIO3 对应的寄存器为 :0X1F ,D_GPIO2 和 D_GPIO3 即可以映射 DS90UB947 的 PIN 脚 ,也可以直接作为输出控制 ,

由于我们硬件上 SOC 没有 GPIO PIN脚和  DS90UB947 连接 ,我们把 D_GPIO2 和 D_GPIO3 直接作为输出使用 ,同时要使能 PORT1_SEL , PORT1_SEL 对应的寄存器是 0x34


                                               图8 D_GPIO2 对应的 0x06 寄存器



                                                 图9 D_GPIO3 对应的 0x06 寄存器



                                               图10 PORT1_SEL 对应寄存器


DS90UB948 寄存器 0x34 ,0x1e ,0x1f 值修改如下 :
struct ti948_config ti948_para[] ={

{0x03, 0x78},
{0x05, 0x1e},
{0x34, 0x03}, //{0x34, 0x01},
{0x1d, 0x19},
{0x1e, 0x99}, //{0x1e, 0x39},
{0x1f, 0x09}, // {0x1f, 0x03},

五. 屏幕参数设置


我们首先了解一下这块屏的 Timing


                                                                                            图11  Varitronix 屏幕 Timing

从它的 Timing 可以了解到这是一款 1920 X 1080 的双 LVDS 信号的屏幕 ,iMX8QM Dual channel 有两种输出模式

1. Dual channel split mode


                                                              图12  Dual channel split mode

 CH0 for 1,3,5,7,... pixels and CH1 for 2,4,6,8,... pixels 

2.  Mirror dual mode


                                                                图13 Mirror dual mode

Panel1 和 Panel2 输出同样的画面 ,Panel3 和 Panel4 输出同样的画面
 
通过以上信息 ,我们可以了解到目前调试的屏幕应设置为 Dual channel split mode  ,对应的 DTS 部分设置如下 :

&ldb1 {   
           status = "okay";
           fsl,dual-channel;

           lvds-channel@0 {
                                     fsl,data-mapping = "spwg";
                                     fsl,data-width = <24>;
           。。。。。。。。。。。。。。。。。。。。。。
}

我们接下来设置屏幕的 Timing :
屏幕参数路径 : drivers/gpu/drm/panel/panel-simple.c  
static const struct display_timing hannstar_hsd123kp2_timing = {
.pixelclock = { 141000000, 141000000, 141000000}, //  (1920+48+16)X(1080+100+8)X60 = 141000000
.hactive = { 1920, 1920, 1920 },  // Horizontal Display Area =960 X 2=1920
.hfront_porch = { 48, 48, 48 },    // horizontal porch time=48+16=(992-960)x2=64
.hback_porch = { 16, 16 ,16 },
.hsync_len = { 20, 60, 100 }, // hsync_len < front_porch
.vactive = { 1080, 1080, 1080 },
.vfront_porch = { 38, 38, 38},  // vertical porch time =38+16=1134-1080=54
vback_porch = { 16, 16, 16 },
.vsync_len = { 10, 10, 10 }, //sync_len< front_porch
.flags = DISPLAY_FLAGS_DE_HIGH,};
}


六. 点亮屏幕

运行 root@imx8qmmek:/opt/viv_samples/vdk# ./tutorial1


                                                                    图14 三角形画面

运行 root@imx8qmmek:/opt/viv_samples/vdk# ./tutorial2


                                                                                   图15 长方体画面

我们点亮的 Varitronix COG-PVLSZT002-01 14.8 寸屏幕是在 《基于 NXP i.MX8QM Bumblebee 智能座舱 HannStar HSD123KPW2 屏幕调试》基础上进行调试的 ,

关于 DS90UB947 和 DS90UB948 上电 ,通信 ,初始化 及 LVDS 信号输出可以参考这个网址 :  https://www.wpgdadatong.com/blog/detail?BID=B3115

我们这边博文详细介绍了 Serdes 通信 ,背光点亮 ,屏幕参数部分设置的过程 ,相信大家通过这篇博文已经掌握了此类屏幕的调试方法


六 参考文档

【1】 DS90UB947-q1.pdf  SNLS454A –NOVEMBER 2014–REVISED MARCH 2019
【2】 DS90UB948-q1.pdf  ZHCSEN7A –OCTOBER 2014–REVISED JANUARY 2016
【3】 VL-PS-COG-PVLSZT002-01 REV.A (COG-PVLSZT002-01) JUN/2017

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论