
做HDMI周边产品这几年有一个问题几乎每次画原理图都要纠结音频回传。特别是客户要把机顶盒、游戏机、PC三路HDMI信号接到电视又要让电视里流媒体App的声音回传给回音壁或功放信号路径绕来绕去最后逼得不少团队在方案里塞两颗芯片——一颗HDMI切换一颗eARC接收。IT66322这颗HDMI 2.0切换开关eARC接收二合一芯片正好把这条路砍掉一半。它是一颗3进1出的HDMI 2.0切换器把三路HDMI输入选通到一路输出同时在回传方向上承担eARC接收解出电视端回传的高规格音频直接送给后端的I2S/SPDIF设备。适合硬件工程师、固件工程师以及做Soundbar、AV功放、HDMI切换器产品定义的朋友参考。这篇就围绕这颗芯片把我实际调试中积累的设计思路、寄存器配置逻辑和踩过的坑完整展开。1. 电视音频回传的痛点与IT66322的定位——为什么HDMI切换芯片必须管好eARC1.1 ARC时代留下的历史包袱ARC是HDMI 1.4就有的功能走的是HDMI口上那根14脚的单端线HEAC本质是把S/PDIF信号塞进去。S/PDIF的有效数据带宽大概只有1.5Mbps左右跑个Dolby Digital 5.1、DTS这类有损压缩还行一旦碰上Dolby TrueHD、DTS-HD MA或者以Atmos/PCM 7.1为代表的高码率音频带宽直接不够。所以这几年电视和功放厂商都在推eARC——eARC属于HDMI 2.1规范定义的新能力逻辑上它不再依赖14脚那根低速线传音频数据而是把HDMI的TMDS差分对拿出来做高速音频通道有效带宽直接拉到接近37Mbps还能带独立的配置通道DCC做握手和发现。这里有个容易混淆的点eARC虽然是HDMI 2.1规范里推出的功能但很多HDMI 2.0时代的终端设备已经在用。电视和功放产品更新迭代没那么快HDMI 2.0带宽跑4K 60Hz足够而eARC恰好能解决音频回传瓶颈所以市面上大量HDMI 2.0的Soundbar、AV功放都带eARC。IT66322就是典型的HDMI 2.0切换器加eARC接收组合它不追求HDMI 2.1的FRL超高带宽而是把HDMI 2.0时代最实用的两个功能做在一起。1.2 IT66322在这种产品里扮演的角色对做HDMI切换器的人来说eARC带来的问题是链路归属。切换器是插在信号源和电视之间的视频信号走向是source→switch→TVeARC回传音频走向是TV→switch→soundbar。也就是说切换器处在两条方向的交汇点。过去如果主控芯片只做视频切换就得在板上再加一颗eARC接收芯片两颗芯片之间还要用I2S或SPDIF飞线对接。IT66322把两件事做进一颗芯片天然消除了这个桥接环节。另一个实际好处是HDCP和EDID状态机可以统一管理。音频回传本身不涉及HDCP解密但如果两颗芯片各自维护链路状态切换输入源时容易出现音频死锁。举个例子电视在eARC模式下已经建立了音频回传通道这时候用户把HDMI输入从机顶盒切到游戏机切换芯片在忙HDCP重新认证独立的eARC芯片却还在等电视发过来的音频流——两边状态不同步结果就是切完源之后回音壁持续无声必须拔线重插才恢复。用集成方案处理这类时序问题省心不少这也是我在项目里最终选择IT66322的核心原因。2. 系统框图与硬件接线——eARC环节最容易接错的两个地方2.1 信号链路完整走一圈先把整条信号链路用文字走一遍方便后面谈硬件设计时大家脑子里有张图。正向视频链路三路HDMI输入分别对应三组TMDS差分对IT66322内部通过输入选择逻辑将其中一组选通到HDMI OUT。输出口外接电视或显示器同时输出HPD、DDC、CEC等辅助信号。回传音频链路电视的HDMI口通常标着eARC/ARC的那个口接在IT66322的HDMI OUT口上电视回传的eARC差分音频信号被芯片从输出口接收下来经过内部eARC接收器解调最终在音频输出引脚上输出I2S或SPDIF信号接到后端的DAC、音频DSP或者功放模块。控制链路板上的MCU通过I2C读写IT66322寄存器芯片同时产生中断信号通知MCU输入热插拔、eARC连接建立、链路错误等事件。在这个架构里最容易混淆的是HDMI OUT口既是视频出口也是eARC音频入口。很多第一次画这种板子的工程师会下意识地在HDMI OUT那组TMDS上串一个方向隔离器件或者以为eARC是单独一根线接进来的忘了TMDS差分对在eARC模式下本来就是双向可用的。这个理解一旦偏差整个PCB布局方向都会走错。正确做法是HDMI OUT口到电视之间的连接就是标准HDMI线不需要额外引出eARC专用线到电视芯片会自己识别和处理回传方向的数据。2.2 电源、时钟和I2C控制的最小系统IT66322的电源一般会分多路常见的是3.3V主电源加上1.8V/1.2V对应高速IO或内部PHY具体电压值与引脚定义以官方数据手册为准。三路HDMI输入加一路HDMI输出再加上eARC接收高速驱动数量不少电源纹波要求不会低。我建议每一路电源引脚都就近放0.1uF去耦电容电源入口处做一级LC或磁珠隔离别让TMDS驱动器的开关噪声跑到模拟音频部分。晶振优先按参考设计选常见频率有12MHz、24MHz、27MHz几个档位。这个不能随便换因为后续I2S输出的MCLK分频、eARC的时序基准都依赖这颗时钟。频率选错了I2S的MCLK直接不对音频听起来音调都歪。I2C部分要留好上拉电阻按芯片规格设定从机地址很多同类芯片支持地址引脚拨码可以在板上留一组上下拉电阻位后续贴片时再决定地址。这个做法特别适合产品化阶段一块板子既可以做A型号也可以做B型号只是I2C地址不同省一次改板。2.3 电视侧ARC/eARC引脚的回传接法HDMI连接器上除了TMDS数据对还有DDC15/16脚、CEC13脚、HPD19脚、5V18脚、14脚HEAC/ARC。老式的ARC模式用14脚传S/PDIF音频信号eARC模式则把高速数据放在TMDS差分对上14脚和对应的地线通常承担DCC配置通道和发现功能。也就是说电视侧那根14脚仍然要接回IT66322对应的HEAC/DCC引脚不能因为数据不走这里了就悬空否则eARC的发现和握手大概率失败。DDC上拉、HPD上拉也要按参考设计检查。eARC的Discover消息触发依赖于HPD和DDC上的电平时序有些工程师在打样时为了省事把HPD直接拉高或者不严格处理DDC时序结果eARC功能怎么调都调不出来最后才发现是HPD时序不干净。这种问题在示波器上抓波形其实一目了然但定位过程很费时间不如一开始就按规范来。3. TMDS带宽与eARC传输机制——搞清楚18Gbps和数据回流怎么复用3.1 HDMI 2.0的6Gbps×3通道HDMI 2.0有3组TMDS差分对每组从3.4Gbps提升到6Gbps3组加起来就是18Gbps。这个带宽决定了它能承载4K60 4:4:4 8bit数据率约17.82Gbps如果升到4K60 4:4:4 10bit18Gbps就不够用了需要HDMI 2.1的FRL模式那是另一套技术路线。做这一行的人都明白号称18Gbps不等于所有4K60都能跑一定要看像素格式和色深。这也是HDMI切换器设计里最常见的规格陷阱——输入端三路都是4K60但其中一路可能是4K60 4:4:4 10bit实际带宽需求已经超出HDMI 2.0能力信号眼图就会劣化。IT66322作为HDMI 2.0切换器它的TMDS通道需要在整个链路中保持信号完整性。芯片内部的输入均衡和输出驱动能力决定了它能不能在1米、2米甚至更长的线缆场景下稳定工作。实际调试时我一般会用支持HDMI 2.0的仪表去测眼图重点看6Gbps速率下的上升时间和抖动裕量不要只看能不能出画面。画面能出不代表眼图余量健康量产时线材一换、温度一高随时可能翻车。3.2 eARC如何把音频塞进TMDS差分对eARC的传输走的是TMDS差分对。基本思路是eARC启用后部分TMDS差分对被用作高速音频通道另一对用于时钟原本在14脚上的HEAC线则退居二线变成DCC配置通道负责发现对端设备、协商格式、发送启停消息。这解释了为什么支持eARC的HDMI口看似同一个口实际上信号用途是在变化的。插上设备时它是一个视频输出口等电视开启eARC回传后部分TMDS通道又被用来收音频固件里必须处理这套状态机的切换不能简单把TMDS当纯视频通道看。有工程师会担心eARC占用了TMDS差分对是不是视频信号就断了实际不是。eARC和视频传输在时间上是分时复用的eARC协议有明确的仲裁机制在音频数据包的空隙里TMDS通道仍然可以维持视频信号的传输。但这里有个工程上要注意的点eARC模式下TMDS通道的高速电流参数和工作模式会变化如果PCB布线时对TMDS差分对做了很紧的耦合设计可能在音频高码率传输时段对视频信号产生串扰。我见过一些参考设计里eARC模式下会要求TMDS输出降低预加重或调整端接如果固件没有跟随切换就会出现开eARC之后画面轻微噪点这种奇怪问题。所以驱动里一定要把视频工作模式和eARC工作模式做成两套独立配置不能一套参数打天下。3.3 固件眼里eARC状态机我习惯把eARC链路分成四个阶段来理解这对后面写初始化流程和排错很有用。第一个阶段是物理检测。HPD电平变化、DDC通道可通芯片通过这些基础信号判断电视是否支持eARC。这个阶段不需要太多协议交互但时序很关键如果HPD还没有稳定就急着读DDC大概率读到空数据。第二个阶段是发现协商。通过DCC通道交互eARC能力电视确认接收端支持哪些音频格式然后决定回传格式。这里涉及的寄存器主要是音频能力宣告相关后面第4节会详细展开。第三个阶段是建立音频流。电视开始发送eARC音频数据包接收端持续解析并把音频流输出到I2S/SPDIF接口。这个阶段最怕数据包中断一旦中断超过一定时间芯片内部状态机会判定链路异常。第四个阶段是异常恢复。音频流中断、电视重新握手、格式切换等场景下要重新协商。这个阶段最考验固件对中断事件的处理逻辑处理不好就是偶发性无声。实际调试中第二和第四阶段最容易出兼容性问题。不同电视厂商对eARC时序要求不完全一致有的电视从插入到开始协商只有几百毫秒窗口如果固件这时候还在做EDID初始化或者HDCP认证错过窗口表现就是功放没声电视设置里eARC灰色不可选。这也是为什么我强烈建议把eARC初始化放在主链路初始化完成之后第一时间处理。4. 初始化流程与寄存器配置思路——从复位到I2S出声的完整动作4.1 I2C页面结构和初始化顺序IT66322这类芯片的寄存器通常会按功能分页例如主控制页、输入状态页、EDID/HDCP页、音频页。厂商在数据手册里会给出寄存器映射表不同前缀地址代表不同功能页面。需要说明的是以下配置思路基于通用的HDMI切换芯片调试方法论具体寄存器地址和位定义请严格以IT66322官方数据手册为准。我建议的初始化顺序是首先上电后等待各路电源稳定释放复位至少等10ms再开始I2C访问。这个延时不是随便定的高速芯片内部有多个PLL和状态机需要启动还没起振就访问寄存器读回来的ID可能是乱的甚至导致芯片进入异常状态。其次读ID寄存器确认芯片在线和版本。这个动作相当于hello world验证I2C通路、电源、时钟三件事都正常。如果ID读不对先查硬件别急着调软件。然后配置中断。打开输入检测中断、HPD中断、eARC连接事件中断。这样主控不需要一直轮询状态靠中断驱动就能感知链路变化省CPU资源且响应更快。接下来初始化EDID。把外部EDID ROM或MCU里的EDID内容路由到对应输入端口。EDID路由做不好电视和信号源之间就握不上手表现是无信号或分辨率不对。然后是HDCP密钥加载并初始化HDCP引擎。加载方式取决于设计通常从外部EEPROM读取或由主机通过I2C写入。HDCP初始化失败电视会显示HDCP错误但画面偶尔还能出几秒钟才黑屏这种问题很迷惑人。接着打开输入自动检测选择初始HDMI输入源。如果产品有记忆上一次输入源的需求这时候要从NVM/EEPROM读回来并切换。再配置eARC相关寄存器。使能eARC接收打开DCC中断宣告音频能力。这个动作要放在I2S配置之前因为电视可能很快就开始尝试协商芯片先得有接收能力才能响应。最后配置I2S/SPDIF输出以及MCLK分频。这个顺序不是死的但有规律先把主链路建立起来再做eARC最后出声。如果反过来音频DSP已经在等数据了但芯片侧HDCP还没就绪容易出现开机头几秒静音客户体验很差。4.2 eARC能力宣告和ARC降级能力宣告是eARC里比较关键的一个寄存器组。芯片会通过DCC通道把自己的音频能力表发给电视电视根据这张表决定回传什么格式。这里有一个产品层面的取舍声明的格式必须和后面的音频回放能力严格对应。如果你的产品后端只是一个两声道模拟功放只声明PCM 2.0就好如果后端是支持杜比解码的Soundbar再声明Dolby Digital、Dolby Atmos这些格式。把芯片的解码能力和产品的放音能力混为一谈是我见过最多的问题后面第6节会再讲一个具体案例。老电视不支持eARC时会自动走ARC协议。这时候芯片通常需要支持ARC回退模式把14脚收到的S/PDIF信号重新路由到音频输出。设计时别把ARC通道砍掉市场上有大量只支持ARC的存量电视能不能兼容这些老设备往往决定产品能不能过客户验收。很多工程师调试时只盯着eARC忽略了ARC回退结果接到老电视上完全无声。4.3 I2S/MCLK输出配置音频输出这一块IT66322解码出来的音频一般可以配置成I2S或SPDIF具体引脚和格式取决于封装版本。I2S常见配置有标准I2S、左对齐、右对齐位深16/24/32bitBCLK、LRCK极性可配。MCLK建议按256fs或512fs设置然后由后级DSP或DAC决定要不要做SRC。这里有个反复踩到的坑44.1kHz和48kHz两个采样率家族需要的MCLK频率不同。44.1kHz用256fs时MCLK是11.2896MHz48kHz用256fs时是12.288MHz如果硬件上只有一个固定晶振后级又没做SRC就会出现44.1kHz正常但48kHz爆音或者反过来。我一般会在产品定义阶段就定死方案要么后级DSP开启SRC要么让主控按采样率动态切换MCLK分频不要指望靠寄存器配置里的万能分频解决。5. 调试工具、信号完整性与兼容性排查5.1 上电先看什么硬件打样回来我一般按三步走。第一步测电源所有电压是否正常、上电时序有没有倒灌。第二步测时钟用示波器确认晶振起振I2S的MCLK/BCLK是否存在。第三步看I2C用逻辑分析仪或者I2C工具读寄存器确认芯片能正常响应。如果这三步都过了再进HDMI链路调试不然盲目接电视出问题根本说不清是软件还是硬件。有个细节很多人忽略HDMI热插拔的5V信号时序。电视在热插拔瞬间会先给HDMI口的5V脚供电然后等HPD拉高再开始DDC通信。如果芯片或主控在5V还没稳定时就主动去读DDC往往拿到的是乱码或超时。稳定做法是检测到HPD上升沿后延时100ms左右再开始EDID读取。5.2 eARC握手失败排查表我把实际调试中遇到的常见问题整理成一张表排查时按这个顺序走能省不少时间。现象可能原因排查方向电视设置里没有eARC选项14脚HEAC/DCC未连接或悬空检查连接器14脚到芯片引脚的走线及焊接能识别eARC但无声能力宣告格式与后端解码能力不一致核对音频能力宣告寄存器偶尔有声偶尔没声eARC时隙与HDMI切换动作冲突固件切换输入源前先静音再切通道只有ARC没有eARCHPD/DDC时序不满足eARC发现窗口示波器抓HPD和DDC上电时序检查上拉I2S有数据但声音异常MCLK/采样率不匹配确认I2S MCLK分频和后级SRC配置开启eARC后画面有噪点TMDS工作参数没有随eARC模式切换检查视频驱动是否配置了独立的eARC模式参数最后一种情况最隐蔽。有些芯片在eARC启用时会调整TMDS通道的端接或驱动强度如果固件没有同步切换高速信号反射加剧就会在画面上表现为零星噪点。这种问题在纯视频模式下测试永远复现不了只有开启eARC后才出现。排查思路不是先怀疑硬件布线而是先查驱动状态是否随模式切换。5.3 打样阶段最容易忽略的问题HDMI 2.0的速率下PCB走线必须把差分阻抗控在100欧。多路HDMI输入共用一组输出绕线本来就多等长绕线容易把参考地平面切开。我见过很典型的一块板子四组差分对全部在表层绕等长结果下方地平面被绕成筛子eARC回传直接眼图塌陷。后来把走线重新规划到内层带状线、等长绕线控制在局部地岛区域问题才消失。HDMI连接器外壳地和主板地之间也别忘了按参考设计做阻容隔离通常是高压电容并联电阻兼做ESD泄放和浮地。漏掉这一步ESD测试时会很难看而且静电打进去轻则重启重则烧芯片。eARC调试时最好准备一个最低限度环境只用一台支持eARC的电视、一条质量可靠的HDMI线、一台后端I2S录音设备。任何外部变量都没了再开始抓信号。不要一上来就接回音壁加电视加机顶盒变量多了你根本没法判断是哪个环节的问题。我自己的做法是先在实验室用一台固定电视和一块独立I2S转USB的录音板做联调确认芯片能稳定出声之后再接入产品后端的DSP和DAC链路。6. 我在实际项目中踩过的坑6.1 双芯片方案被帧边界毛刺逼疯最早一个Soundbar项目HDMI切换用的是一颗老芯片eARC接收用的另一颗两者之间走SPDIF对接。结果客户用Apple TV回传Dolby Atmos每过几十秒就一声啪的毛刺。最后定位是SPDIF对帧边界和eARC数据包边界没对齐两颗芯片各自的时钟域不同步数据在桥接过程中出现了极小概率的错位。换成IT66322这类集成方案后eARC解码和切换在同一颗芯片内部完成音频数据以I2S直接对接DSP帧边界问题彻底消失。这段经历给我的教训是做这类产品尽量选集成度高的方案板上少一根SPDIF飞线就少一类诡异问题。6.2 MCLK与音频DSP的配合问题另一个项目里I2S输出接的是一颗自带PLL的DSP理论上支持动态跟随MCLK但实际把44.1kHz的曲目切到48kHz时DSP锁相环需要几百毫秒重锁期间就是静音或噪音。最后是在主控里做了采样率事件监听检测到切换后立刻给DSP发一条控制命令强制DSP跟着新频率走才解决。这个经验说明寄存器配置得再对也要和后端音频设备做好系统级联动。纯靠硬件自适应往往不够固件得把音频格式切换作为一个显式事件来处理。6.3 eARC能力宣告不是越多越好早期固件里我为了省事把能支持的音频格式全宣告了一遍包括某些产品后端并不真正支持的格式。结果某台电视真的按宣告格式回传了高码率音频后级DSP解不动直接卡死重启。排查半天才意识到是能力宣告和责任不匹配。做这种集成设计一定要把芯片能力和产品能力分开——芯片能解不代表你的音箱能放宣告表要按产品实际能力裁剪。我后来养成的习惯是每份能力宣告表都让音频工程师确认一遍后端支持什么格式表里才能写什么格式。按照IT66322这类芯片的配置思路固件初始化流程其实不算复杂真正花时间的是把eARC状态机、HDMI切换逻辑、后端音频设备三者之间的衔接处理好。如果只是单纯调通demo板半天就够要做成能稳定量产的固件建议把初始化、事件处理和格式切换都封装成独立模块分开调试再合起来做回归。先把最低限度环境调通再往系统里加各种信号源和电视能省掉大量自我折腾的时间。等HDMI分析仪抓到的几组时序数据回头发出来再单独聊聊eARC握手过程中的细节波形。