HDMI CEC协议

2023-11-20

1 前言

本文档仅作为本人记录使用,主要根据工作使用及《HDMI Specification 1.4a.pdf》进行终结得出,若有不足会后续补充。

2 CEC简介

CEC(Consumer Electronics Control)是一套完整的单总线协议,电子设备可以借着CEC信号让使用可控制HDMI接口上所连接的装置,比如单键播放(One Touth Play),系统待机(System Standby),可以实现由单一遥控器控制所有HDMI连接的装置。最多可以控制15个设备。允许HDMI设备在没有用户干扰情况下互相命令控制。CEC在HDMI座子上的14引脚,可用示波器或逻辑分析仪抓取。

2.1 CEC关键词

英文 中文 描述
Audio System 音频系统,soundbar或其他AVR设备 非电视设备,但具有解码播放音频的能力
Boradcast Message 广播消息,下文中的广播物理地址等广播消息 广播消息,发送的目的地址为F,表示所有的设备都能收到
Deck 播放或录像设备 具有媒体播放能力的一种设备,姑且认为是碟机
Initiator CEC帧头的组成代表起始方,下文中帧头有0~F的起始方 CEC帧头的起始方,等待回应
Follower 相应对应CEC消息的设备 刚接收到CEC消息并要求对其作出响应的设备
Destination CEC帧头的组成代表接收方,下文中帧头有0~F的接收方 CEC帧头的接收方,作出回应
Menu Providing Device 菜单提供设备 一种可以在电视上显示菜单的非显示设备。
Playback Device 播放设备 一种能播放媒体的设备,如DVD播放器。
Recording device 录播设备 类似与DV的录播设备
Tunner Device 调谐设备 暂时无法描述

2.2 CEC特性

  • One Touch Play:一键播放,通俗的讲电视遥控器可以一键播放碟机,反之亦然。
  • System Standby:系统待机,通俗的讲电视遥控器可以控制碟机待机,反之亦然。
  • One Touch Record:选项标记,通俗的讲电视遥控器可以控制碟机特定选项,开启设置等,反之亦然。
  • Deck Control:碟机控制,通俗的讲电视遥控器可以控制碟机暂停、播放、快进等。
  • Device Menu Control:菜单控制,通俗的讲电视遥控器可以控制碟机的菜单等。
  • Sysstem Audio Control:音频控制,,通俗的讲电视遥控器可以控制碟机的音量等 。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IqJfsrLE-1648478556687)(images/End-User Features.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5k5y1lLg-1648478556690)(images/Supporting Features.png)]

2.3 CEC时序及组成

每个位从线拉低(下降沿)开始,保持时间表示位值,之后拉高,直至后续位开始正常数据位长为2.4±0.35ms。保持低电平0.6±0.2ms为逻辑1;保持低电平1.5±0.2ms表示逻辑0。接收器在下降沿后1.05±0.2ms对线路进行采样,然后在下降沿1.9±0.15ms开始观察下一位。接收者可以将传输的传输的1bit转换为0通过在下降沿后0.35s拉低总线并保持直到表示逻辑0的电平时间。这个通常用于确认传输。每个帧都有起始位,通过拉低总3.7±0.2ms,然后允许上升,总持续时间为4.5±0.2ms。在观察总线空闲之后,任何设备都可以发送起始位。(通常5位时间,但成功后立即传输7位时间,以促进总线的公平共享,以及传输失败和重传之间的3位时间。)
对于单接收消息,应答位类似于IIC:以1位发送,接收器将其下拉至0以确认该位字节。
对于广播消息,应答位被反转:仍然作为1位发送,但被拒绝该字节的任何接收器下拉到0位。
每个CEC帧的第一个字节包含4位源和目标地址头。如果寻址目标存在,则它确认该字节。由除标题之外的任何内容组成的帧是ping,它只检查另个设备的存在。

CEC的简单消息组成为:Initiator+Destination+Opcode

(Init:5 | Dest:f |  Opcode:84) -  5f 84 10 00 05 [Report Physical Address]

如上述指令描述为:AVR播放设备(Audio System)向外广播0x84操作码,0x84的操作码向外广播自己的逻辑物理地址1000及设备类型Audio System描述为Report Physical Address:Physical Address+Device Type
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XRRXpGO-1648478556698)(images/CEC Frame Description.png)]

3 CEC消息组成

3.1 CEC帧头描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e2hAjf0m-1648478556701)(images/Header Data Block.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1YhKO0vc-1648478556713)(images/Header Data Block Details.png)]

根据上图所有的块都是10Bit,有效位为8bit。
Start(bit)+ Header Block + Data Block 1(opcode block) + Data Block 2 (operand blocks)
Block定义:Data(8 bit) + EOM(1 bit) + ACK(1 bit)
Header Block定义:Initiator(4 bit) + Destination(4 bit) + EOM(1 bit) + ACK(1 bit)

EOM表示:是否为该数据块是否最后一位。
“0”:指定后面紧接着一个或多个数据。
“1”:表示消息已经完成。
假如数据块后面的EOM为“0”,那么接收者需要忽略其后数据;假如EOM为“0”,并且后续没有接收到数据,这整个消息将被接受者忽略。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UErk4bit-1648478556715)(images/EOM.png)]

ACK表示:发送方总是置1,接受方用来确认数据及帧头。
对于单个设备:
“0”:接受方上报自己的逻辑物理地址结束以“0”ACK结束,发送方检测到接收方时以此判断发送结束。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YMCtZ6nJ-1648478556718)(images/ACK.png)]

3.2 CEC逻辑地址

CEC时序及组成一章中,我们如何知道0x5f是AVR设备发出的广播呢?结合CEC帧头描述我们根据如下进行CEC码值解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOiXtkDi-1648478556719)(images/CEC Logical Adressess.png)]

3.3 CEC码值解析

00:02:38 kernel: CEC:NET Rx (Init:5 | Dest:0 |  Opcode:90) -  50 90 00
00:02:38 kernel: CEC:    Tx (Init:5 | Dest:0 |  Opcode:90) -  50 90 00 [Report Power Status]
00:02:38 kernel: CEC:    Rx (Init:0 | Dest:f |  Opcode:87) -  0f 87 9d 19 00 [Device Vendor ID]
00:02:38 kernel: CEC:NET Tx (Init:0 | Dest:f |  Opcode:87) -  0f 87 9d 19 00
00:02:39 kernel: CEC:    Rx (Init:0 | Dest:f |  Opcode:87) -  0f 87 9d 19 00 [Device Vendor ID]
00:02:39 kernel: CEC:NET Tx (Init:0 | Dest:f |  Opcode:87) -  0f 87 9d 19 00
00:02:39 kernel: CEC:    Rx (Init:4 | Dest:5 |  Opcode:9f) -  45 9f [Get CEC Version]
00:02:39 kernel: CEC:NET Tx (Init:0 | Dest:5 |  Opcode:9f) -  05 9f

根据上述知识,以打印为例我们很容易可以看出CEC的发送方及操作码。操作码对应的参数值在《HDMI Specification 1.4a.pdf》中的Message Descriptions中有详细描述。

4 总结

CEC虽然有接触但是没有实际去跟踪CEC具体流程,目前只接触到CEC的码值对应部分。后续有补充在完善。

5 参考资料

HDMI CEC协议

C的码值对应部分。后续有补充在完善。

5 参考资料

HDMI CEC协议

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDMI CEC协议 的相关文章

  • 想写一个安全服务工程师的培训教材或者手册

    最近有个朋友搞了个公司 打算找人接安服项目 让我找点安全培训的教材 看了一大圈的书籍目录感觉都比较片面 或者专注一个方面 对于一些几乎0基础的应届生或实习生来说不太能够在几个月时间内上手项目 csdn 知乎和百度上其他类似网站的0基础培训思
  • 【Shell牛客刷题系列】SHELL2 打印文件的最后5行:优雅的解决方案~

    该系列是基于牛客Shell题库 针对具体题目进行查漏补缺 学习相应的命令 刷题链接 牛客题霸 Shell篇 该系列文章都放到专栏下 专栏链接为 专栏 Linux 欢迎关注专栏 本文知识预告 首先学习用于查看文件尾部内容的tail命令 然后给

随机推荐

  • iPhone: There is no SDK with the name or path iphoneos XXX

    for ever 2010 10 25 环境 MAC OS 10 6 4 老的iPhone 项目 使用最新的 XCode 3 2进行编译 报错 iPhone There is no SDK with the name or path iph
  • vue中组件的划分(重点)

    vue中组件的划分 重点 组件的职能划分 如果要将 Vue 组件按照职能划分 我们可以将其分为两种类型 容器组件和展示组件 容器组件和展示组件的概念来自于 Redux 文档 那么首先什么是容器组件呢 顾名思义 它是一个容器性质的组件 我们可
  • 如何在ubuntu安装powershell

    在Ubuntu上安装PowerShell可以通过以下步骤来完成 1 安装依赖软件 可以使用以下命令安装所需的依赖软件 sudo apt get install curl libunwind8 gettext apt transport ht
  • 使用postman怎么都访问不到项目,也不报错

    使用postman怎么都访问不到项目 也不报错 可能问题1 本地路径没有对应你访问的访问路径 在你的C盘下面的C Windows System32 drivers etc这个路径下找到host文件 你127 0 0 1 对应的是什么路径 你
  • 设计模式(不懂)

    面试中经常问到设计模式 我才对这个东西了解了一下 才发现他是没有开发的新大陆 是oo设计的更高级别 能把设计模式搞懂 那oo你就搞的差不多了 随便看了还是很有意思的 虽然不怎么懂 百科名片 相关书籍 设计模式 Design pattern
  • 在 spawn 的子进程中保持命令行颜色

    本文首发于我的博客 转载请注明出处 https kohpoll github io blo 最近在用子进程运行 gulpfile js 的时候发现终端上的颜色全部没有了 很是奇怪 经过一些研究 最终解决了问题 同时也总结了一些相关知识 希望
  • 锋利的jQuery(五)--jQuery对表单、表格的操作及更多应用

    5 1表单应用 一个表单有3个基本组成部分 1 表单标签 包含处理表单数据所用的服务器端程序URL以及数据提交到服务器的方法 2 表单域 包含文本框 密码框 隐藏域 多行文本框 复选框 单选框 下拉选择框和文件上传框等 3 表单按钮 包括提
  • 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验02 分支与循环程序设计(2021级)(2)

    5 爱因斯坦阶梯 题目编号 Exp02 Basic10 GJBook3 04 15 题目名称 爱因斯坦阶梯 问题描述 设有阶梯 不知其数 但知 每步跨2阶 最后剩1阶 每步跨3阶 最后剩2阶 每步跨5阶 最后剩4阶 每步跨7阶 正好到楼顶
  • python文件运行路径设置,python获取程序执行文件路径的方法(推荐)

    1 获取当前执行主脚本方法 sys argv 0 和 file 1 sys argv 一个传给python脚本的指令参数列表 sys argv 0 是脚本的名字 一般得到的是相对路径 用os path abspath sys argv 0
  • Dubbo 默认线程池fixed

    SPI fixed public interface ThreadPool 线程池 param url 线程参数 return 线程池 Adaptive Constants THREADPOOL KEY Executor getExecut
  • linux共享内存面试题,linux系统工程师面试题(附答案)

    1 查看Linux系统当前单个共享内存段的最大值 命令 ipcs m ipcs a 2 用什么命令查询指定IP地址的服务器端口 题意应该是 nmap 和nbtscan 命令来扫吧 3 crontab中用什么命令定义某个程序执行的优先级别 n
  • Gurobi:使用Java+Gurobi建立一个小数学模型

    Gurobi 使用Java Gurobi建立一个小数学模型 按变量进行建模 按列进行建模 模型的求解结果 现在基本上都流行python gurobi java cplex进行建模 但是由于java相较于python还是具有显著的速度优势 于
  • 后疫情时代企业云原生成本优化指南

    在本篇文章的末为还有福利 在等着大家哦 前言 近年来 公有云 混合云等技术在全球迅速发展 云的普及度越来越高 Docker Kubernetes DevOps Service Mesh等云原生技术蓬勃发展 但在 上云 之后 企业却往往发现
  • 《数据库系统内幕》笔记 —— LSM树与OceanBase

    本文为 数据库系统内幕 第7章的笔记与心得 因为看到OceanBase底层也使用LSM树的实现作为存储引擎 因此特地记下笔记 详见OceanBase文档 https www oceanbase com docs community obse
  • Opencv学习笔记(三)线性及非线性滤波

    大纲 1 滤波综述 2 方框滤波 3 均值滤波 4 高斯滤波 5 中值滤波 6 双边滤波 一 滤波综述 图像的滤波指的是在尽量保证图像细节特征的的情况下对图像中的噪声进行抑制 又因为图像的能量大部分集中在低频或者中频的区域 图像大部分区域是
  • Scrum

    产品列表梳理会 Backlog Refinement Meeting 会议目的 Refinement 这个词是加工 提炼的意思 在scrum里 其实就是对下阶段的需求做一个讨论 澄清 细化的一个活动 希望通过这个活动 使得团队能对后续阶段的
  • 默认构造函数、拷贝构造函数、析构函数、赋值构造函数

    最近老是有人问我拷贝构造函数和赋值构造函数 说实话 我会用 但这个概念还真是搞不太清楚 真烦 概念问题少问我 学习笔记 1 析构函数 每个类只有一个析构函数 2 构造函数 每个类可以有多个构造函数 包括 默认构造函数 拷贝构造函数 赋值构造
  • Redis 7.0 核心技术、实战应用、面试题

    Redis 7 0 核心技术与实战应用 Redis 入门概述 01 Redis 是什么 Redis REmote Dictionary Server 远程字典服务器 官网介绍 https redis io docs about 官网定义 R
  • RabbitMQ消息丢失的场景,如何保证消息不丢失?(详细讲解,一文看懂)

    目录 一 RabbitMQ消息丢失的三种情况 二 RabbitMQ消息丢失解决方案 1 针对生产者 方案1 开启RabbitMQ事务 方案2 使用confirm机制 2 针对RabbitMQ 1 消息持久化 2 设置集群镜像模式 3 消息补
  • HDMI CEC协议

    1 前言 本文档仅作为本人记录使用 主要根据工作使用及 HDMI Specification 1 4a pdf 进行终结得出 若有不足会后续补充 2 CEC简介 CEC Consumer Electronics Control 是一套完整的