Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏

点LVDS接口液晶屏

  • 1、硬件准备
      • (1)准备屏、屏规格书、背光规格书和屏线
      • (2)准备主板
  • 2、软件调试
      • (1)增加新屏驱动文件
      • (2)屏显示原理
      • (3)屏参分析
      • (4)点屏

1、硬件准备

(1)准备屏、屏规格书、背光规格书和屏线

1)屏:这里以M238HVN01.2为例
2)屏规格书:对应M238HVN01.2的规格书
3)背光灯规格书:对应M238HVN01.2背光灯的规格书
4)屏线:根据屏来准备,查看规格书可知,要准备双8的LVDS屏线
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第1张图片
(双路LVDS,4对差分信号线,8bit的线,简称双8)


(2)准备主板

1)确定主板的接口,一般信号接口都是固定的
2)确定主板点屏供电电压,通过查看屏规格书确定屏电压为5V
主板也要匹配同样的供电电压,超过屏电压会烧屏,小于屏电压会点不亮。
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第2张图片
3)确定主板背光功率是否适配,通过查看背光灯规格书确定其功率,
再确定主板在不超过本身最大功率的基础上,是否支持当前的背光。


2、软件调试

(1)增加新屏驱动文件

依葫芦画瓢增加新屏定义
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第3张图片
在Demo软件里面Copy一份相同分辨率的驱动文件来修改
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第4张图片

下面先来说明下屏显示原理,再来分析如何配置屏参来点屏


(2)屏显示原理

LCD显示是基于以前的模拟信号显示原理来显示的。
屏幕上每一个像素都是从上到下,从左到右,一行行组合显示出来的
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第5张图片
Hor.Sync:一个行同步信号,代表一行像素。
Ver.Sync:一个场同步信号,代表一帧画面。

有效像素:显示我们正常看到的分辨率画面,就是有效像素,也叫有效数据。
Hact:Horizontal Active(屏分辨率的宽:1920)
Vact:Vertical Active(屏分辨率的高:1080)

VW:VerticalSync Width(垂直同步信号宽度)
VBP:Vertical Back Porch(垂直后肩:从垂直同步信号开始,到开始第一行有效水平信号开始之间的无效行数)
VFP:Vertical Front Porch(垂直后肩:和最后一行有效水平信后结束,到下一帧垂直同步信号开始之间的无效行数)

VBlank:VW+ VBP+ VFP(垂直消隐)
每次画完一帧有效图像之后,都要重新回到屏幕左上角准备画下一帧有效画面的第一行,这之间有一部分无效的行数叫做垂直消隐。

HW:HorizontalSync Width(水平同步信号宽度)
HBP:Horizontal Back Porch(水平后肩:从水平同步信号开始,到一行有效像素开始之间的无效数据个数)
HFP:Horizontal Front Porch(水平前肩:从一行有效数据结束,到下一行水平同步信号开始之间的无效数据个数)

HBlank:HW+ HBP+ HFP(水平消隐)
每一行的开始都是从左到右画像素,每画完一行有效像素,画下一行前要先回到左边并做好画下一行像素的准备,这之间有一部分无效的像素就是水平消隐

Htotal = Hact + HBlank(行信号的全数据)
Vtotal = Vact + VBlank(场信号的全行数)


(3)屏参分析

#define PanelNumber 1800 //没具体作用
#define PanelName "M238HVN01_2" //定义Panel的名字


#define PanelDither 8 //抖色,一般根据屏的bit数设置
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第6张图片


#define PanelTTL 0// TTL驱动类型选择(0:不选,0xff:选)
#define PanelTCON 0// TCON驱动类型选择(0:不选,0xff:选)
#define PanelLVDS 0xff// LVDS驱动类型选择(0:不选,0xff:选) (根据规格书默认配置LVDS接口驱动类型)
#define PanelRSDS 0// RSDS驱动类型选择(0:不选,0xff:选)


#define ShortLineCheck 0 //没具体作用
#define LVDS_TIMode 0xff //代表2种数据格式
(0:JEIDA标准,0xff:VESA标准)
(规格书没有标识,一般三星屏配JEIDA标准,其他厂家屏配VESA标准 因为设置不对会花屏,所以通过尝试也能试出应该配那种模式)


#define PanelDualPort 0xff //通道设置(0:单口,0xff:双口)
(一般查看规格书可以确定是否2路LVDS,Dual channel LVDS确定是2路通道)
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第7张图片


#define PanelSwapPort 0 //AB双口切换
(如果此屏为单口,则这个值一定要置0, 双口就无所谓)


#define PanelSwapOddML 0 //高低位odd极性切换
#define PanelSwapEvenML 0 //高低位even极性切换
(这2个参数不对的话,会出现蒙了一层沙的画面)

#define PanelSwapOddRB 0 //红蓝odd极性切换
#define PanelSwapEvenRB 0 //红蓝even极性切换
(这2个参数不对的话,会出现红色和蓝色颜色相反的画面)

#define PanelSwapMLSB 0 //高低位切换


//屏的时钟和极性,仅在TTL接口信号使用
#define PanelDClkDelay 8
#define PanelInvDE 0
#define PanelInvDClk 0
#define PanelInvHSync 0
#define PanelInvVSync 0


//LVDS的正负信号(即P/N信号)交换
#define PANEL_SWAP_PN 0 (根据硬件来配置,一般配置不对点不亮屏)


//屏相关电流选择
// driving current setting:0==>4mA, 1==>6mA, 2==>8mA ,3==>12mA
#define PanelDCLKCurrent 1 // Dclk current
#define PanelDECurrent 1 // DE signal current
#define PanelOddDataCurrent 1 // Odd data current
#define PanelEvenDataCurrent 1 // Even data current


//开关机时序
#define PanelOnTiming0 10 // time between 3.3V - 12V,暂时没用
#define PanelOnTiming1 30 //time between panel & data while turn on power
#define PanelOnTiming2 250 //time between data & back light while turn on power

#define PanelOffTiming1 300 //time between back light & data while turn off power
#define PanelOffTiming2 40 //time between data & panel while turn off power
#define PanelOffTiming0 1100 // time between 12V - 3.3V,暂时没用
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第8张图片
参考规格书填写对应的Timing

Turn Off Panel的流程是:
1)先关闭背光,延时PanelOffTiming1
2)关闭Data显示,延时PanelOffTiming2
3)最后关闭Panel

Turn On Panel的流程是:
1)先开启Panel,延时PanelOnTiming1
2)开始显示Data,延时PanelOnTiming2
3)开启背光,看到画面


//配置屏的Timing
根据之前屏原理分析,结合屏规格书,可以完成下面参数的配置
如果规格书没有给出,就按照现有的配置
Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏_第9张图片
因为是双通道horizontal的参数要乘以2

#define PanelHSyncWidth 40 //行同步信号的宽
#define PanelHSyncBackPorch 40 //行同步信号的后肩
#define PanelVSyncWidth 6 //场同步信号的宽
#define PanelVSyncBackPorch 21 //场同步信号的后肩

#define PanelHStart (PanelHSyncWidth + PanelHSyncBackPorch) //行有效信号的开始
#define PanelVStart (PanelVSyncWidth + PanelVSyncBackPorch) //场有效信号的开始

#define PanelWidth 1920 //分辨率宽,(960x2=1920)
#define PanelHeight 1080 //分辨率高

#define PanelHTotal 2100 //一行总数据,(1050x2=2100)
#define PanelVTotal 1130 //一帧总行数

#define PanelMaxHTotal 3356 //HTotal最大值,(1678x2=3356)
#define PanelMinHTotal 2000 //HTotal最小值,(1000x2=2000)

#define PanelMaxVTotal 1836 //VTotal最大值
#define PanelMinVTotal 1094 //VTotal最小值

#define PanelDCLK 142 //时钟,(71.2x2=142)
#define PanelMaxDCLK 180 //时钟最大值,(90x2=180)
#define PanelMinDCLK 108 //时钟最小值,(53.7x2=108)

其中DClock = Htotal×Vtotal×VFreq×Q,Q为放大系数
因此DClock也叫像素时钟,它的个数与液晶面板像素一致,不管有效的还是无效的

#define HV_OUTPUT_TYPE HSRM_B //没作用


(4)点屏

重新编译新添加的屏驱动,烧录进去即可,一般情况应该都可以正常点亮了。

你可能感兴趣的:(Mstar的Monitor方案,嵌入式)