我是靠谱客的博主 多情睫毛膏,最近开发中收集的这篇文章主要介绍第二课:Mstar-Non-OS方案(二)——驱动LVDS显示屏 一、LCD液晶显示屏二、硬件准备 三、软件准备,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

 一、LCD液晶显示屏

(一)显示屏详解示意图

二、硬件准备 

(一)屏规格书

(二)驱动主板

(三)屏线

(二)屏规格书(DV490FHM-NV4)----(软件配置部分)

(1):开关机时序 

(3):屏的Timeing参数(配屏重要参数)

三、软件准备

(一)定义一个新枚举类型的屏参

(二)添加/导入新屏的参数(规格书)

         (1):参考结构体类型定义

(三)软件选择新的屏型号

(四)make编译/升级点屏


 一、LCD液晶显示屏

(一)显示屏详解示意图

参考博客:显示屏原理

Hor.Sync:一个行同步信号,代表一行像素。

Ver.Sync:一个场同步信号,代表一帧画面。

VW:VerticalSync Width(垂直同步信号宽度)

有效像素:正常看到的显示画面,也叫有效数据。

Hact:Horizontal Active(屏分辨率的宽:1920)

Vact:Vertical Active(屏分辨率的高:1080)

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(场信号的全行数)

二、硬件准备 

(一)屏规格书

从规格书所得:这是一款12V、1920x1080分辨率,8bit、两路LVDS、PWM调光方式的屏;

(二)驱动主板

 点屏电压12V

(三)屏线

  双8bit屏线

(二)屏规格书(DV490FHM-NV4)----(软件配置部分)

(1):开关机时序 

        结论:这部分的时序图,需要掌握看屏的开屏时序T2、T3、T7时间,以及关屏时序T8、T4时间。至于T1时刻则需要更改硬件,软件代码上是不可控的,T5时间基本是忽咧不看。        

(3):屏的Timeing参数(配屏重要参数)

   

参数说明:

HTotal一行总数据

VTotal一帧画面总行数

HBlank行信号的无效行数(无效数据)

VBlank场信号的无效列数(无效数据)

H(Display Perriod / Active)屏宽分辨率(有效数据)----LVDS确定是2路通道,则该宽分辨率x2

V(Display Perriod / Active)屏高分辨率(有效数据)

DCLK像素时钟

DCLK =Htotal×Vtotal×VFreq×Q

HTotal=屏宽分辨率(Display Perriod / Active)+行的无效数据(HBlank)

VTotal=屏高分辨率(Display Perriod / Active)+场的无效数据(VBlank)

三、软件准备

(一)定义一个新枚举类型的屏参

 路径:devicepanelincludepanel.h

 路径:devicepanelpanel.c

 (二)添加/导入新屏的参数(规格书)

 (1):参考结构体类型定义

结构体成员详解:

#define PanelName "屏的名字"              //定义Panel的名字

#define PanelDither 0                            //屏的bit数设置

#define PanelDualPort         0xff          //通道设置(0:单口,0xff:双口)
                        (一般查看规格书可以确定是否2路LVDS,Dual channel LVDS确定是2路通道)

#define PanelSwapPort 0                    //AB双口切换  

                                                (如果此屏为单口,则这个值一定要置0, 双口就无所谓)

#define PanelSwapOddML 0                //高低位odd极性切换

#define PanelSwapEvenML 0               //高低位even极性切换

                                                (参数不对,会出现蒙了一层沙的画面)

#define PanelSwapOddRB 0                 //红蓝odd极性切换

#define PanelSwapEvenRB 0                 //红蓝even极性切换

                                          (参数不对,会出现红色和蓝色颜色相反的画面)

#define LVDS_TIMode 0xff                   //代表2种数据格式(0:JEIDA标准,0xff:VESA标准)

              (规格书没有标识,一般三星屏配JEIDA标准,其他厂家屏配VESA标准 ,设置不对会花屏)

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

//屏的时钟和极性,仅在TTL接口信号使用

#define PanelDClkDelay 8

#define PanelInvDE 0

#define PanelInvDClk 0

#define PanelInvHSync 0

#define PanelInvVSync 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 

#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 

#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)

 参数说明:上述所提及屏规格书的参数一一导入①-⑤相应的位置;

(三)软件选择新的屏型号

 (四)make编译/升级点屏

最后

以上就是多情睫毛膏为你收集整理的第二课:Mstar-Non-OS方案(二)——驱动LVDS显示屏 一、LCD液晶显示屏二、硬件准备 三、软件准备的全部内容,希望文章能够帮你解决第二课:Mstar-Non-OS方案(二)——驱动LVDS显示屏 一、LCD液晶显示屏二、硬件准备 三、软件准备所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部