HDMI之CEC DDC学习笔记(可能有误)
1 HDMI的音视频通路,有待学习;
2 DDC通路,大致是个IIC接口,读取上游器件的EDID或者E-EDID数据;
EDID的前128字节数据格式如下:(可能有不同版本,格式可能有区别)
其它128字节(扩展字节的格式如下:)
上图中4~d-1(data block collection)的数据格式如下:
上图中最后一个数据块(VSDB)的数据格式如下:
根据以上表格,读取3个内容:
IIC的读取协议为(开始、器件地址写(A0)、寄存器地址(8bit)、重开始、器件地址读(A1)、读取到的数据(8bit)、结束);
2.1读取header:00 FF FF FF FF FF FF 00这8个字节;通过;
2.2读取生产商ID(地址08,09):读到4C 2D,二进制为0100 1100 0010 1101
去掉第一个0
剩下10011 00001 01101
按照(00001~11010对应A~Z)
知道读取的3个字母为:SAM(三星) 读取正确,通过;
2.3读取扩展128字节的‘h00地址(IIC寄存器地址为80),应读取到02,通过;
2.4读取寄存器地址81,读到'h03,说明revision是3
2.5读取寄存器地址84,读到'h57,这是Video Data Block的头信息:tag code为2,长度L1 = ’d23
2.6读取寄存器地址9C,读到'h23,这是Audio Data Block的头信息:tag code为1,长度L2 = ’d3
2.7读取寄存器地址A0,读到‘h83,这是Speaker Allocation Data Block的头信息:tag code为4,长度为'd3
2.8按照上面的协议,读地址'hA4,就应该是VSDB的头信息了,但却不是(原因待查)
2.9读取地址'hA7、A8、A9、AA、AB、AC分别读到6E 03 0C 00 13 00,表示tag code为3、VSDB长度为E、VSDB头标志为000C03、当前CEC的物理地址为1.3.0.0
3 CEC
有了这个CEC 物理地址,就可以验证CEC的Routing Control Feature
这个功能特性支持6种CEC包:<Active Source>、<Inactive Source>、<Request Active Source>、<Routing change>、<Routing Information>、<Set Stream Path>
只验证<Active Source>和<Routing change>,所需环境:(与FPGA相连的2个HDMI口(FPGA能收、发这2个HDMI的CEC包) <-----> 4进1出switcher <----->TV)
3.1通过遥控器控制switch改变当前通路(手动改变switch router),按照CEC协议,switch会发送<Routing change>包给连接器件,告知router change,
刚开始FPGA收到的都是cec包都是CECstart 8bitFF CECstart 8bitFF CECstart 8bitFF(循环几次),问题原因(不确定),<Routing change>是个广播包,source逻辑地址和sink逻辑地址都是F,
它期望的ACK应当是1,而不是0.FPGA给的ACK是0,switch当做收到了错误ACK而重传。当FPGA给的ACK改为1后,FPGA收到了正确的<Routing change>包。
3.2 FPGA发送<Active Source>包,实现了switch router更改,但source逻辑地址和sink逻辑地址必须填成F(原因待查)。
HDMI之CEC DDC学习笔记(可能有误)的更多相关文章
- PyQt4入门学习笔记(一)
PyQt4入门学习笔记(一) 一直没有找到什么好的pyqt4的教程,偶然在google上搜到一篇不错的入门文档,翻译过来,留以后再复习. 原始链接如下: http://zetcode.com/gui/ ...
- 【工作笔记】BAT批处理学习笔记与示例
BAT批处理学习笔记 一.批注里定义:批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD,这些命令统称批处理命令. 二.常见的批处理指令: 命令清单: 1.RE ...
- 【转帖】4412ARM开发板学习笔记(一)
本文转自迅为论坛:http://www.topeetboard.com 新手在进行开发学习前,建议先看01-迅为电子开发板入门视频.对开发板和开发环境有一定的了解后,不要盲目接线开机.以下是个人的一点 ...
- 【原】redux异步操作学习笔记
摘要: 发觉在学习react的生态链中,react+react-router+webpack+es6+fetch等等这些都基本搞懂的差不多了,可以应用到实战当中,唯独这个redux还不能,学习redu ...
- 20145330第八周《Java学习笔记》
20145330第八周<Java学习笔记> 第十五章 通用API 通用API 日志:日志对信息安全意义重大,审计.取证.入侵检验等都会用到日志信息 日志API Logger:注意无法使用构 ...
- 《CSS 设计指南》学习笔记 一
本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...
- 前端学习笔记汇总(之merge方法)
学习笔记 关于Jquery的merge方法 话不多说,先上图 使用jquery时,其智能提示如上,大概意思就是合并first和second两个数组,得到的结果是first+(second去重后的结果) ...
- HTML+CSS学习笔记(5)- 与浏览者交互,表单标签
HTML+CSS学习笔记(5)- 与浏览者交互,表单标签 1.使用表单标签,与用户交互 网站怎样与用户进行交互?答案是使用HTML表单(form).表单是可以把浏览者输入的数据传送到服务器端,这样服务 ...
- springmvc学习笔记(简介及使用)
springmvc学习笔记(简介及使用) 工作之余, 回顾了一下springmvc的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
随机推荐
- Bash:-:-通过while和shift判断脚本位置参数格式是否合法
]];then echo "请输入2个位置参数..." exit else num=$# ));do case ${num} in ) if ! echo "${1}&q ...
- 使用IO流实现一个简单的小Dome
(一) 在电脑D盘下创建一个文件为HelloWorld.txt文件,判断他是文件还是目录,在创建一个目录IOTest,之后将HelloWorld.txt移动到IOTest目录下去:之后遍历IOTest ...
- Bootstrap_面板
一.基础面板 基础面板非常简单,就是一个div容器运用了“panel”样式,产生一个具有边框的文本显示块. 由于“panel”不控制主题颜色,所以在“panel”的基础上增加一个控制颜色的主题“pan ...
- 深入理解 '0' "0" '\0' 0 之间的区别
看来基础还是很重要的,基础不扎实就难以学好c语言,就别说写出高质量的c语言代码了.今天,我就被这个问题折磨的不行了,哈哈,不过现在终于明白了‘\0’ ,‘0’, “0” 之间的区别了.困惑和快乐与你分 ...
- Ubuntu-server14.04搭建LAMP环境
转自:http://www.cnblogs.com/myzhibie/p/4330327.html 对于很多PHP初学开发者来讲,搭建一个可用于生产的LAMP环境是一件费时费力的事情,本文以 ubun ...
- jQuery EasyUI教程之datagrid应用(三)
今天继续之前的整理,上篇整理了datagrid的数据显示及其分页功能 获取数据库数据显示在datagrid中:jQuery EasyUI教程之datagrid应用(一) datagrid实现分页功能: ...
- 原生js获取鼠标坐标方法全面讲解-zmq
原生js获取鼠标坐标方法全面讲解:clientX/Y,pageX/Y,offsetX/Y,layerX/Y,screenX/Y 一.关于js鼠标事件综合各大浏览器能获取到坐标的属性总共以下五种:eve ...
- spring监听器
1,web.xml中配,因为tomcat启动web项目时先加载web.xml. 2,spring需要启动IOC容器才能为其他框架提供服务,spring是通过监听器来启动容器,初始化 这边启动它,也得告 ...
- dpkg: 处理归档 /var/cache/apt/archives/软件名 (--unpack)时出错:由于已经达到 MaxReports 限制,没有写入 apport 报告。
一.环境介绍: OS:ubuntu16.04 64bit 二.错误如下: 正准备解包 .../libqt4-script_4%3a4.8.7+dfsg-5ubuntu2_i386.deb ...正在 ...
- Javascript是单线程的深入分析
本来想总结一下的,网上却发现有人已经解释的很清楚了,特转过来. 这也解释了为什么在用自动化测试工具来运行dumrendtree时设定的超时和测试case设定的超时的关联性. 面试的时候发现99%的童鞋 ...