
1. 这颗芯片为什么值得单独拿出来聊第一次拿到 IT66322 的规格书时我的反应是这不就是个 HDMI 切换开关吗但翻到 eARC 接收那一章才发现它把很多原本需要两颗芯片才能干的事塞进了一颗 QFN 里。IT66322 是一颗支持 HDMI 2.0 的 2 进 1 出或 1 进 2 出取决于配置切换开关同时集成了 eARC增强型音频回传通道接收功能并且完整支持 HDCP 2.2/1.4 内容保护协议。简单说它解决的是这样一个问题你的电视或投影只有一路 eARC 口但你有游戏机、机顶盒、蓝光机好几个源怎么让它们都能把无损音频回传给功放同时视频还能正常切换。这东西适合谁看如果你在做 Soundbar、AV 功放、电视主板、或者带音频回传的投影方案尤其是用 RK3566 这类主控做 HDMI 输入采集的板子IT66322 大概率会出现在你的 BOM 里。它不是什么高深的东西但坑不少尤其是 eARC 的 EDID 协商和 HDCP 认证时序我前后调了差不多两周才跑通。下面把我踩过的坑和最终跑通的方案完整拆一遍。2. 方案整体设计与选型思路拆解2.1 为什么是切换开关加 eARC 接收而不是两颗独立芯片传统做法是一颗 HDMI 切换开关负责视频通道切换另一颗 eARC 接收芯片比如某些带 ARC 功能的音频 DSP负责音频回传。两颗芯片意味着两套 I2C 地址、两套中断、两套电源域PCB 面积和 BOM 成本都上去了。IT66322 的思路是把 eARC 接收的差分对直接接到切换开关的 HPD/DDC 通道上音频回传走的是 HDMI 的 HEAC 差分对也就是以太网和音频回传共用那对线这样一颗芯片就能同时管视频切换和音频回传。从系统角度看这个集成的最大好处是EDID 和 HDCP 的协商可以统一管理。eARC 模式下电视会把音频 EDID 通过 DDC 通道发给源端如果切换开关和 eARC 接收是两颗芯片这个 EDID 的透传和合并逻辑会非常绕。IT66322 内部做了 EDID 的 bank 切换源端插到哪个口就加载对应口的 EDID 配置eARC 使能时再叠加音频能力块。2.2 HDMI 2.0 的带宽账要算清楚HDMI 2.0 的 TMDS 时钟最高 600MHz对应每通道 6Gbps三通道加时钟一共 18Gbps。IT66322 的切换开关通道带宽标称是 6Gbps per lane这个数字要记牢。如果你要过 4K60 4:4:4 8bit算一下3840×2160×60×24bitRGB 8bit 约 11.9Gbps加上消隐区大概 12.5Gbps三通道分摊每通道约 4.17Gbps在 6Gbps 以内没问题。但如果你要过 4K60 4:4:4 10bit那就是 3840×2160×60×30bit ≈ 14.9Gbps加消隐约 15.6Gbps每通道 5.2Gbps仍然在 6Gbps 以内但余量已经不大了。注意这里说的是 TMDS 时钟不是像素时钟。HDMI 2.0 的像素时钟最高 600MHz对应 4K60 8bit 是 594MHz刚好卡在边缘。如果你要过 4K60 10bit像素时钟还是 594MHz但 TMDS 速率上去了因为每像素的 bit 数多了。IT66322 的切换通道对 594MHz 像素时钟是支持的但走线阻抗和插入损耗要控制好。2.3 eARC 与 ARC 的本质区别很多人把 eARC 和 ARC 混着说其实差别很大。ARC音频回传通道走的是 HDMI 1.4 定义的那根 HEAC 线带宽只有约 1Mbps只能传压缩的 5.1比如 Dolby Digital。eARC 是 HDMI 2.1 引入的但 IT66322 在 HDMI 2.0 框架下实现了 eARC 接收它利用 HEAC 差分对的全带宽能传 192kHz 24bit 的无损音频包括 Dolby TrueHD 和 DTS-HD MA。IT66322 的 eARC 接收端支持的最高规格是 192kHz/24bit 8 通道也就是 192k×24×8 36.864Mbps 的音频数据率。这个数据率对 HEAC 差分对来说不算高但难点在于eARC 的发现和协商流程。eARC 需要电视和功放之间通过 DDC 通道交换 eARC 能力块然后通过 HEAC 的差分对建立音频通道。IT66322 内部有个 eARC 状态机上电后要先检测 HEAC 线上的电压确认对端是 eARC 设备还是普通 ARC 设备再决定走哪套协议。3. 核心细节解析与实操要点3.1 引脚定义与关键信号IT66322 是 QFN-64 封装引脚密度不低。几个关键引脚必须记清楚引脚类型信号名功能说明注意事项差分对TMDS_D0± ~ D2±视频数据通道100Ω 差分阻抗等长误差 ±5mil差分对TMDS_CLK±视频时钟通道与数据通道等长误差 ±5mil差分对HEAC±音频回传/以太网100Ω 差分阻抗eARC 时走音频单端HPD热插拔检测5V 容忍需要上拉单端DDC_SCL/SDAEDID 通信需要 2.2kΩ 上拉注意电平电源VDD_1V2核心电源1.2V ±5%纹波 30mV电源VDD_3V3IO 电源3.3V ±5%与 1.2V 上电时序有要求上电时序这块我踩过坑。IT66322 要求 1.2V 核心电源先上延迟至少 1ms 后 3.3V IO 再上。如果反过来芯片内部的状态机会锁死I2C 读出来全是 0xFF。我一开始用了个普通的 LDO 同时给两路供电结果十块板子有三块起不来后来改成带使能脚的 LDO 做时序控制才稳定。3.2 EDID 管理与 bank 切换IT66322 内部有 EDID RAM支持多个 bank。每个输入口可以对应一个 bankeARC 使能时再叠加音频能力块。EDID 的配置通过 I2C 写入地址是 0x9A7 位地址 0x4D。写 EDID 的时候要注意必须先拉低 HPD写完再拉高否则源端可能在 EDID 写一半的时候就来读读到脏数据。我一般用这样的流程拉低对应口的 HPD通过 I2C 写入 256 字节的 EDID 数据分页写每页 128 字节写入 eARC 音频能力块如果使能拉高 HPD等待源端读取 EDID提示EDID 的 checksum 必须正确否则源端会认为 EDID 无效直接不输出。我写了个小脚本自动算 checksum省得每次手动算。3.3 HDCP 2.2 认证的时序陷阱HDCP 2.2 的认证流程比 1.4 复杂得多涉及 AKE认证和密钥交换、LC局部性检查、SKE会话密钥交换三个阶段。IT66322 作为中继设备需要在源端和显示端之间做 HDCP 的透传或终结。这里有个关键选择是让 IT66322 做 HDCP 中继repeater还是终结receiver。如果做中继源端和显示端各自做 HDCP 认证IT66322 只负责转发加密后的数据。如果做终结IT66322 自己作为 HDCP 接收端解密后再重新加密发给显示端。两种方式各有优劣中继方式延迟低但要求切换开关的通道能透明传输 HDCP 加密数据终结方式兼容性好但增加延迟和成本。IT66322 默认是终结模式也就是它自己作为 HDCP 接收端。这意味着源端认证的是 IT66322而不是最终的电视。这个模式下HDCP 的 KSV密钥选择向量列表需要正确配置否则认证会失败。KSV 列表通过 I2C 写入最多支持 127 个设备的 KSV。我遇到过一个典型问题源端是 PS5显示端是某品牌电视IT66322 做终结。PS5 发 HDCP 2.2 认证请求IT66322 响应后PS5 开始发加密数据但电视端显示黑屏。查了半天发现是 IT66322 的 HDCP 输出没有正确重新加密原因是输出端的 HDCP 密钥没有正确加载。后来发现是 I2C 写入密钥的顺序错了必须先写 AKSV 再写密钥反过来会失败。4. 实操过程与核心环节实现4.1 硬件设计要点原理图这块差分对的走线是重中之重。TMDS 和 HEAC 的差分阻抗必须控制在 100Ω±10%差分对内等长误差 ±5mil对间等长误差 ±20mil。我一般用 4 层板差分对走在内层参考平面完整。过孔尽量少每个差分对最多两个过孔换层用。电源去耦也很关键。1.2V 核心电源每个电源脚配一个 0.1μF 加一个 1μF 电容3.3V IO 电源同理。eARC 的 HEAC 差分对附近要加共模扼流圈抑制共模噪声。我试过不加共模扼流圈eARC 音频偶尔会有咔哒声加了之后就干净了。4.2 I2C 配置流程IT66322 的 I2C 地址是 0x4D7 位写地址 0x9A读地址 0x9B。上电后首先要做的是复位和初始化。复位通过写寄存器 0x00 的 bit7 实现写 1 复位写 0 释放。复位后要等至少 10ms 再访问其他寄存器。初始化流程我整理成了一张表步骤寄存器值说明10x000x80软复位20x000x00释放复位等待 10ms30x010x01使能内部时钟40x020x03使能 TMDS 输入50x030x01选择输入口 060x100x01使能 eARC70x110x00eARC 模式设为自动80x200x02HDCP 2.2 使能90x210x01HDCP 中继模式关闭终结模式写完这些寄存器后芯片开始工作。这时候用示波器量 TMDS 时钟应该能看到 594MHz 的差分时钟如果源端输出 4K60。如果看不到先查 HPD 是否拉高再查 DDC 是否通信正常。4.3 eARC 音频通道的建立eARC 的建立分三步发现、协商、传输。发现阶段IT66322 通过 HEAC 差分对发送 eARC 发现脉冲对端电视或功放响应后双方交换 eARC 能力块。协商阶段通过 DDC 通道交换音频格式和采样率信息。传输阶段音频数据通过 HEAC 差分对传输。IT66322 的 eARC 状态可以通过寄存器 0x30 读取bit0eARC 发现完成bit1eARC 协商完成bit2eARC 音频传输中bit3eARC 错误我调试的时候发现 bit0 一直不置位查了半天是 HEAC 差分对的极性接反了。IT66322 的 HEAC 和 HEAC- 不能反接反接后发现脉冲发不出去。后来在 PCB 上做了个 0Ω 电阻跳线方便调试时交换极性。4.4 与 RK3566 主控的配合如果你的方案是用 RK3566 做 HDMI 输入采集IT66322 的切换开关输出接到 RK3566 的 HDMI RX 上。RK3566 的 HDMI RX 支持 HDMI 2.0但它的 EDID 是固定的不能动态切换。这时候 IT66322 的 EDID bank 切换就派上用场了RK3566 的 EDID 写入 IT66322 的 bank0eARC 的音频能力块写入 bank1源端插到哪个口就读哪个 bank。RK3566 的 I2C 控制器和 IT66322 的 I2C 要接在同一组总线上注意上拉电阻的阻值。RK3566 的 I2C 上拉一般是 2.2kΩIT66322 也要求 2.2kΩ如果总线上挂了多个设备上拉电阻要适当减小比如用 1.5kΩ。我试过用 4.7kΩ结果 I2C 波形上升沿太慢通信偶尔出错。5. 常见问题与排查技巧实录5.1 问题速查表现象可能原因排查方法解决方法上电后 I2C 读全 0xFF电源时序错误量 1.2V 和 3.3V 上电顺序调整 LDO 使能时序源端不输出视频HPD 未拉高量 HPD 电压检查 HPD 上拉和寄存器配置4K60 黑屏1080p 正常TMDS 带宽不足量 TMDS 时钟频率检查走线阻抗和插入损耗eARC 无声音HEAC 极性反接量 HEAC 差分对极性交换 HEAC 和 HEAC-HDCP 认证失败KSV 列表错误读 HDCP 状态寄存器重新写入正确的 KSV音频有咔哒声共模噪声量 HEAC 共模电压加共模扼流圈I2C 通信不稳定上拉电阻过大量 I2C 上升沿减小上拉电阻到 1.5kΩ5.2 独家避坑技巧技巧一EDID 写入前先读一遍。IT66322 的 EDID RAM 上电后是随机值直接写可能写不进去。我一般先读一遍确认 I2C 通信正常再写。读的时候如果全是 0xFF说明芯片没起来先查电源。技巧二HDCP 密钥加载要分批。IT66322 的 HDCP 密钥 RAM 是 128 字节一次写太多会溢出。我一般分 4 次写每次 32 字节中间延迟 1ms。技巧三eARC 调试先用 48kHz 测试。eARC 支持 192kHz但调试的时候先用 48kHz 的 PCM 音频测试确认通道通了再上高采样率。高采样率对 HEAC 差分对的信号完整性要求更高如果 48kHz 都有问题先解决基础问题。技巧四TMDS 走线不要跨分割。差分对参考的平面必须完整不能跨分割。我见过一个板子TMDS 走线跨了电源分割结果 4K60 偶尔闪屏。后来在分割处加了 stitching 电容才解决。技巧五eARC 和 ARC 的兼容性。IT66322 支持 eARC但如果对端只支持 ARC芯片会自动降级到 ARC 模式。这个降级是通过 HEAC 线上的电压检测实现的。如果对端是 ARC 设备HEAC 线上的电压是 2.5V 左右如果是 eARC 设备电压是 3.3V 左右。量一下这个电压就能判断对端类型。5.3 一个真实的调试案例有个客户用 IT66322 做 Soundbar反馈说 eARC 有时候有声音有时候没有。我过去一看发现他们的 HEAC 走线长度是 8cm而且没有做阻抗控制。量了一下差分阻抗只有 75Ω远低于 100Ω。信号反射导致 eARC 发现脉冲偶尔丢失。后来重新走线控制阻抗到 100Ω长度缩短到 5cm问题解决。这个案例说明eARC 虽然数据率不高但对信号完整性的要求不低。HEAC 差分对的走线要按高速信号处理不能因为它是音频就随便走。6. 设计验证与量产注意事项6.1 眼图测试量产前一定要做眼图测试。TMDS 通道的眼图模板要符合 HDMI 2.0 的规范眼高和眼宽都要有余量。我一般用 4K60 的测试图案量 TMDS 时钟和数据通道的眼图。如果眼图闭合先查走线阻抗再查电源纹波。eARC 的 HEAC 通道也要做眼图虽然规范没有强制要求但眼图好的话音频误码率低。我一般用 192kHz 的正弦波测试量 HEAC 差分对的眼图。6.2 兼容性测试HDMI 的兼容性是个大坑。不同品牌的源端和显示端EDID 和 HDCP 的实现都有差异。我一般准备一个测试矩阵源端显示端测试内容预期结果PS5索尼电视4K60 HDR eARC视频正常音频正常Xbox Series XLG 电视4K120降级到 4K60视频正常音频正常蓝光机投影1080p24 TrueHD视频正常音频正常机顶盒显示器1080p60 PCM视频正常音频正常每个组合都要测 HDCP 认证、EDID 读取、eARC 发现和音频传输。我遇到过 PS5 和某品牌电视的 HDCP 认证失败原因是电视的 KSV 列表和 IT66322 的不兼容。后来升级了 IT66322 的固件才解决。6.3 固件升级的考虑IT66322 支持通过 I2C 升级固件但升级过程中不能断电否则芯片会变砖。我一般建议客户在 PCB 上留一个固件升级接口方便量产后的维护。升级固件的时候要先拉低 HPD停止所有 HDMI 通信再写固件。固件升级的流程是写升级使能寄存器擦除 Flash写入新固件校验复位。整个过程大概 30 秒期间不能断电。我见过一个客户在升级的时候拔了电源结果芯片起不来只能换新的。6.4 散热与功耗IT66322 的功耗不算高典型工作电流 1.2V 是 150mA3.3V 是 80mA总功耗约 0.44W。QFN-64 封装的散热主要靠 PCB 的散热焊盘。我一般会在芯片下方铺一块铜皮打 9 个过孔连接到地平面帮助散热。如果环境温度高比如在密闭的 Soundbar 里建议加一个小散热片。温度对 eARC 的影响不大但对 TMDS 通道有影响。高温下 TMDS 的抖动会增加眼图会变差。我做过测试环境温度从 25°C 升到 70°CTMDS 的眼高下降了约 15%。所以如果产品要在高温环境下工作TMDS 的走线要留足够的余量。7. 几个容易被忽略的细节7.1 HDMI 的 I2C 和普通 I2C 的区别HDMI 的 DDC 通道虽然走的是 I2C 协议但它的电平是 5V 容忍的而且上拉电阻的阻值有讲究。HDMI 规范要求 DDC 的上拉电阻是 2.2kΩ但实际设计中如果总线电容大可以适当减小到 1.5kΩ。IT66322 的 DDC 引脚是 5V 容忍的但 RK3566 的 I2C 引脚不是 5V 容忍的所以中间要加电平转换。我一般用一颗双向电平转换芯片比如 TXS0102把 5V 的 DDC 转到 3.3V 给 RK3566。注意电平转换芯片的带宽要足够DDC 的时钟频率是 100kHzTXS0102 支持到 24Mbps完全够用。7.2 HDMI 视频旋转的坑有些应用场景需要把 HDMI 视频旋转 90 度比如竖屏广告机。IT66322 本身不支持视频旋转旋转要在 RK3566 里做。RK3566 的 GPU 支持旋转但 HDMI RX 进来的数据要先经过内存再旋转再输出。这个流程会增加延迟大概 2-3 帧。如果对延迟敏感比如游戏场景就不适合旋转。另外旋转后的分辨率要重新计算。比如 1920×1080 旋转 90 度变成 1080×1920TMDS 的像素时钟不变但行场同步的时序变了。RK3566 的 HDMI TX 要重新配置时序参数否则显示会错位。7.3 eARC 的音频格式协商eARC 支持多种音频格式包括 PCM、Dolby Digital、Dolby TrueHD、DTS、DTS-HD MA 等。协商的时候电视会把支持的音频格式通过 eARC 能力块发给 IT66322IT66322 再转发给源端。源端根据这个能力块决定输出什么格式。这里有个坑如果电视的 eARC 能力块里没有某个格式源端就不会输出那个格式。比如电视不支持 DTS-HD MA源端就会降级到 DTS。我遇到过客户反馈说 TrueHD 没声音查了半天是电视的 eARC 能力块里没有 TrueHD后来升级电视固件才解决。7.4 待机功耗与唤醒IT66322 支持待机模式待机电流小于 1mA。待机时芯片会监听 HPD 和 HEAC 线上的活动一旦检测到源端插入或 eARC 发现脉冲就自动唤醒。这个功能对 Soundbar 很重要因为 Soundbar 通常是一直插着电的待机功耗要低。待机模式的配置是写寄存器 0x40 的 bit0 为 1。唤醒后芯片会自动重新初始化EDID 和 HDCP 都要重新加载。我一般会在唤醒后加 100ms 的延迟等芯片稳定后再开始 HDMI 通信。8. 写在最后的一些个人体会调 IT66322 这段时间最大的感受是HDMI 这东西规范写得很清楚但实际调试起来全是细节。EDID 的 checksum、HDCP 的密钥顺序、eARC 的极性任何一个细节错了现象都是没声音或黑屏但原因可能完全不同。我建议新手先从 1080p 开始调确认视频通道通了再上 4K60。音频先从 PCM 开始确认 eARC 通道通了再上 TrueHD。一步一步来比一上来就全功能跑要快得多。另外IT66322 的规格书有些地方写得比较简略比如 eARC 状态机的细节规格书里只有一张状态图没有详细的寄存器说明。这时候要么找 FAE 要更详细的文档要么自己用逻辑分析仪抓 HEAC 线上的波形反推状态机的行为。我两种方法都用过抓波形虽然费时间但最可靠。最后分享一个小技巧IT66322 的 I2C 寄存器里0x50 到 0x5F 是调试用的可以实时看到 TMDS 的时钟频率、HDCP 的状态、eARC 的状态。调试的时候我一般会写个脚本每秒读一次这些寄存器打印出来这样能实时看到芯片的状态变化比用示波器方便。