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基本数据结构相关推荐

  1. Mstar的Monitor方案笔记(八)——EDID扩展数据结构

    EDID扩展数据结构 1. EDID扩展数据介绍 1.1 什么是EDID扩展数据块 2. EDID扩展数据结构说明 2.1 General Info:4 bytes 2.2 Data Blocks:b ...

  2. Mstar的Monitor方案笔记(六)——OSD添加新的主菜单

    OSD添加新的主菜单 一.主菜单素材的准备 1.1 图标 1.2 语言 二.素材转换 2.1 图标转换 2.2 语言转换 三.主菜单的添加 3.1 了解菜单流程 3.2 配置主菜单 3.3 画主菜单 ...

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

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

  4. Mstar的Monitor方案OSD 菜单制作(一)————开篇

    Mstar 的Monitor 方案 开篇 最近在做一个显示器的项目,全是C,界面啥的都是用C写.完全不懂.就因为我们是搞上层android 的,所以和UI 相关的就分了过来.唉,也是没办法.为了工作, ...

  5. Mstar的Monitor方案OSD 菜单制作(六)——绘制进度条

    绘制进度条 绘制进度条和我前面讲的绘制icon 是一样的.我们可以拆分一下,把进度条的每一个进度,都看作一个自己需要单独绘制的icon.那就好处理了.我们直接来个带圆角的,难的.例如如下: 我们可以看 ...

  6. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  7. 吴恩达《机器学习》学习笔记七——逻辑回归(二分类)代码

    吴恩达<机器学习>学习笔记七--逻辑回归(二分类)代码 一.无正则项的逻辑回归 1.问题描述 2.导入模块 3.准备数据 4.假设函数 5.代价函数 6.梯度下降 7.拟合参数 8.用训练 ...

  8. websocket 获取连接id_Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证...

    Swoole学习笔记七:搭建WebSocket长连接 之 使用 USER_ID 作为身份凭证 2年前 阅读 3678 评论 0 喜欢 0 ### 0.前言 前面基本的WebSocket操作,我们基本都 ...

  9. Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制

    Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制 这篇文章主要介绍四个知识点,也是我那节课讲课的内容.1.PCA降维操作:2.Python中Sklearn的PCA扩展包:3.Ma ...

  10. ROS学习笔记七:使用rqt_console和roslaunch

    ROS学习笔记七:使用rqt_console和roslaunch 本节主要介绍在调试时使用的rqt_console和rqt_logger_level,以及一次性打开多个节点的工具roslaunch. ...

最新文章

  1. 互联网周刊2021云办公平台TOP50,leangoo领歌敏捷研发协作入选
  2. vaspkit使用_VASPKIT校正气体分子自由能
  3. duilib 子窗口位置_duilib绝对定位与相对定位
  4. 考研结束了,使用SpringBoot开发一个考研管理系统
  5. python 配置文件对比_Python运维自动化之nginx配置文件对比操作示例
  6. Python-爬取2345电影并写入文件
  7. matlab空格会消失了,如何在Matlab中自动删除保存的尾随空格?
  8. java type 类型,java中的泛型类型与Type接口
  9. oracle之单行函数2
  10. elasticsearch根据某个字段来查询,以及通过时间筛选
  11. Mysql执行计划查看
  12. Linux内核project导论——网络:Netfilter概览
  13. 华为数通笔记-VRP
  14. 免费FTP解决方案之FileZilla
  15. 迅雷离线下载节点分布
  16. 【品牌DTC增长力】从AIPL模型看策略趋势
  17. java 累加器_Spark基础教程——累加器的使用(JAVA)
  18. 译书《物联网实战指南》出版 | 新成就:翻译自己的英文简介
  19. 8051单片机特殊寄存器功能定义
  20. Java:面试题:String s=new String(abc)创建了几个对象?

热门文章

  1. linux没有无线wifi密码忘记,新版tplink无线密码(wifi密码)忘记了怎么办?
  2. 中南大学计算机学院楠,中南比湖大更湖大,不对,应该说湖大没中南大学中南。...
  3. U3D Pun2 官方文档学习和翻译
  4. 【IoT】电子产品如何做防静电 ESD 设计
  5. 网易首支AI歌曲《醒来》发布:声音太逼真 能瞒过人类
  6. EMC、EMI、ESD、EMS区别 最清晰的解释送给你
  7. 【百度echarts】实现圆环进度条-代码示例
  8. 混淆矩阵 Confusion Matrix
  9. 使用MATLAB计算个人所得税
  10. 基于php工程项目管理系统——计算机毕业设计