随着家中影音设备越来越多,遥控器也逐渐增加,每次开关都是一项大工程。
为了解决这个问题,HDMI协会开发CEC技术,能够使用单一遥控器操控多个装置,大幅简化操作方式、提升使用者体验。

您是否曾在生活中遇到以下情景?
结束一天忙碌的工作,回家想看一部电影好好放松,
此时要拿出好几个遥控器,将电视、机上盒、音响逐一开启并进行节目设定,
有时候甚至可能找不到遥控器,如此繁复的操作难免令人烦躁沮丧。
不过,如果所使用的影音设备皆支援CEC功能,情况可就大为不同,以上恼人的问题将不复存在。
让我们一起来看看CEC究竟是什么神奇的技术吧!
HDMI CEC是什么?怎么用?
CEC的全名为Consumer Electronics Control,是一项由HDMI协会所开发的技术与功能,
专为HDMI介面所设计。设计初衷是要让消费者能够使用「一个」遥控器来控制并操作所有的HDMI连接装置,简化繁复的影音设备操作(如家庭剧院等),带给使用者更方便的生活体验。
以目前常见的One Touch Play功能为例,若同时使用支援CEC功能的机上盒及电视,使用者只需要按下机上盒的开机按钮,电视就会跟着开启,并且自动切换输入端口,播放机上盒的影音内容。这听起来是不是很神奇呢?
为了实现多个影音设备的控制,需要采用一套完整且一致的传输协定规范。
目前HDMI协会发布了两个版本的CEC规范,分别为CEC 1.4与CEC 2.0。 CEC 2.0基于CEC 1.4版本进行扩充,虽然其支援的功能较多,但原则上采用相同的实体及协定架构。
HDMI CEC传输架构与原理
CEC技术实体层介绍
CEC为单线双向沟通技术,实体层上只需要单一CEC接脚就能与所有连结装置进行沟通。在HDMI连接网路上,装置间的CEC线路设计要求相连,因此HDMI产品无论是否支援CEC功能,都需要配置CEC接脚并满足特定的电气规范,确保即使有不支援CEC的装置连接于网路中,其余设备依然能正常运作。
对于不支援CEC功能的HDMI装置,除了HDMI影音数据需要正确传输外,CEC电容、电阻、电压也要符合规范,才能被认证为合格的HDMI装置。
以下是相关的CEC线路电气规范:
一、为了避免连结装置对线路造成过大电容负载,Source(发送端)产品最大电容容许值为150pF,Sink(接收端)产品则为200pF。
二、一般而言,若产品有多个HDMI输入端(如电视),输入端之间的CEC线路必须相连(举例来说:输入端1与输入端2之间的电阻值需要小于5欧姆)。若产品有多个输出端,其CEC线路间不能相连(举例来说,输出端1与输出端2之间的电阻值需要大于1M欧姆)。若产品为Repeater类型,则依其是否为CEC_Root_Device,来设计输出端及输入端之间CEC的线路相连情形。
三、在产品断电时,CEC线路上的漏电流需要小于1.8uA。且无论产品处于开机、关机或休眠(若支援)状态,在外部上拉或下拉的测试条件下,CEC线路上的电压皆需要维持在特定范围内(表1)。

表1 支援HDMI CEC的产品须遵守的电气规范(前三点) (资料来源:HDMI Spec 1.4b)
四、若产品支援CEC功能,为确保产品能够输出正确的CEC讯号,除了满足前面提及的三点规范外,还需要符合表2规范。 CEC线路在闲置状态时,线路电压须透过27k欧姆电阻上拉至2.5~3.63V间,以维持在逻辑1的状态。开始传输讯息后,需要拉低线路电压至0~0.6V以代表逻辑0。另外,CEC并非高速传输介面,上升与下降时间的要求分别小于250us及50us。

表2 支援HDMI CEC的产品须遵守的电气规范(第四点) (资料来源:HDMI Spec 1.4b)
CEC技术协定层介绍
CEC传输过程,通常需要一个Initiator以及一个或以上的Follower组成。 Initiator负责传输讯号,Follower负责接收讯号。一段完整的CEC讯号,放大来看是由许多的bit组成,bit可再细分为Start bit与Data bit。
. Start bit格式:Initiator未传输CEC讯息时,CEC线路上为逻辑1;要开始传输讯息时,会将线路拉低至逻辑0(图1)。 Start bit的格式仅在此处使用,Follower收到此格式的讯息后就会准备接收后续data bit。

图2 HDMI CEC Data bit格式 (资料来源:HDMI Spec 1.4b)
Header/Data Block格式:每10个Data bit可以组成更大的单位,称为Header/Data Block(图3)。
前面八个Information bits根据用途能用来传输Data、Logical address、Opcodes等讯息。
最后两个EOM以及ACK bit具有以下用途:

图3 Header/Data Block格式 (资料来源:HDMI Spec 1.4b)
(1)EOM(End of Message):用来告知Follower这是不是最后传输的Data block,1代表讯息已传输完成,0则代表后续仍有数据传输。
(2)ACK(Acknowledge):Initiator固定将ACK设置为1,Follower会藉由回覆ACK,来反应是否成功接收资讯。注意Follower会因为传输模式的不同(Direct/Broadcast),对ACK有不同的回覆方法。若Initiator传输讯息给单一follower,这类讯息称为Direct message,follower可将ACK设置为0,代表正确接收讯息。若Initiator传输讯息给复数个follower,这类讯息称为Broadcast message,follower可将ACK设置为0,代表没有正确接收讯息。因此当Initiator监测到ACK为0,则可能代表有一个或以上的follower没有成功接收讯息;反之若ACK为1,代表所有follower均正确接收。
综合以上内容,
一段完整的CEC指令依照顺序会由Start bit、Header Block、许多的Data Block组成。
Initiator可藉由传输不同的Data Block内容,对连接的Follower进行不同的功能控制。
