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的相关内容, 这次也为后面复习什么的做个标记, 也希望能与大家交流学习, 通过回帖留言等方式表达自己的观点或学习心得. ...
随机推荐
- Java数据结构与算法之---求两个数的最大公约数(欧几里得算法)
一个简单的小算法来获取两个数的最大公约数, public class Test { public static void main(String[] args) { long result = gcd ...
- eclipse中 将java项目转换为web项目
来自:http://jadethao.iteye.com/blog/1331308 eclipse中 将java项目转换为web项目 1.找到项目工作空间目录,打开.project文件,并修改文件, ...
- java ide 导出可运行jar包
常常会用到写个jar搬到其他地方运行的情况,这里做个笔记记录下如何利用eclipse或者idea导出jar. 导出jar包最好的方式个人认为是把依赖的包都打包进目标jar,这样一个jar可以很happ ...
- 在webapp上使用input:file, 指定capture属性调用默许相机,摄像,录音功能
## 在webapp上使用input:file, 指定capture属性调用默认相机,摄像,录音功能 在iOS6下开发webapp,使用inputz之file,很有用 <input type=& ...
- JZ2440开发板学习 1. 刚接触开发板, 安装驱动
一. jtag和串口驱动 1. 驱动下载 http://pan.baidu.com/s/1pJkAHJH 2. 驱动安装 禁用win10的驱动数字签名 http://www.100ask.org/bb ...
- 补发SQL。(实用语句!!)
设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表 ...
- SVN服务器搭建和使用(一)
SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上 ...
- C++Builder XE8_upd1破解安装成功纪要
1.先下载XE8,安装失败.2.后下载XE8U1(delphicbuilder_xe8_upd1_subscription.iso),安装,选择DelPhi.C++builder,输入系列号:3.安装 ...
- PHP获取微信 accesstoken
PHP根据appid和secret获取微信access_token,php通过curl远程获取微信access_token信息微信公众号开启开发者模式,使用appid和secret请求微信获取acce ...
- mysql 语句的索引和优化
一.基本语句优化 1.尽量避免在列上进行运算,这样会导致索引失败.例如: select * from table where DATE_FORMAT(`customer_regtime`,'%Y')& ...