尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

HDMI 2.0切换芯片IT66322集成eARC接收器的设计与调试实践

HDMI 2.0切换芯片IT66322集成eARC接收器的设计与调试实践 做HDMI矩阵、切换器或者音视频分离器这些年联阳这颗IT66322一直是我项目里的常客。3进1出、HDMI 2.0、支持4K60Hz这些都是基本盘真正让人省心的是它把eARC接收器直接集成进了切换芯片。以前要做“电视声音回传到音响系统”这个功能往往要多挂一颗独立的eARC处理芯片成本和PCB面积都压不下来现在IT66322一颗就搞定了。这篇内容我会结合自己实际画板、调固件的经历把HDMI 2.0切换开关与eARC接收的集成设计从头到尾拆一遍适合正在选型HDMI切换芯片、或者调试eARC回传遇到坑的硬件和嵌入式工程师参考。1. IT66322是什么3进1出之外的eARC价值1.1 从一颗普通HDMI切换IC说起先明确这颗芯片的定位。IT66322本质上是一颗HDMI 2.0的3进1出切换开关三路HDMI输入、一路HDMI输出带宽18Gbps能跑4K60Hz RGB 4:4:4 8bit也能跑4K60Hz 4:2:0 10bit/12bit HDR。放在典型家庭影院场景里就是电视背后只有一路HDMI ARC/eARC接口但机顶盒、游戏机、电脑主机有三路HDMI信号要接中间加一个支持eARC的切换器三路视频统一进电视同时电视内置App的声音还能通过eARC回传到外接功放。这类芯片并不少见常见方案里需要额外搭配一颗HDCP 2.2的Key存储芯片、一颗音频提取芯片、一颗MCU专门处理CEC/eARC控制。而IT66322把大部分工作收拢了它内置HDCP 2.2/1.4处理引擎、支持CEC、带eARC接收器硬件设计上能少挂两三颗外围芯片。对我这种喜欢压缩BOM的工程师来说这一颗芯片带来的板级收益非常直观。1.2 为什么要在切换器里加eARC接收器HDMI ARCAudio Return Channel很早就有了但带宽只有1Mbps左右最多回传Dolby Digital 5.1这类压缩格式。eARC则把回传带宽提到了约37Mbps支持Dolby TrueHD、DTS-HD Master Audio这些无损格式还能跑Dolby Atmos元数据。如果一套家庭影院系统没有eARC电视内置流媒体App播放的Dolby Atmos信号根本回不到功放上体验大打折扣。问题在于传统HDMI切换器只能单向选通视频eARC是反向信号而且eARC的物理通道用的不是TMDS那几对高速线而是HDMI以太网/ARC引脚HEAC和CEC引脚。想让切换器支持eARC必须在主控芯片里专门做一条反向音频接收链路。IT66322内置的eARC接收器就是用来干这件事的电视端通过HEAC引脚把音频数据发出来芯片负责接收解调再通过I2S或者SPDIF接口送给外部DAC、功放或者DSP。1.3 一颗芯片上的关键规格盘点我习惯把选型用的关键参数列成一张表方便同事之间对齐参数项IT66322 常见规格设计时关注点HDMI输入3路每路TMDS差分对都要有独立ESD保护HDMI输出1路输出端要做HDCP认证不能简单并联视频带宽18Gbps对应HDMI 2.0PCB走线要按6Gbps/lane设计HDCP2.3/2.2/1.4需要外挂EEPROM存储KeyeARC集成接收器回传音频经I2S/SPDIF输出CEC/DDC内置需要MCU配合做消息转发封装QFN类散热焊盘和底部接地要处理好这些参数里有两个容易被低估一是HDCP 2.2的Key存储必须用OTP或者EEPROM而且Key文件跟芯片是一一对应的采购时要注意批次管理二是eARC接收器的音频输出接口到底是I2S还是SPDIF取决于后续接什么设备原理图阶段就要定下来别等固件调完才想起来改电平。2. 核心链路设计切换开关与eARC接收如何协同工作2.1 视频信号链路三路输入的切换和HDCP处理视频链路的标准路径是三路TMDS信号进入IT66322芯片通过I2C命令选通其中一路然后把经过重新驱动的TMDS信号送到HDMI输出。这里有个关键点IT66322不是简单地把输入信号旁路到输出而是在内部做了信号整形所以对输入线的长度、链路损耗有一定容忍度。实际项目中我可以把输入端PCB走线放到6英寸长输出端再走4英寸仍然可以稳定过4K60Hz信号完整性测试。但也不建议无限拉长输入侧超过8英寸时预加重和均衡都不够补偿画板时最好就近布局。HDCP处理是另一个重点。三路输入分别来自不同的播放源每路都有独立的HDCP密钥体系和认证状态。切换输入时芯片要重新和新的源端完成HDCP握手同时还要和下游电视重新认证这个流程有一定耗时。实际表现是切换后画面会黑屏一到三秒这是HDCP重新认证的固有延迟用户能感知但无法完全消除。设计上可以通过提前“热备份”来优化让IT66322在空闲时提前和某一路源端完成弱认证把认证时间摊到切换前。具体做不做要看固件支持情况IT66322的部分寄存器可以配置认证预启动值得花时间研究。2.2 eARC接收链路从HEAC引脚到音频输出eARC信号的物理通道不是TMDS而是HDMI连接器上的第14脚HEAC/eARC配合第17脚ECBUS/GND形成回流同时用CEC通道第13脚做设备发现和eARC探测。IT66322内部把这三组引脚都引到自己的eARC接收模块。工作流程大概是电视端在CEC上发送eARC探测信号IT66322作为eARC接收器应答双方完成能力协商后电视开始通过HEAC线对发送音频数据。这个数据是带前导码的封包格式不是普通S/PDIF电平所以不能用简单的同轴接收芯片去解必须由IT66322内部协议引擎解析再还原成I2S/TDM或者SPDIF信号。我在项目里走的是I2S到一颗AKM的DAC再接模拟功放整条链路实测下来能稳定传输Dolby TrueHD无损音频。所以原理图阶段要特别确认IT66322的HEAC相关引脚必须和HDMI座的14脚直接连通中间不要放电容串扰滤波器CEC引脚也要连到芯片的CEC控制器不能只接TMDS。很多新手改版时只把TMDS接到芯片上ARC/eARC引脚留在HDMI座上悬空调试时eARC自然完全没反应。2.3 eARC与ARC的回退兼容设计不是所有电视都支持eARC老电视可能只支持ARC更老的甚至只支持SPDIF输出。IT66322不能只做eARC它还必须兼容ARC回退。ARC本质上是在HEAC引脚上传送S/PDIF格式的音频芯片通过检测有没有eARC探测握手决定工作模式eARC协商成功就切到eARC模式失败则检查能否进入ARC模式用S/PDIF接收器去解码。这个回退逻辑在硬件上几乎是自动的但固件层有个坑eARC探测信号是周期性的如果电视对端只在开机瞬间发一次而你的MCU恰好没及时响应就会一路掉到ARC模式。后续就算电视开始发eARC内容也不会再主动切回。正确的做法是MCU定期监控IT66322的eARC状态寄存器发现状态异常时主动重新初始化eARC接收模块而不是死等电视端重试。3. 硬件落地的关键点原理图、布局和音频接线3.1 电源与复位时序的设计约束IT66322一般需要两组电源一组3.3V给IO一组1.2V或者1.8V给核心逻辑具体要求以官方数据手册为准。我习惯用两颗小LDO分别供电并按“先核心后IO”的顺序做上电时序。这里的原理很简单如果IO先起来芯片还没准备好外部I2C器件或者HDMI源端可能在芯片未就绪时发起访问导致总线锁死。加一个简单的RC延时或者用MCU GPIO控制核心电源使能就能避开这类让人抓狂的偶发问题。复位脚RSTB建议拉一个10kΩ上拉到3.3V同时接0.1uF电容到地提供至少10ms的复位脉宽。不要用太短的RC复位有些固件初始化DDC和HDCP密钥的耗时较长复位时间不足会让芯片状态机发生错乱表现就是上电后偶尔能握手、偶尔不能非常难排查。3.2 高速TMDS差分对的布局规则三路输入加一路输出一共四组TMDS差分线每组三条数据lane加一条时钟lane。这是整个PCB上最容易出问题的地方。我踩过的坑总结下来就是三条等长、阻抗、屏蔽。等长方面同一组内的四条差分对彼此长度差控制在5mil以内四组之间不需要严格等长但每组内部必须保证时钟和数据的相位差足够小。画板时用蛇形走线补偿但要避免蛇形线间距太近产生耦合设置间距至少为线宽的3倍。阻抗上TMDS是100Ω差分阻抗必须用层叠计算工具算好线宽和间距不能凭经验拍脑袋。四层板可以参考表层8mil线宽、4mil间距带参考地层多层板可以做更细的线宽但一定要用阻抗测试条板去验证。实际项目里我见过不少因为参考层被割裂导致阻抗跳变的例子表现为不同HDMI线测试时有时绿屏有时正常。另外TMDS线下面不要铺其他高频信号不要跨分割相邻层如果走线也要垂直走减少串扰。HDMI座附近加TVS管时要注意TVS的寄生电容一般选择小于0.3pF的型号否则会破坏eARC的耦合电容容值设计eARC通道会直接废掉。3.3 eARC相关引脚设计和音频输出电路eARC接收器的核心引脚只有几个但接线要求非常明确HDMI座的14脚直接连到IT66322的eARC信号输入脚建议走线长度不超过500mil中间串联一个1kΩ电阻做ESD缓冲可以不加耦合电容因为eARC信号本身就是基于直流耦合的协议。CEC引脚要额外做上拉通常是27kΩ上拉到3.3V具体按芯片要求。音频输出如果是I2S给外部DAC或者DSP的引脚包括MCLK、BCLK、LRCLK、DATA以及可能的TDM多通道引脚。IT66322输出I2S的电平一般是3.3V如果DAC只在1.8V下工作需要加电平转换不能直接直连。SPDIF输出则要注意输出阻抗匹配通常串联33Ω电阻再做RC滤波。实际操作中我发现很多工程师会忘掉MCLK。I2S对外部器件通常需要主时钟IT66322和相关音频系统会各自提供或者共用一颗晶振。如果DAC需要MCLK而芯片没输出音频会完全无声或者爆音很难查。所以画原理图时就要约好哪颗器件提供MCLK是共用一颗24.576MHz晶振还是各自独立必须写进结构评审表。3.4 I2C从机地址与外接EEPROM配置IT66322作为从设备挂在系统的I2C总线上地址一般由引脚或者配置头决定需要在原理图上预留跳线不要把地址焊死。我通常预留一个0欧电阻位方便改地址避免多颗IT66322挂同一条总线时冲突。HDCP 2.2需要使用预留的EEPROM存储密钥和状态信息。这个EEPROM必须是I2C接口常见型号是24C02或者24C04挂在专门的HDCP密钥总线上不跟系统I2C混在一起。因为HDCP密钥文件由芯片原厂或者元器件供应商提供绑定生产批次EEPROM里面存的内容不能从别的板子随意拷过来否则HDCP认证根本走不通。生产流程里要把这个约束写清楚贴片后的首次烧录必须由一个专用测试工位完成避免产线为了省时间用整盘克隆这是很多HDCP认证失败的根源。4. 固件配合与切换时序让eARC稳定工作4.1 上电初始化和HDCP密钥加载固件按下EN和时序电源OK之后I2C读寄存器确认芯片复位完成然后执行初始化序列配置系统I2C地址、选择输入通道、加载外部EEPROM的HDCP Key到芯片内部。这个加载动作不一定发生在每一次上电但如果Key被读取失败芯片会自动降级为HDCP 1.4或者完全不做认证。所以初始化代码要在启动阶段回读Key状态寄存器如果发现异常就报错或者重新加载。我建议固件初始化之后做一轮寄存器回读把芯片ID、版本号的期望值写死在测试项里。IT66322这类芯片版本号可能有差异如果发现ID不匹配先查芯片和EEPROM批次别急着改代码。产测时让产线打印这部分信息能省很多“为什么这批板子点不亮”的排查时间。4.2 输入切换的事件处理顺序用户请求从HDMI1切到HDMI2时固件不能直接写一个寄存器就完事。一个完整的切换流程大致是将当前通道置为不可选等待当前HDCP会话关闭清掉新通道的HDCP认证状态和CEC/Rx Sense状态切换输入选择寄存器使新通道的信号进入内部均衡器等待TMDS信号锁定读取锁定状态标志发起HDCP重新认证等待认证完成恢复HDMI输出并触发CEC消息通知电视切换了信号源。这里面最容易出错的是第2步很多调试案例显示清状态不彻底会导致新通道继续沿用旧通道的HDCP加密状态电视端认为来源没变实际画面就会花屏或者黑屏。固件里要定义一个“切换状态机”任何一步超时都要能自动回退到初始状态再重试而不是卡死在等待里。4.3 eARC发现报文、CEC消息与使能确认eARC的启动依赖eARC 探测eARC Probe和eARC 发现eARC Discovery两个阶段都通过CEC消息传递。当IT66322检测到电视支持eARC时表示双方完成了eARC发现进入音频传输。固件要监听这个状态位并且把它同步给上层的CEC控制逻辑。我调这类问题最大的体会是eARC使能是个交互过程不是一方单方面决定。电视和IT66322都需要知道对方的能力。固件里至少要处理三件事定期向电视发送eARC探测请求监听电视返回的发现确认在电视切换音频输出格式时重新协商。 电视端的信源切换、音量变化都可能导致eARC状态短暂断流固件遇到“eARC丢失”事件时不要立即报异常应该先等待几个毫秒如果探测信号恢复就当作正常的音频格式切换处理。4.4 调试接口与寄存器观察技巧开发阶段预留调试串口非常必要打印日志至少包含I2C读写状态、HDCP状态、eARC状态、CEC消息原始帧。我通常会开一个寄存器快照机制任意寄存器地址都可以运行时读取然后通过串口导出。排查eARC无声时第一步读eARC协议状态寄存器确认是不是进入了ARC模式第二步读音频流格式状态确认解出来的是什么格式第三步在I2S输出引脚上挂逻辑分析仪看BCLK和LRCLK是否正常。顺序不能反否则很容易怀疑到DAC头上换了一圈芯片发现是芯片根本没进eARC模式。用示波器看HEAC引脚也能判断有没有eARC物理层信号但这个信号是封包化的普通示波器只能看到有活动不能判断协议内容所以还是寄存器优先。5. 常见问题与实拍踩坑记录5.1 4K画面间歇性黑屏现象播放4K60Hz信号时画面每隔几分钟闪黑一次有时候伴随“无信号”提示。这个问题的直觉原因很容易指向HDMI线材但实际排查下来最常见的是TMDS差分对等长没做好或者HDMI座周围ESD器件寄生电容过大。处理方式先用示波器看TMDS信号眼图如果幅度偏小检查链路损耗如果信号幅度正常但抖动大优先看时钟和数据线等长。另外确认输入信号经过IT66322内部均衡器的设置是否正确有些输入源输出信号偏弱需要软件调大一档均衡。还有一种隐蔽原因HDCP 2.2认证超时。电视在HDCP认证超时后会反复重试表现出来就是周期性黑屏。这种情况下需要读HDCP状态寄存器看失败次数和时间点是否一一对应。5.2 eARC无声但ARC正常这个案例在我的项目里出现过两次。表面看挺奇怪ARC能出声说明HEAC物理通道、功放通路都是好的但eARC就不行。最后定位到故障寄存器发现eARC的探测消息一直被电视拒绝电视端认为IT66322不是合法eARC接收器——因为CEC物理层上拉电阻阻值不对导致探测消息的电平幅度不达标。修掉CEC上拉之后eARC立刻恢复正常。排查结论是eARC对CEC信号的可靠性要求比普通CEC命令高很多探测消息一旦被丢掉整个设备就会被判为eARC不支持。所以设计阶段一定要严格按芯片和应用手册里的CEC上拉要求不要为了省电把上拉加大到100kΩ虽然能收到CEC普通命令但eARC探测就会不稳定。还有一种情况是固件里把eARC功能当成可选特性默认关闭了。IT66322虽然硬件支持但如果初始化代码没有使能eARC模块芯片只会做ARC回退。查的时候先确认功能使能寄存器再看物理层。5.3 切换输入后音频丢失现象从HDMI1的播放器切到HDMI2的游戏机视频正常了但音频一直没有电视端显示PCM格式实际没声音。分析后发现是切换时eARC还没完成重新协商电视仍然用上一次的音频会话向IT66322发数据但IT66322的新会话状态已经复位这两边状态不匹配音频被丢弃。解决办法是切换输入后主动触发一次eARC重新发现等eARC状态重新建立后再放音。固件里要加1到2秒的静默延时不要以为切换动作完成了音频通路也自动完成了。5.4 HDCP握手反复失败源端一直黑屏HDCP失败通常不外乎三种Key没加载、HDCP版本协商失败、时序不对。我遇到过一批板子批量测试时约5%的HDCP失败率但返修后重新烧录一遍Key又好了。最后确认问题出在EEPROM内容不是本批次Key文件而是产线用旧固件批量写入的公共测试Key导致接部分正版播放器时认证失败。处理方式生产流程里严格规定Key烧录必须在测试工位完成不能整盘拷贝。HDCP认证在固件调试阶段也可以用不断读寄存器的方式做统计选择一段连续的握手失败时间如果总是卡在同一个步骤优先怀疑Key内容本身。5.5 排查顺序与关键信号量测点最后把我常用的排查顺序整理出来它是一个“信号链路逐级推进”的思路先确认电源和复位量VCC是否在误差范围内RSTB释放时间是否足够读I2C总线确认芯片ID和寄存器能正常访问确认TMDS输入信号锁定HDMI源端有没有发信号芯片有没有对上游做HPD和5V检测确认HDCP认证状态和密钥加载状态确认输出链路电视端是否探测到有效信号CEC/eARC相关寄存器是否置位音频链路确认芯片音频输出接口PCM数据流是否存在再接DAC。实际调试时强烈建议准备一个带HDMI分析仪的工装能直接看TMDS和HDCP时序几百块钱的USB分析仪也能顶一半用。没有分析仪的时候用示波器看eARC物理层有没有封包活动用逻辑分析仪抓I2S照样能定位九成的问题。这个项目做完之后的体会就是IT66322这类集成度高的切换芯片真正决定产品稳定性的往往不是芯片本身而是外围电路和固件时序的配合。尤其是eARC回听功能物理层在HEAC和CEC上下足了功夫设计时别把这些引脚当普通串口对待。我最后的习惯是在原理图评审时把eARC、CEC、HDCP密钥这三条链路单独打勾检查每一条都对应到具体的寄存器状态项研发阶段就能拦住绝大部分量产才会暴露的问题。
返回列表