Mstar的Monitor方案笔记(七)——EDID基本数据结构
EDID基本数据结构
- 1. 介绍几个组织
- 1.1 ANSI
- 1.2 VESA
- 1.3 CEA
- 2. EDID简介
- 2.1 什么是EDID
- 2.2 什么是E-EDID作用
- 2.3 EDID作用
- 2.4 什么是DDC
- 3. EDID基本数据结构(Version 1.3)
- 3.1 Header(头部):8 bytes
- 3.2 Vendor/Product identification(厂商/产品标识):10 bytes
- 3.3 EDID Structure Version/Revision(EDID结构版本/修正):2 bytes
- 3.4 Basic Display Parameters/Features(基本显示参数/特性):5 bytes
- 3.5 Color Characteristics(颜色特征):10 bytes
- 3.6 Established Timing(固定时序):3 bytes
- 3.7 Standard Timing Identification(标准时序定义):16 bytes
- 3.8 Descriptors (描述符):72 bytes
- 3.9 Extenslon Flag (扩展标志):1 byte
- 3.10 Checksum (校验和):1 byte
1. 介绍几个组织
1.1 ANSI
美国国家标准协会 (ANSI) 是一个私营的非营利组织,负责管理和协调美国自愿性标准和合格评定系统。该研究所成立于 1918 年,与行业和政府的利益相关者密切合作,为国家和全球优先事项确定和开发基于标准和一致性的解决方案。
标准和技术法规共同影响全球贸易的 93%。全球相关标准和确保其有效使用的一致性措施有助于提高效率、开放市场、增强消费者信心并降低成本。ANSI 是美国的领导者,在为全球各个行业的企业和消费者培养这种潜力方面处于领先地位。
1.2 VESA
视频电子标准协会 (VESA) 是由代表来自世界各地的、享有投票权利的285多家成员公司的董事会领导的非盈利国际组织。
VESA致力于开发、制订和促进个人计算机(PC)、工作站以及消费类电子产品的视频接口标准,为显示及显示接口业界提供及时、开放的标准,保证其通用性并鼓励创新和市场发展。
1.3 CEA
消费电子协会 (CEA) 联合了消费技术行业的 2000+家公司。会员可利用宝贵且创新的会员专属资源:组织大型的展会、无与伦比的市场研究、与商业倡导者和领导者的交流机会、制定最新的教育计划和技术培训、广泛的促销计划,以此促进电子行业的发展,推进行业标准的制定。
2. EDID简介
2.1 什么是EDID
EDID:Extended Display Identification Data(扩展显示标识数据)
它是由VESA创造出来的一种数据结构。(128字节数据)
这种数据结构包含了显示器设备自身的基本信息、基本特性和基本功能。
目前主流使用的EDID是1.3版本
其中EDID 2.0是第二代的EDID,主要是用来取代第一代的EDID。
它是一个可变长度的新结构,最高可达256字节,因为不能兼容第一代的EDID,使用频率不高。
2.2 什么是E-EDID作用
E-EDID:Enhanced-EDID
E-EDID是基于当前EDID 1.3的版本,并在其基础上进行数据扩展。
每个扩展单元是128字节。
如果不扩展就同等于EDID 1.3
如果扩展1个单元,就达到256字节数据 (128字节基本数据 + 128扩展数据)
扩展2个单元就,就达到384字节数据 (128字节基本数据 + 256扩展数据)
关于扩展数据部分的介绍,在下一篇《EDID扩展数据结构》再来聊
2.3 EDID作用
前面介绍了EDID中包含了显示设备自身的基本信息,而信息就是要让别人了解你的。
因此EDID的作用就是告诉主机或其他的图像输出设备,该给显示器什么分辨率,什么时序,显示器支持的功能有哪些,如何才能显示最佳的效果等等。
现在的显示器常见接口有DVI、VGA、HDMI、DP等,由于每种接口的特性和带宽不同,不同接口的EDID也不尽相同。
因此软件需要给对应接口配置不同EDID,使用哪个接口,PC读到的就是哪个接口的EDID。
EDID一般在烧录程序时直接写入EEPROM 或CPU的RAM里,
主机启动时,通过DDC(下面介绍什么是DDC)读取显示器EDID数据,如果有EDID的话,主机将EDID数据传给显卡,主机根据EDID输出最匹配当前显示器的显示格式。
2.4 什么是DDC
DDC全称:Display Data Channel (显示数据通道)
它是由VESA制定的一条主机和显示器之间通信的数据通道。
有了这条通道,显示器就可以将EDID传输给主机
既然说到是通道,那这条通道到底在哪里?又是怎么样传输的呢?
DDC通道就存在于主机和显示器之间的连接线。
DDC使用I2C总线协议进行通讯。
I2C总线中的3条线:
SDA<—>数据、SCL<—>时钟、+5V<—>供电
DDC规范定义了一个+5V的电源连接,以提供电源给显示器的EDID电路,这样就算不打开显示器的电源也可以进行通讯。
DDC的通讯方式有多种,目前主流使用的是DDC2Bi传输。
3. EDID基本数据结构(Version 1.3)
Base Block的128 Byte,如下表所示。
3.1 Header(头部):8 bytes
这8个字节是EDID开始的标识,数据固定就是这样。
3.2 Vendor/Product identification(厂商/产品标识):10 bytes
(1)ID Manufacturer name(制造商名称):2 bytes
在这2 byte的数据格式下,厂商名称只能有3个字母, Character 1~3.
按Compressed ASCII格式转换(“00001”=“A”, “00010”=“B”…“11010”=“Z”)
例如:当前填入3个字母为 “OOO”,得到:“01111 + 01111 + 01111”
→"00111101 11101111"(最高位补0)→"3DEFh"→"3Dh"+“EFh”
(2)ID Product code(产品代码):2 bytes
有需求的,自行修改产品代码
例如:当前填入0x1234,
EDID中的 0x0A存储0x34,0x0B存储0x12
(3)ID Serial number (产品序号):4 bytes
有需求的,自行修改产品序号
例如:当前填入“12345678”
EDID中的 0x0C存储0x78,0x0D存储0x56,0x0E存储0x34,0x0F存储0x12
(4)Week of Manufacture (制造周):1byte
有需求的,自行修改机器制造时候的周(一年52周)
例如:第16周→“10h”
(5)Year of manufacture (制造年份):1byte
有需求的,自行修改机器制造时候的年份
该字节根据公式:Value = (Year of manufacture - 1990)
例如:年份写2019年,则该字节应Value = 2019-1990 = 31 →“1Dh”
3.3 EDID Structure Version/Revision(EDID结构版本/修正):2 bytes
当前为1.3版本:版本号Version = 1 →“01h”,修正号Revision = 3 →“03h”
3.4 Basic Display Parameters/Features(基本显示参数/特性):5 bytes
(1)Video input Definition(视频输入定义):1 byte
该字节定义输入信号为模拟信号还是数字信号
模拟信号中还有信号电平、分离、复合信号、是否支持sync on green功能等Video信号参数。
例如:当前byte为0x80, 转为二进制 --> 1000 000对应表格中bit 7-0为数字信号配置
这部分参数需要参考规格书。
(2)Max. Horizontal Image Size:1 byte
(3)Max. Vertical Image Size:1 byte
这2字节定义行、场最大size,单位为cm;
这2个参数查看规格书
例如:最大行size 530mm → “35h”,最大场size 290mm →“1Dh”
(4)Display Transfer Characteristic(显示传输特性):1 byte
该字节根据公式”Value = (gamma x100)-100”。
例如:gamma为2.2,根据公式计算Value = (2.2×100) – 100 = 120 → "78h”
(5)Feature Support (支持特性):1 byte
该字节定义显示器是否支持DPMS、Standby、Suspend、sRGB、GTF等功能。
例如:设置当前字节为0xEA 转为二进制 --> 1110 1010
3.5 Color Characteristics(颜色特征):10 bytes
这10个字节提供R,G,B色度坐标及白点坐标值。
这部分参数一般用不到,随便参照一组参数来填即可
3.6 Established Timing(固定时序):3 bytes
这3个bytes提供一些基本固定的VESA, Apple, Mac, IBM VGA等常用的Timing,可根据显示器的特性在提供VESA EDID Spec Timing list中选择所支持的Timing.
一般参考下图配置即可:
3.7 Standard Timing Identification(标准时序定义):16 bytes
这16个bytes提供8个额外的支持VESA mode和GTF Mode的Timing
每个标识由一个独特的2字节编码组成,该编码来自模式格式和刷新率,
这些都是不在Established Timing中的
一个Timing占2个 byte,不使用的可以将对应2个byte填充为 [01h, 01h]
3.8 Descriptors (描述符):72 bytes
Descriptors部分总共72 bytes,被分为4个部分,每部分有18 bytes,里面需要包含显示器的最佳分辨率、频率范围、显示器名称等信息
使用详细时序部分应满足以下要求
①:这4部分都应使用对应的格式(下面会介绍
)填充有效的数据,不允许使用数据填充模式。
②:时序数据必须支持最少一种显示模式。
③:描述时序的符块的顺序应是放在其他类型的描述符块之前。
④:第一个描述时序的符块应该是该显示器的最佳显示模式
⑤:必须包含一个显示器频率范围限制描述符块
⑥:必须包含一个显示器名称描述符块
注:上述第4、5和6项在EDID结构版本3之前是允许的,但不是必须的,主机可能会遇到使用EDID版本0-2的显示器不符合所有这些要求。
Descriptors符块配置
参考例子A:
第一部分:首选的最佳详细时序(第一项必须显示器最佳时序)
第二部分:详细时序2(可填其他格式)
第三部分:显示器名称(必须包含)
第四部分:显示器范围限制(必须包含)
参考例子B:
第一部分:首选的最佳详细时序(第一项必须显示器最佳时序)
第二部分:显示器名称(必须包含)
第三部分:显示器范围限制(必须包含)
第四部分:显示器序列号(可填其他格式)
(1)详细时序描述符块 – 18 bytes
详细时序仅用于指示显示器供应商确定提供最佳图像的模式。
对于 LCD 显示器,这在大多数情况下是panel的“本机时序”和“本机分辨率”。
Flags byte中的 Bit[6-5-0] 参考table
Flags byte中的 Bit[2-1] 参考table
当前的详细时序描述符块:
(2)显示器描述符块 – 18 bytes
其他部分可根据需要放置显示器频率范围、显示器名称、显示器序列号.
至于如何放置对应内容,主要取决于开头前5个 byte
当前显示器描述符块中的数据类型标记是FC即显示器名字
后面13 bytes的数据类型的说明如下图:
3.9 Extenslon Flag (扩展标志):1 byte
扩展标志: 除主块128字节外,如果有扩展的EDID字节数,则该字节置1。VGA和DVI的值置0,HDMI一般都会有扩展字节。
3.10 Checksum (校验和):1 byte
校验和:用来确认EDID信息传输是否正确。
校验和的计算方式:前127个字节的和 + Checksum字节 = 0x00
也就是说这128个数的总和,是0x100的整数倍,即256的整数倍.
所以Checksum = 256 – (前127字节的和 % 256)
Mstar的Monitor方案笔记(七)——EDID基本数据结构相关推荐
- Mstar的Monitor方案笔记(八)——EDID扩展数据结构
EDID扩展数据结构 1. EDID扩展数据介绍 1.1 什么是EDID扩展数据块 2. EDID扩展数据结构说明 2.1 General Info:4 bytes 2.2 Data Blocks:b ...
- Mstar的Monitor方案笔记(六)——OSD添加新的主菜单
OSD添加新的主菜单 一.主菜单素材的准备 1.1 图标 1.2 语言 二.素材转换 2.1 图标转换 2.2 语言转换 三.主菜单的添加 3.1 了解菜单流程 3.2 配置主菜单 3.3 画主菜单 ...
- Mstar的Monitor方案笔记(三)——点LVDS接口液晶屏
点LVDS接口液晶屏 1.硬件准备 (1)准备屏.屏规格书.背光规格书和屏线 (2)准备主板 2.软件调试 (1)增加新屏驱动文件 (2)屏显示原理 (3)屏参分析 (4)点屏 1.硬件准备 (1)准 ...
- Mstar的Monitor方案OSD 菜单制作(一)————开篇
Mstar 的Monitor 方案 开篇 最近在做一个显示器的项目,全是C,界面啥的都是用C写.完全不懂.就因为我们是搞上层android 的,所以和UI 相关的就分了过来.唉,也是没办法.为了工作, ...
- Mstar的Monitor方案OSD 菜单制作(六)——绘制进度条
绘制进度条 绘制进度条和我前面讲的绘制icon 是一样的.我们可以拆分一下,把进度条的每一个进度,都看作一个自己需要单独绘制的icon.那就好处理了.我们直接来个带圆角的,难的.例如如下: 我们可以看 ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码
吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...
- websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...
Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...
- Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制
Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制 这篇文章主要介绍四个知识点,也是我那节课讲课的内容.1.PCA降维操作:2.Python中Sklearn的PCA扩展包:3.Ma ...
- ROS学习笔记七:使用rqt_console和roslaunch
ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...
最新文章
- 互联网周刊2021云办公平台TOP50,leangoo领歌敏捷研发协作入选
- vaspkit使用_VASPKIT校正气体分子自由能
- duilib 子窗口位置_duilib绝对定位与相对定位
- 考研结束了,使用SpringBoot开发一个考研管理系统
- python 配置文件对比_Python运维自动化之nginx配置文件对比操作示例
- Python-爬取2345电影并写入文件
- matlab空格会消失了,如何在Matlab中自动删除保存的尾随空格?
- java type 类型,java中的泛型类型与Type接口
- oracle之单行函数2
- elasticsearch根据某个字段来查询,以及通过时间筛选
- Mysql执行计划查看
- Linux内核project导论——网络:Netfilter概览
- 华为数通笔记-VRP
- 免费FTP解决方案之FileZilla
- 迅雷离线下载节点分布
- 【品牌DTC增长力】从AIPL模型看策略趋势
- java 累加器_Spark基础教程——累加器的使用(JAVA)
- 译书《物联网实战指南》出版 | 新成就:翻译自己的英文简介
- 8051单片机特殊寄存器功能定义
- Java:面试题:String s=new String(abc)创建了几个对象?
热门文章
- linux没有无线wifi密码忘记,新版tplink无线密码(wifi密码)忘记了怎么办?
- 中南大学计算机学院楠,中南比湖大更湖大,不对,应该说湖大没中南大学中南。...
- U3D Pun2 官方文档学习和翻译
- 【IoT】电子产品如何做防静电 ESD 设计
- 网易首支AI歌曲《醒来》发布:声音太逼真 能瞒过人类
- EMC、EMI、ESD、EMS区别 最清晰的解释送给你
- 【百度echarts】实现圆环进度条-代码示例
- 混淆矩阵 Confusion Matrix
- 使用MATLAB计算个人所得税
- 基于php工程项目管理系统——计算机毕业设计