ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

IT66220 HDMI 1.4 TX集成实战:从规格书到点亮屏的完整路径

IT66220 HDMI 1.4 TX集成实战:从规格书到点亮屏的完整路径 第一次拿到IT66220的规格书我差点被内部那一堆时序图和寄存器表绕晕。这颗芯片本身其实不复杂核心角色就是一颗HDMI 1.4 TX发送器它把处理器或FPGA送来的并行视频信号、I2S/SPDIF音频信号按照HDMI 1.4的协议重新打包成TMDS差分信号再从标准的HDMI接口送出去。真正把时间耗掉的是规格书里那些分散的参数输入像素时钟范围、TMDS输出摆幅、DDC/HPD处理、HDCP密钥加载、寄存器上电默认值每一项都可能决定你的板子能不能点亮。这篇文章我会以IT66220规格书为蓝本来聊但不是把PDF逐页翻一遍。我更想梳理一条可复用的集成化路径怎么读这颗HDMI1.4 TX的关键规格怎么从规格书参数落到原理图和PCB怎么初始化寄存器以及现场调试时那些规格书不会写的坑。适合正在做嵌入式主板、工业视觉板卡、播放盒、FPGA视频输出方案的硬件和驱动工程师。如果你只是想在开发板上把HDMI口用起来也能从第3节之后的步骤直接抄作业。提示不同封装后缀和批次IT66220的某些电气参数、寄存器默认值可能有差异。本文提到的具体参数仅作方法论参考最终必须以你手头芯片对应的官方规格书为准。1. 先搞明白IT66220在系统里的定位1.1 HDMI 1.4 TX到底解决了什么问题很多SoC并不自带HDMI控制器或者自带HDMI但引脚不够、电平不匹配、协议栈不全。比如说一颗主打工控或者物联网的ARM芯片可能只有RGB并行接口、MIPI DSI、LVDS这时候你想接一个标准HDMI显示器就需要一颗外置HDMI发送芯片。IT66220就是干这个的。它可以被理解成一个“协议翻译器”。你的主控只需要按照并行RGB/YCbCr接口把像素数据、行场同步信号、像素时钟给到位再给一个I2S数字音频流IT66220会完成HDMI要求的TMDS编码、串行化、辅助数据通道、音频数据打包等工作最终从TMDS差分引脚输出给显示器。对主控来说它看到的只是一个“并口屏控制器”但显示器端看到的是一个合法的HDMI Source。所以我一直认为集成IT66220的关键不是记住寄存器而是先分清边界主控负责什么芯片负责什么。主控只要按约定时序喂数据芯片负责HDMI协议两者之间靠一组配置寄存器和同步信号对接。如果你一上来就盯着寄存器表很容易把“主控没配好”和“芯片没跑起来”混在一起导致排查问题事倍功半。1.2 整机系统框图与信号流向拿一块IT66220评估板或者参考设计来梳理最直观的接法是这样的主控对接并行视频接口芯片输出TMDS到连接器中间穿插I2C、音频和HPD控制线。下面我用文字把信号流向列出来方便你对照原理图检查主控SoC/FPGA - 并行RGB/YCbCr视频数据 HSYNC/VSYNC/DE PCLK - IT66220 视频输入主控I2C - IT66220 I2C从接口用于配置寄存器同时可能桥接DDC通道主控I2S/SPDIF - IT66220 音频输入IT66220 TMDS输出 - HDMI TYPE A连接器 - 显示器显示器HPD信号 - IT66220或主控GPIO - 系统检测热插拔状态。这里面有个容易搞混的点IT66220本身既是HDMI发送器又充当DDC通路上的桥。DDC其实是显示器和主控之间的一条I2C总线用来读EDID和做HDCP握手。很多HDMI发送芯片会把DDC的SDA/SCL引脚直接引出来让主控I2C控制器去访问芯片只是做了电平转换和通道开关。理解这一点很重要不然你在调试EDID读不到时会以为是芯片坏了实际上可能只是DDC的引脚方向没接对。1.3 “集成化路径”不是画完原理图就结束我理解标题里“集成化路径”这四个字指的是从一颗裸芯片到一个可用HDMI接口的完整过程至少包含四段硬件最小系统、驱动初始化序列、PCB与连接器设计、调试与认证。四段都做了才算真正集成进去。很多团队容易在第二段和第三段之间反复横跳原理图看着没问题但寄存器没初始化或者初始化了但顺序不对输出就是黑的又或者寄存器都配好了但PCB差分对阻抗没控制好画面满屏雪花。这就是为什么我说规格书要倒着读先看调试建议、应用电路、寄存器复位值再看电气参数最后看绝对最大额定值。倒着读你会知道哪些坑需要提前在原理图上留后路。2. 规格书里真正要抠的参数别只盯着分辨率2.1 输入接口与像素时钟范围IT66220这类HDMI1.4 TX的输入接口通常支持并行RGB888、YCbCr4:4:4、YCbCr4:2:2等格式具体支持哪些要看spec。你第一件要做的事是把主控输出的像素格式和芯片支持的输入格式对上。比如有的SoC只能输出RGB888和DE同步那你就不能用需要单独HSYNC/VSYNC的模式去配寄存器。像素时钟范围是最容易让人误判的参数。HDMI 1.4规范里TMDS时钟上限可以到340MHz对应4K×2K30Hz或者1080p120Hz这类高带宽场景。但IT66220如果定位是HDMI1.4 TX它的输入PCLK能不能跑到340MHzspec会写得一清二楚。我常用的几个参考点1080p60的像素时钟是148.5MHz1080p120大约要297MHz很多HDMI1.4 TX已经比较吃力4K303840×216030Hz也是297MHz实际要看你是否用RGB还是YUV422减半之后可能只需要148.5MHz。我建议你在选型阶段就先列一张表主控最大PCLK、输出分辨率、刷新率、色彩格式、实际所需像素时钟。再用IT66220规格书的最大PCLK去核对。如果主控输出远远低于上限那问题不大如果卡在上限附近就要特别注意输入时钟的抖动和上升沿/下降沿采样设置。2.2 TMDS输出电气参数摆幅、预加重、阻抗这一节是很多人忽略但现场最容易出问题的部分。IT66220的TMDS输出本质上是一个电流型差分驱动器也就是常说的“TX driver”。它会输出四对差分信号三对数据通道一对时钟通道。每对差分线的差分阻抗要求是100ΩPCB上必须按100Ω差分阻抗来走线。规格书里会给出输出摆幅范围常见HDMI源端差分信号振幅在400mV到600mV左右具体由寄存器控制。线缆较短时偏低的摆幅更省电信号质量也够线缆长度超过5米后可能需要开启预加重pre-emphasis或者提高摆幅否则信号在接收端会因为趋肤效应和介质损耗衰减造成显示器闪屏或黑屏。这里顺带说一句有些朋友从工业总线那边转过来做显示听到“TX driver”就下意识想到EtherCAT从站需要几个TX网口或者ptp4l的tx timestamp。那些“TX”是网络报文发送方向IT66220的TX driver是HDMI物理层的模拟差分驱动完全是两码事。把这种概念区分开至少不会在调试时拿错示波器探头去量差分信号。2.3 音频和辅助通道I2S、SPDIF、DDC、HPD、CECIT66220的音频输入一般是I2S或SPDIF。I2S要看清楚支持的位宽和格式标准I2SPhilips、左对齐、右对齐都有可能某些芯片还只支持16bit、20bit、24bit中的某几种。这部分参数不影响图像但会影响你驱动里初始化I2S引脚和DMA的代码。DDC通道是Source和显示器之间的I2C总线通常标准速率100kHz有时候可以到400kHz。它的作用有两个读EDID、做HDCP握手。很多设计里DDC的SDA/SCL是从主控直接拉出来的I2C但硬件上需要根据芯片要求接上拉电阻并且注意耐压。HDMI连接器上的DDC通常是5V容忍主控I2C如果只有3.3V就要考虑芯片是否内置电平转换或外部加电平转换电路不然EDID很容易读到一半出错。HPD引脚的作用是显示器向Source报告有没有插线。标准HDMI的HPD信号来自连接器19脚一般是一个5V或者3.3V电平的输入。主控需要轮询这个引脚状态当检测到高电平时才能去读EDID和打开HDMI输出。很多板子把HPD跟一个GPIO直连但要注意连接器上的HPD可能被显示器拉低或需要上拉具体参考芯片的推荐电路而不是想当然。CEC是可选的消费电子控制通道物理上是一条单线总线需要外部上拉电阻和必要的电平转换。如果产品里不需要HDMI CEC功能可以不接但引脚悬空时最好看规格书建议避免漏极开路状态下异常电平影响整机功耗。2.4 HDCP 1.4既是协议问题也是密钥管理问题HDMI 1.4规范里HDCP是不是强制严格说内容保护由Source决定芯片只是提供能力。但如果你的产品要播放受保护内容比如蓝光、流媒体的高清片源HDCP不支持或者密钥无效画面会直接黑屏或者降到低分辨率。对于IT66220这类HDMI1.4 TX它通常内置HDCP1.4的加密引擎但密钥的存放分两种芯片一次性烧录或者外挂EEPROM。规格书里需要重点看的是HDCP Key的加载方式。如果芯片需要外挂EEPROM就要在原理图上预留I2C EEPROM的位置并在产线上烧录Key。如果内置Key那还要考虑密钥版本是否够新因为HDCP的吊销列表会淘汰被破解的密钥。如果你只是做普通工业设备、播放自己的内容不开HDCP是最省事的做法但寄存器里要显式关闭HDCP并且要保证DDC通路上没有强制加密的握手请求否则某些显示器也会误发起HDCP。2.5 电源与功耗上电顺序比电压值更坑规格书的电源章节看着最无聊但也最容易被贴片机“一贴毁所有”。IT66220一般需要多个供电域比如数字核心电压1.2V或1.8V模拟/IO电压3.3V具体电压值以规格书为准。除了纹波要求最要紧的是上电顺序。很多HDMI TX芯片要求先给模拟电源再给数字电源或者反过来如果顺序反了芯片可能不工作甚至闩锁。热插拔时HDMI连接器上的5V可能会反灌到芯片电源引脚这时候就需要在原理图上加隔离二极管或防倒灌电路规格书的“应用电路”里一般会给出建议。我当时就吃过这个亏DC-DC上电时序没控制导致模拟电源被后面的数字电源拉低HDMI接口隔三差五没输出。功耗方面1080p下整颗芯片功耗一般几百毫瓦4K30或高刷新率时会更高。PCB布局时要把芯片底部的散热焊盘处理好不能只靠空气对流。长期老化测试时用热成像看一眼芯片表面温度比天天看显示画面靠谱得多。3. 从规格书到能点亮IT66220的集成化设计路径3.1 最小系统搭建晶体、复位、I2C、去耦第一步是照着规格书的“Recommended Application Circuit”搭最小系统。通常包括一颗晶体常见值是24MHz或27MHz不能搞错一个复位输入一组I2C上拉以及每个电源引脚的滤波电容。晶振部分我特别提醒有的芯片要求晶体并联到芯片内部振荡器有的要求外部时钟直接输入。如果你用的是有源晶振要核对电平范围如果用无源晶体负载电容要根据晶振spec计算不能随便选。晶振不起振时芯片的I2C地址可能都扫描不到因为内部数字逻辑根本没跑起来。复位引脚一般低电平有效。规格书会给出最小复位脉冲宽度比如10ms。实际调试时不要只用RC复位电路最好用GPIO控制复位这样驱动可以在初始化前先做一次干净的复位。每个电源域旁边至少要放一个0.1uF和一个1uF或10uF电容模拟电源和数字电源尽量分开走线。不要为了省空间把所有去耦电容放同一侧那是给自己埋雷。3.2 寄存器初始化序列照着规格书逐步来IT66220的初始化通常分这几步复位释放、等待芯片稳定、读芯片ID确认I2C通信正常、配置输入视频格式、配置输出视频参数、配置音频输入、打开HDMI输出、轮询HPD。具体寄存器地址我不在这里逐条列因为不同版本差异太大。但你一定要在初始化代码里加“读ID”这一步不要跳过去。你写配置寄存器的前提是I2C地址对、芯片已经跑起来。一次简单的I2C扫描如果能在某个地址读到设备后面配置才有意义。初始化顺序也有讲究。比如输入格式寄存器应该在输出使能之前配置不然芯片可能会用错误的默认值锁存一个异常分辨率导致后面再改也来不及。另外音频使能最好等图像稳定后再打开避免先开音频通道但没有有效PCLK时产生爆音。之前我在调试FDCAN这类总线时经常对着“TX buffer configuration register”填写发送缓冲区参数IT66220的寄存器更像是“模拟链路协议链路”的综合控制面。两者目的不同但调试思维可以借鉴先把通道使能位关掉再把所有参数配置好最后再开使能这样能避免边配置边输出的中间态。3.3 TMDS输出PCB布局差分对、阻抗、参考面原理图正确只是第一步PCB布局直接决定信号质量。HDMI的4对TMDS差分线需要严格按100Ω差分阻抗控制对内等长一般控制在5mil以内对间等长可以放宽到几十mil但最好也控一下。你能做到的层叠是什么、参考层是否完整比单纯依赖仿真重要得多。差分对走线要远离时钟源、开关电源和电感不要跨越分割地。参考平面必须是完整GND不要走线底下被其他信号层割断。如果必须在差分对之间加过孔建议成对放置并且让过孔引起的stub尽量短。连接器处可以考虑加一颗HDMI专用的ESD保护芯片比如常见的TPD系列或者国产HDMI ESD阵列它们一般也会自带一些TVS能防止热插拔时静电打坏IT66220。关于阻抗匹配IT66220的TMDS输出是否需要在靠近芯片处串接22Ω/33Ω电阻要严格按规格书来。有些Source端驱动是电流型的需要外部端接电阻完成电流到电压转换有些则是内部已经做好。如果你看到参考设计里有串阻就不要自作主张删掉。3.4 ESD与EMI处理认证之前必须做HDMI连接器裸露在机壳外热插拔瞬间的ESD非常凶猛。集成化路径里最不该省的就是连接器附近的ESD防护。除了专用ESD芯片还可以在连接器外壳与机壳地之间加一个0欧电阻或磁珠把静电电荷导到机壳地避免直接冲击芯片。EMI方面HDMI TMDS信号速率很高是从几十MHz到几百MHz的宽带信号。如果要做CE/FCC认证建议在连接器位置预留共模电感的位置虽然不一定贴但至少给后续整改留个选项。PCB的布局上HDMI连接器尽量靠近板边让差分线短距离走线减少天线辐射。不要为了外形把HDMI放在离芯片很远的角落那样不合格的代价比板子重画更大。4. 调试实录与常见坑比规格书更值钱的现场经验4.1 点不亮先分“硬件不认”还是“驱动没配”拿到样板第一次上电如果HDMI显示器完全没反应我的经验是先做四个检查量HPD电平、量IT66220电源、量晶体起振、扫I2C地址。这四个检查能在五分钟内把问题缩小到电源、时钟、总线、外设四个方向。HPD电平如果是0V说明连接器没检测到显示器或者HPD电路被拉死了。查连接器19脚和HPD引脚之间的串联电阻、上拉、电平转换。电源电压要对还要看电流是否异常。IT66220如果某个电源对地短路电流会很大。晶振不起振芯片内部逻辑不工作I2C扫描不到设备。用示波器看晶振引脚波形振幅太低也可能有问题。I2C地址扫不到读ID都是0xFF。先排除总线上拉、从机地址位、复位引脚被拉低。这四个检查里最容易被忽略的是复位。很多GPIO默认是高但复位引脚是低有效如果上电瞬间GPIO有毛刺或者下拉电阻贴错芯片就一直处于复位状态I2C怎么扫都扫不到。我后来在驱动里强烈建议增加“GPIO复位再释放”的步骤而不是依赖上电默认电平。4.2 花屏、抖动、图像偏移多半是同步和时钟没对齐如果HPD正常、图像也有但画面花屏、抖动、有横纹大概率不是芯片坏了而是主控送来的同步时序和IT66220的寄存器预期不一致。首先检查HSYNC/VSYNC/DE的极性。有些SoC默认是负极性有些是正极性IT66220寄存器里通常可以设置极性一旦设错画面会整体偏移、跳动或者撕裂。其次检查数据使能DE如果主控没有生成DE只靠HSYNC/VSYNC很多芯片会认为输入无效输出黑屏。第三要确认像素时钟的采样边沿。规格书一般会注明输入PCLK是上升沿采样还是下降沿采样或者通过寄存器选择。如果你的时序裕量不够可以在寄存器里翻转采样边沿试试这个小改动经常能救回一条画质一般的板子。最后如果你在调的是4K30或者深色模式还要确认色彩空间转换配置。IT66220输入端如果是RGB输出给电视要不要转成YCbCr电视一般都能收RGB但如果你配成了YCbCr而输入数据又是RGB颜色会发绿或者出现彩色噪点。4.3 DDC通信异常EDID读不到、HDCP握手失败EDID读不到是非常常见的问题。先用逻辑分析仪抓DDC总线看显示器有没有ACK。如果显示器不ACK要么显示器没上电、HPD没拉高要么DDC的SCL/SDA接反了或者电平不对。HDMI连接器上的DDC是标准I2C但有些公头母座的引脚顺序特别容易搞混我是建议每次都对照连接器规格书打两颗测试点别靠记忆。HDCP握手失败通常不像EDID那样有明确日志表现是画面跳到黑屏、或者显示“HDCP错误”。先检查IT66220的HDCP key是否有效然后看DDC上能不能完整读完显示器的HDCP能力。如果只是某台显示器不行可以尝试降低EDID读取速率或者换根线材。大批量生产时HDCP问题还要考虑是不是每台板子的密钥烧录一致最好在产测里加一项HDCP握手测试。4.4 音频无声I2S格式和采样率寄存器没对上图像正常但电视没声音最常见原因是主控I2S输出的格式和IT66220音频模块配置不一致。标准I2S、左对齐、右对齐如果不匹配音频数据会被当成噪声或者静音。先确认主控音频控制器输出的是不是标准I2S然后看IT66220音频寄存器配置是否一致。其次看I2S的位宽和采样率。HDMI音频可以传16/20/24bit采样率可以是32kHz、44.1kHz、48kHz、96kHz、192kHz。如果主控用48kHz、24bit配置成了44.1kHz、16bit部分电视会直接不识别或者声音变调。调试时先固定一个简单格式48kHz/16bit/标准I2S点亮后再逐步往上加。最后要确认IT66220的音频FIFO有没有被使能。有些芯片需要由主控或芯片自己产生音频时钟如果音频时钟没开启配置再对也没声音。这时候量一下IT66220的音频输入引脚有没有波形立刻能判断是主控没发数据还是芯片没接收。4.5 常见问题速查表现象可能原因处理方向完全无输出HPD无效、电源异常、晶振不起振量HPD、电源、晶振扫I2C有背光但黑屏输入DE极性错误、没有DE信号检查同步信号极性用测试图花屏/雪花TMDS阻抗不匹配、线缆太长、供电不足检查差分对阻抗开启预加重颜色异常色彩空间配置错误、RGB/YCbCr模式不匹配核对输入色彩格式寄存器声音无声/变调I2S格式、采样率、位宽不匹配固定48kHz/16bit标准I2S调试HDCP黑屏HDCP key无效、EDID读取失败读寄存器状态关闭HDCP测试热插拔偶发失效ESD损伤、HPD抖动脉冲增加ESD防护HPD加滤波电容这张表不是让你死记而是调试时先对着现象猜原因再动手改。我发现很多人喜欢一上来就改代码其实硬件问题没排除改几天也是白改。至少先花半天把电源、时钟、HPD、I2C四个基础项确认一遍再进入软件反复调参。5. 几个典型产品里的集成化路径参考5.1 安卓主板和机顶盒驱动框架要跟着内核走在安卓硬件平台上IT66220这类HDMI TX芯片通常作为一个I2C client挂在内核里复位GPIO通过设备树配置初始化函数挂在显示控制器的enable回调里。你要特别关注睡眠唤醒的恢复流程Android系统从休眠唤醒时如果HDMI TX没有重新初始化HDMI输出可能变成黑屏或只有桌面背景。我建议在驱动里加一个HPD状态上报的线程当HPD拉高时主动做一次EDID读取和HDMI配置不要等显示框架自己发现。很多播放器“插上不亮、热插拔一次就亮”的问题都是因为HPD检测和HDMI配置的时序不对。5.2 工业视觉控制器长线布局和稳定性优先工业环境里HDMI线缆可能要走5米甚至更长现场电磁干扰也大。除了在IT66220侧开启预加重还要注意HDMI连接器周围不要放高频信号线和电源线。如果整机同时还要接EtherCAT等工业以太网最好把HDMI的差分对和网口变压器拉开距离避免以太网脉冲干扰HDMI时钟。有些工业控制器还会跑PTP同步你会看到ptp4l日志里出现“timed out while polling for tx timestamp”这类报错那是网卡发送时间戳的问题和IT66220这个“TX”没有任何关系。别被同一个词带偏分开调效率和心情都会好很多。5.3 FPGA接入IT66220重点在时序收敛用FPGA做视频源时IT66220的并行输入很直观但也容易被忽略因为FPGA的逻辑时序不像SoC那样有现成驱动。你要在FPGA内部生成稳定的像素时钟一般由PLL从输入参考时钟合成并且要保证PCLK和视频数据、DE之间满足建立/保持时间。调试FPGA方案时我最喜欢先输出一个纯色测试图彩条或者单色填充再输出带DE的测试图。如果纯色正常说明IT66220初始化没问题如果带DE的测试图花屏再回头查FPGA的行场时序。这种“模块化排查”能省下很多时间。5.4 从模块评估板到量产整机的迁移很多人习惯先买一颗IT66220评估板验证然后照着评估板原理图改到自己的板卡。这个思路没错但直接照抄容易漏掉电源时序、连接器ESD和HDMI引脚顺序。评估板通常按最优性能设计器件也比量产方案贵量产板要考虑物料成本、PCB厂工艺偏差和静电防护。我通常在量产设计阶段会做三件额外的事在HDMI连接器附近预留ESD和共模电感位置在IT66220的电源pin附近加磁珠和足够的去耦电容在I2C总线上加合适的串阻防止热插拔瞬间毛刺把寄存器改写。这些改动在评估板上看不出来但在产线和现场环境中非常关键。写到最后我还是想多说一句IT66220这颗芯片本身并不神秘真正的复杂度在于你对HDMI 1.4规范的理解以及你对信号完整性、电源完整性、软件时序的敬畏。你手头的规格书肯定比我写的更详细但规格书不会告诉你“先看哪一页、先量哪个信号、先信哪句参数”。这篇文章的价值就是把我踩过的坑整理成了一条相对不那么折腾的路径。下次再拿一块带IT66220的板子别急着写代码先按最小系统检查一遍再动手你会觉得点亮其实很快。最后分享一个小习惯每次改完寄存器配置保留一份完整I2C寄存器的dump跟能正常工作的样板做diff远比对着规格书猜效率高。这个习惯在很多芯片调试里都管用。
返回列表