Panel重要参数解析
panel的从显示类型上分,主要可分为LCD和LED两种。
前者是由背光模块加上对液晶的控制来显示图像,最大的特点是背光不会闪烁,相对而言对眼睛更好。
后者是相对比较新的技术,“像素”颗粒可以各自独立地进行发光,从而省去了LCD的背光模块,可以做的更轻薄且不再需要很大的边框防止漏光,故也是超窄边框的首选。LED的动态比更好,理论上的显示效果也会强于LED,但像素颗粒中的蓝色发光材料衰减快,所以LED屏的调节难度会远高于LED,且无论怎样爱惜,从其点亮开始,使用寿命就已开始了倒计时。若长时间显示同样的图像,可能出现“烧屏”现象,将图像深深烙印在背景图像中。
从接口方式上讲:从最早的LCD接口(每bit数据一根data线,传入数据为raw data),到后来的HDMI和MIPI接口多种多样。
但无论使用何种接口,panel需要的关键参数及相应配置方式都是相通的。
先看一张图:
Kernel 源码中Documentation/fb/framebuffer.txt 目录有描述panel中framebuffer的抽象图示:
各参数的意义为:
- pixclock: pixel clock in ps (pico seconds)
- left_margin: time from sync to picture
- right_margin: time from picture to sync
- upper_margin: time from sync to picture
- lower_margin: time from picture to sync
- hsync_len: length of horizontal sync
- vsync_len: length of vertical sync
从上图linux系统进行的frame抽象,比较容易对比出porting panel过程中需要用到的及spec中比较重要的配置参数:
参数 | Spec中常用术语 | 意义 | 备注 |
refresh | Frame Rate / FPS | 每秒刷新的帧率 | 常被设为60 |
xres | x resolution | 行像素值 | |
yres | y resolution | 列像素值 | |
pixclock | pixel clock | 像素 clock | 单位可为HZ或时间 |
left_margin | HBP (Horizontal Back Porch) | 从Hsync信号enable起,到行有效像素数据输出时,中间需要插入的时钟周期数 | |
right_margin | HFP (Horizontal Front Porch ) | 从行有效数据输出完毕,到Hsync信号再次disable间,中途需要插入的时钟周期数 | |
upper_margin | VFP (Vertical Front Porch) | 从Vsync信号enable起(垂直同步信号开始)到有效的帧数据首行间的无效行数 | |
lower_margin | VBP (Vertical Back Porch) | 本帧数据输出结束到下一帧Vsync信号enable(垂直同步信号)前的无效行数 | |
hsync_len | Hsync Width | Hsync信号从非使能状态到enable状态间需要保持非使能状态电平的clock数 | 个人这么理解 |
vsync_len | Vsync Width | Vsync信号从非使能状态到enable状态间需要保持非使能状态电平的clock数 | 个人也是这么理解 |
PS:对于MIPI pane,还需要有panel的接口lane参数,其指的就是panel接的lane个数。
为了更好的理解上表的参数,引用另一篇<博客>中很清楚的图片(抱歉未找到其转载的博客源):
引用:
下面以天马的3.5寸TFT液晶屏 TM035KDH03为例进行讲解。
参数计算:
可以看到LCD时钟是28M,所以pixclock=1000000/28
行同步脉冲宽度是一个时钟周期,所以,hsync_len=1
场同步脉冲的宽度是一个行周期,所以vsync_len = 1
上图是一帧图像的显示时序图。的上图显示,up_margin = 13-1=12,, yres= 240,
整个场周期为263,所以lower_margin= 263-13-240 = 10
同时看到,列同步信号高电平有效,行同步信号也是高电平有效。
上图是一行的时序图。
可以看到,left_margin = 69, xres = 320, right_margin = 408 -320 - 70 = 18
数据在上升沿有效,输出使能是高电平有效。
这样一来,各个参数就很清楚了。
划重点:场信号的频率等于frame rate,行信号的频率等于出现的信号行数(这里的行数包含有效行数和VFP VBP及Vsync wide)
问题又来了,MIPI panel打的MIPI信号与上面所讲的这些参数是如何联系上的呢?
下面是panel ic内部的部分接口图,由图可见,mipi协议传来的mipi信息会通过内部芯片转换为内部可识别的vsnc hsync等信号。
所以我们需要将panel需要的HFP/HBP/FPS等参数,通过mipi控制器正常传输到芯片端,芯片就会处理这些参数。
从<转载来源>里可以看到:
我们先来看一个公式:Mipiclock = [ (width+hsync+hfp+hbp) x (height+vsync+vfp+vbp) ] x(bus_width) x fps/ (lane_num)/2
即mipi 屏的传输时钟频率(CLKN,CLKP)等于(屏幕分辨率宽width+hsync+hfp+hbp)x ( 屏幕分辨率高height+vsync+vfp+vbp) x(RGB显示数据宽度) x 帧率/ (lane_num)/2
简单解释下:
一帧画面需要的数据量为(单位bit):FRAME_BIT = (屏幕有效显示宽度+hsync+hfp+hbp) x ( 屏幕有效显示高度+vsync+vfp+vbp) x(RGB显示数据宽度24)
一秒钟内需要传输的数据量为(单位bps):FRAME_BIT x fps(帧率)。
那为何要除以lane_num----因为mipi通讯协议中,一个CLOCK几个lane是可以同时传输数据的。
为何又要除以2----因为根据mipi通讯协议,CLK_N、CLK_P这两根时钟线的上升沿/下降沿可以获取到数据。
因此我们可以得出如下结论:
1.在相同的时钟频率下,lane数越多,则单位时间内可以传输的数据越多。若显示帧率固定不变,则可以支持的更大的分辨率;而分辨率固定不变的情况下,则我们可以考虑支持更高的帧率显示。
2.在lane数固定的情况下,提高传输的时钟频率,则单位时间内也可以传输更多的显示数据。进而我们可以考虑是提高帧率还是提高分辨率,或两者做出平衡。
由此可大致了解相关原理。
Panel重要参数解析相关推荐
- Go 学习笔记(45)— Go 标准库之 flag(命令行参数解析)
1. 参数解析说明 import "flag" flag 包实现了命令行参数的解析.每个参数认为一条记录,根据实际进行定义,到一个 set 集合.每条都有各自的状态参数. 使用 f ...
- google gflags的参数解析,便捷实用
命令行参数解析,一直是我们后段开发人员需要经常使用的一个功能,用来从终端解析接口的输入 ,并做出对应的处理.这里为使用C++/python的开发人员推荐一个便捷的命令行解析接口集 gflags. 我们 ...
- 【Qt】通过QtCreator源码学习Qt(六):命令行参数解析实现
参考下大神的命令行参数解析是如何是实现的 //使用const char []代替宏定义字符串,我以前都是用const QString,想想好傻 const char SETTINGS_OPTION[] ...
- url参数解析 url解析 ?解析成对象
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 正文: 代码: // url参数解析 function getUrlkey(url) {var params ...
- JS 把url的参数解析成对象
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 正文: 实现思路:请看log和打印结果 // url参数解析 function getUrlkey(url) ...
- python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
- 介绍Shell脚本的参数解析工具
Argbash是一个代码生成器,它为你的脚本生成一个量身定制的解析库.与其他bash模块的通用代码不同,它生成你的脚本所需的最少代码. Argbash是一个代码生成器,它为你的脚本生成一个量身定制的解 ...
- 3gpp文件头文件解析_居于LLVM 的命令行参数解析
在写命令行程序的时候经常需要解析各种命令行参数.打印help信息等,觉得非常的麻烦.今天介绍一种超级棒的命令参数解析的方法:居于LLVM 的命令行参数解析,有了它妈妈再也不用担心我不会解析命令行参数^ ...
- Python命令行参数解析模块------argparse
首先,argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广 ...
- 编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出
写在前面 个人认为:是否能熟悉使用Shell(项目流程搭建)+R(数据统计与可视化)+Perl/Python等(胶水语言,数据格式转换,软件间衔接)三门语言是一位合格生物信息工程师的标准. 之前分享过 ...
最新文章
- Removed k rows containing missing values
- Solidworks如何创建投影曲线
- Elasticsearch1.x 基于lc-pinyin和ik分词实现 中文、拼音、同义词搜索
- Centos7修改Docker默认存储位置
- mysql数据库使用命令导入sql文件
- 由Dvbbs PHP 0day引发的争论
- 【C++基础学习】关于C++静态成员函数和变量
- 程序员书单_数据库篇
- Merkle Tree与区块链
- C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)...
- Appfuse实践(一)——配置安装 转自http://www.donews.net/skyhero/archive/2004/12/17/205662.aspx...
- 华为悦盒EC6108V9教程
- [软件推荐]一款win7 x86 x64都能用的免费内存虚拟盘的小工具——ImDisk
- 如何清除计算机的u盘使用记录,如何消除电脑上U盘使用记录
- java socket发送json_Java中使用Socket发送Java对象实例
- FusionComputer密码修改
- 十大模拟炒黄金白银的软件
- 东芝硬盘数据丢失怎么恢复
- jxl实现写入excel模板及导出(带图片)
- 神经网络模型画图工具,神经网络模型图怎么画