ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HDMI转MIPI DSI桥接芯片IT6625:协议转换原理、硬件设计与调试实战

HDMI转MIPI DSI桥接芯片IT6625:协议转换原理、硬件设计与调试实战 1. 从一块转接板说起IT6625到底解决了什么问题第一次接触IT6625是在一个双屏便携显示器的项目上。客户拿来的样机只有一路HDMI输入但主板上的屏幕模组是MIPI DSI接口中间那颗转接芯片丝印被磨掉了只留下一个模糊的“IT66”字样。拆了三块板子、对着引脚跑了一遍线路之后才确认这就是联阳ITE那颗IT6625——一颗专门做HDMI到MIPI DSI协议转换的桥接芯片。这个场景其实非常典型。现在市面上大量的便携屏、车载中控副屏、工业HMI面板、甚至一些DIY的树莓派扩展屏主控端输出的是标准HDMI信号而屏幕端用的是MIPI DSI。这两套协议从物理层到协议层几乎没有任何交集HDMI走的是TMDS差分对MIPI DSI走的是D-PHY的HS/LP双模差分HDMI有独立的I2C DDC通道做EDID交互MIPI DSI靠的是DCS命令集和视频模式配置。硬要把它们接在一起中间必须有一颗“翻译官”芯片把HDMI的TMDS串流解出来重新打包成MIPI DSI能识别的像素流和命令流。IT6625就是干这个的。它内部集成了HDMI 1.4b的接收端RX支持到1080p60或者1920x1200这个量级然后通过内部的Scaler和时序控制器把视频流转换成单通道或者双通道的MIPI DSI输出最高可以驱动到1920x120060Hz的面板。同时它还带了一路I2S音频输入可以把HDMI里解出来的音频通过I2S送给外部的功放或者Codec。对于做嵌入式显示方案的人来说这颗芯片最大的价值在于它把HDMI RX PHY、EDID管理、HDCP解密、色彩空间转换、MIPI DSI TX PHY这一整条链路都集成在了一颗QFN封装里外围只需要配一颗晶振、几路电源和少量的阻容就能搭出一个完整的HDMI转MIPI的转接方案。适合读这篇内容的人大概有三类一是做便携显示器、车载屏、工业面板的硬件工程师需要选一颗靠谱的HDMI转MIPI桥接芯片二是做RK3566、RK3588这类平台的嵌入式开发者主控本身HDMI输出能力有限或者需要额外扩展一路显示想通过外挂IT6625来实现三是做FPGA或者自研SoC的团队想理解HDMI到MIPI这条转换链路里到底有哪些坑即使不用IT6625也能对协议转换的整体架构有个底。2. 协议转换的底层逻辑为什么HDMI和MIPI不能直接对接2.1 物理层差异TMDS与D-PHY的根本矛盾HDMI的物理层是TMDSTransition Minimized Differential Signaling四条差分对——三条数据通道加一条时钟通道每条通道的速率由像素时钟乘以一个系数决定。以1080p60为例像素时钟148.5MHzTMDS字符率是像素时钟的10倍也就是1.485Gbps per lane。TMDS的编码方式是8b/10b的变种每个像素周期传输10bit的编码字符其中包含了控制周期和数据岛周期的信息。MIPI D-PHY则完全是另一套逻辑。它用的是HSHigh Speed和LPLow Power两种模式的差分信号一条时钟lane加一到四条数据lane。HS模式下每条lane的速率可以到1Gbps以上但它的编码方式不是8b/10b而是直接传输像素数据或者DCS命令靠SoTStart of Transmission和EoTEnd of Transmission来界定传输边界。更麻烦的是MIPI DSI的时序不是像HDMI那样由TMDS时钟直接恢复出来的而是由发送端主动配置的——你要告诉它HSS、HSA、HBP、HFP这些参数它才能正确地产生行场同步。这两套物理层的差异意味着你不可能用一根被动线缆把HDMI信号“喂”给MIPI屏幕。中间必须有一个主动的转换器件先把TMDS解调成并行像素流再按照MIPI DSI的时序重新打包发送。IT6625内部做的就是这件事HDMI RX端把TMDS差分信号解成24bit的RGB并行数据加上DE、HSYNC、VSYNC这些时序信号然后Scaler模块根据目标面板的分辨率做缩放或者直通最后MIPI TX端按照配置好的DSI参数把像素流串化出去。2.2 协议层差异EDID、HDCP与DCS命令集物理层之上协议层的差异同样不小。HDMI接收端必须能够响应源端的EDID读取请求否则源端根本不会输出信号。EDID是一段128字节或者256字节的数据描述了接收端支持的分辨率、刷新率、音频格式等信息。IT6625内部有一块EDID RAM可以通过外部I2C或者预烧录的方式配置。如果你用的是RK3566或者RK3588这类平台主控的HDMI TX端会先读EDID确认对方能接受什么格式然后才决定输出什么分辨率。HDCP是另一个绕不开的点。HDMI源端如果检测到接收端支持HDCP就会发起加密握手。IT6625支持HDCP 1.4的解密内部有Key和握手逻辑。如果你的源端是蓝光播放器或者某些机顶盒不开HDCP解密是拿不到画面的。但如果你只是接一个普通的PC或者开发板HDCP通常不是必须的可以在配置里关掉。MIPI DSI这边则是DCSDisplay Command Set命令集。面板初始化的时候你需要通过DCS命令把面板的电源、时序、Gamma、像素格式这些参数写进去。IT6625内部有一个命令表可以通过I2C预加载上电之后自动通过DSI接口发给面板。这一步如果配错了屏幕要么不亮要么花屏要么颜色完全不对。2.3 为什么选择IT6625而不是其他方案市面上做HDMI转MIPI的芯片不止IT6625一家。龙迅的LT9611、LT8912B联阳自家的IT66121还有一些FPGA方案比如用Lattice的CrossLink或者紫光同创的FPGA加MIPI D-PHY硬核。选IT6625的理由主要有几个一是集成度高HDMI RX和MIPI TX都在一颗芯片里不需要外挂PHY二是成本相对可控QFN88的封装外围BOM比较精简三是ITE的参考代码和配置工具比较成熟I2C配置表有现成的模板可以改四是支持音频直通I2S输出可以直接接功放不需要额外的音频解嵌芯片。当然它也有局限。IT6625最高只支持到1920x120060Hz如果你要驱动2K或者4K的MIPI屏这颗就不够了得看IT6626或者别的方案。另外它的Scaler能力有限输入和输出分辨率不一致的时候缩放质量一般做便携屏的话最好让输入和面板native分辨率保持一致。3. 硬件设计要点从原理图到PCB布局3.1 电源树设计与上电时序IT6625的电源轨不算复杂但上电时序有讲究。它需要三路电源1.2V的核心电压、1.8V的MIPI D-PHY电压、3.3V的IO和HDMI RX电压。1.2V通常由一颗同步降压转换器提供比如RT9013或者类似的LDO电流能力要保证在300mA以上。1.8V和3.3V可以用LDO但要注意MIPI D-PHY的1.8V对噪声比较敏感最好单独用一颗低噪声LDO不要和数字IO共用。上电时序方面ITE的datasheet里写得很清楚1.2V核心电压要先于1.8V和3.3V建立或者至少同时建立。如果3.3V先上而1.2V后上芯片内部可能会出现闩锁或者初始化失败。我实际踩过的坑是用了一颗带使能引脚的LDO使能信号直接接在3.3V上结果3.3V先起来1.2V晚了大概10ms芯片的I2C就不响应了。后来把使能信号改成由1.2V的PG信号控制问题解决。提示如果你用的是RK3566或者RK3588这类平台主控的GPIO可以拿来控制IT6625的复位和电源使能。建议在驱动里加一个上电延时等1.2V稳定之后再释放复位至少延时10ms。3.2 HDMI RX端的Layout注意事项HDMI RX端有四对TMDS差分线加上DDC的SCL/SDA、HPD、CEC这些低速信号。TMDS差分对的阻抗要控制在100欧姆差分单端50欧姆。走线尽量等长对内偏差控制在5mil以内对间偏差控制在20mil以内。如果走线比较长建议在源端加共模电感或者ESD保护器件但要注意这些器件不能引入太大的寄生电容否则会影响1.485Gbps的信号完整性。DDC的SCL/SDA是I2C电平通常上拉到3.3V或者5V。IT6625的DDC引脚是3.3V耐压的如果你接的是5V的源端需要加电平转换。HPD是热插拔检测源端通过这个引脚判断接收端是否就绪。IT6625的HPD输出可以通过I2C配置成推挽或者开漏建议用开漏加上拉兼容性更好。3.3 MIPI DSI端的走线与阻抗控制MIPI DSI的差分对阻抗要求是100欧姆差分但它的速率和HDMI不一样单lane可以到1Gbps以上。走线的时候要注意几点一是差分对尽量短最好控制在10cm以内二是避免过孔如果必须过孔要保证过孔的电感尽量小三是远离高频噪声源比如DC-DC的开关节点四是LP模式的信号线也要注意虽然LP速率低但它的电平是1.2V和HS模式的共模电压不一样走线的时候不要和HS差分对混在一起。IT6625的MIPI TX端支持1到4条数据lane具体用几条取决于你的面板分辨率和刷新率。以1920x120060Hz为例像素时钟大概154MHz24bit RGB总数据率是154M x 24 3.7Gbps。如果DSI时钟跑800Mbps per lane那双lane就够了如果跑1Gbps per lane单lane也能勉强撑住但余量不大。建议至少用双lane留够裕量。3.4 晶振与复位电路IT6625需要一个外部晶振通常是27MHz或者25MHz具体看你的HDMI输入时序要求。晶振的负载电容要匹配一般12pF到18pF之间具体值看晶振厂家的规格书。复位引脚是低电平有效建议加一个RC延时电路保证电源稳定之后再释放复位。复位时间至少1ms太短了芯片内部PLL可能还没锁定。4. 软件配置与调试I2C寄存器表怎么改4.1 配置工具与寄存器表结构ITE给IT6625提供了一套配置工具通常是一个Windows下的GUI可以生成I2C寄存器表。这个表是一系列“寄存器地址值”的序列上电之后由主控通过I2C写入。表的开头通常是电源和时钟相关的配置然后是HDMI RX的EDID和HDCP配置接着是Scaler和色彩空间配置最后是MIPI DSI的时序和DCS命令表。寄存器表的结构大致分几段第一段是全局控制包括复位、时钟使能、电源模式第二段是HDMI RX配置包括EDID RAM的写入、HDCP使能、音频配置第三段是视频处理包括输入时序检测、缩放系数、色彩空间转换矩阵第四段是MIPI TX配置包括lane数量、HS速率、时序参数、DCS命令序列。每一段的顺序不能乱因为后面的配置依赖于前面的时钟和电源状态。4.2 EDID配置让源端认出你的转接板EDID是HDMI源端和接收端之间的“名片”。IT6625内部有一块EDID RAM通常可以存两段EDID对应两个HDMI输入口如果有的话。配置EDID的时候你需要根据目标面板的分辨率和刷新率来生成。比如你的面板是1920x120060Hz那EDID里就要包含这个分辨率的Detailed Timing DescriptorDTD同时还要包含音频格式描述如果你要用I2S输出音频的话。生成EDID可以用现成的工具比如AW EDID Editor或者Online EDID Generator。生成之后通过I2C写入IT6625的EDID RAM。注意EDID的校验和要正确否则源端会认为EDID无效直接不输出信号。我遇到过好几次因为校验和算错导致源端不认的情况后来养成习惯写完EDID之后用I2C读回来校验一遍。4.3 MIPI DSI时序参数计算MIPI DSI的时序参数包括HSSHorizontal Sync Start、HSAHorizontal Sync Active、HBPHorizontal Back Porch、HFPHorizontal Front Porch、VSA、VBP、VFP这些。这些参数要和你的面板规格书严格对应。以一块常见的1920x1200 MIPI屏为例它的典型时序可能是HSA20、HBP80、HFP80、VSA4、VBP20、VFP20。这些值要写到IT6625的MIPI TX配置寄存器里。DSI的时钟频率也要算。像素时钟154MHz24bit RGB如果双lane每条lane的速率是154M x 24 / 2 1.848Gbps。但DSI的实际速率还要考虑blanking开销所以通常要留20%的余量。IT6625的DSI PLL配置寄存器里有一个分频系数你需要根据目标速率反推PLL的倍频和分频值。这个计算过程比较繁琐建议直接用ITE工具里的计算器输入像素时钟和lane数量它会自动算出PLL配置。4.4 DCS命令表的编写与调试DCS命令表是MIPI面板初始化的关键。不同的面板厂家给的初始化序列不一样有的几十条命令有的上百条。IT6625支持通过I2C预加载命令表上电之后自动通过DSI接口发送。命令表的格式通常是“命令类型数据长度数据”比如0x05 0x01 0x00表示发送DCS Short Write命令是0x00参数是0x01。调试DCS命令表的时候最容易出问题的是延时。有些命令之间需要加延时比如Sleep Out之后要等120ms才能发下一个命令。IT6625的命令表支持插入延时但延时的单位是毫秒不能太细。如果你需要微秒级的延时可能得在主控端用GPIO模拟。我实际调试的时候遇到过因为延时不够导致面板初始化失败的情况后来把Sleep Out之后的延时从50ms改成150ms问题解决。5. 典型应用场景与实战案例5.1 便携显示器HDMI转MIPI双屏方案便携显示器是IT6625最典型的应用场景。一块15.6寸的1080p MIPI面板加上一颗IT6625再配一个HDMI输入口就能做成一个超薄的便携屏。这种方案的关键是电源管理便携屏通常用USB PD供电需要从PD取电然后降压出5V、3.3V、1.8V、1.2V。IT6625的功耗大概在500mW左右加上面板的功耗整机大概3到5W用PD供电完全够。实际做的时候HDMI输入口要加ESD保护因为便携屏经常插拔。DDC的I2C要加上拉电阻HPD要正确配置。面板的背光通常需要升压电路比如用一颗背光驱动芯片PWM调光信号可以从主控或者IT6625的GPIO出。如果要做双屏可以用两颗IT6625分别接两个HDMI输入或者用一颗带双路MIPI输出的芯片。5.2 车载中控副屏RK3566加IT6625的显示扩展RK3566本身有HDMI输出但通常只有一路。如果你要做车载中控主屏用MIPI DSI副屏用HDMI转MIPI那IT6625就是一个很自然的扩展方案。RK3566的HDMI TX输出接到IT6625的HDMI RXIT6625的MIPI TX接到副屏的MIPI DSI。软件上RK3566的Linux内核里要配置HDMI输出同时通过I2C配置IT6625的寄存器。这个场景的坑主要在Linux驱动适配。RK3566的HDMI驱动会读EDID如果IT6625的EDID配置不对HDMI输出可能起不来。另外RK3566的显示框架里HDMI和MIPI DSI是两个独立的显示控制器如果你要把HDMI的信号转到MIPI屏上需要在设备树里正确配置显示通路。我实际调试的时候遇到过HDMI输出正常但MIPI屏不亮的情况后来发现是IT6625的复位GPIO在设备树里配错了改成正确的GPIO之后问题解决。5.3 工业HMIFPGA加IT6625的显示方案有些工业HMI用FPGA做图像处理输出HDMI信号然后通过IT6625转成MIPI DSI驱动面板。这种方案的好处是FPGA可以灵活处理图像比如做缩放、旋转、叠加。IT6625在这里就是一个纯粹的协议转换器不需要做任何图像处理。FPGA端要注意的是HDMI TX的时序。FPGA通常用IP核生成HDMI信号TMDS的编码和并串转换由IP核完成。IT6625的HDMI RX端要能正确检测到FPGA输出的时序如果FPGA的时序参数和标准HDMI有偏差IT6625可能锁不住。我建议在FPGA端严格按照CEA-861标准生成时序特别是HSYNC、VSYNC的极性和宽度要和EDID里声明的一致。6. 常见问题与排查技巧实录6.1 屏幕不亮从电源到DSI的逐级排查屏幕不亮是最常见的问题排查要按顺序来。先量电源1.2V、1.8V、3.3V是否正常纹波是否在可接受范围内。然后量复位复位引脚是否已经释放电平是否稳定。接着查I2C主控能不能读到IT6625的I2C地址寄存器能不能正常读写。再查HDMI RX源端是否检测到了HPDEDID是否被正确读取TMDS时钟是否锁定。最后查MIPI TXDSI的时钟和数据lane是否有信号DCS命令是否发送成功。我整理了一个排查顺序表实际用的时候按这个顺序走基本能定位到问题排查步骤检查项正常表现异常处理11.2V核心电压1.2V±5%纹波50mV检查LDO或DC-DC确认使能信号21.8V D-PHY电压1.8V±5%纹波30mV换低噪声LDO加滤波电容3复位引脚上电后由低变高稳定在3.3V检查RC延时确认GPIO配置4I2C通信能读到IT6625地址寄存器可读写检查上拉电阻确认I2C地址5HPD输出源端检测到HPD为高检查HPD配置确认上拉6EDID读取源端能正确读取EDID重新生成EDID校验和正确7TMDS时钟IT6625内部PLL锁定检查HDMI输入确认源端输出8DSI信号时钟和数据lane有HS信号检查DSI配置确认lane数量9DCS命令面板初始化成功检查命令表增加延时6.2 花屏或颜色异常色彩空间与像素格式的坑花屏或者颜色不对通常是色彩空间或者像素格式配错了。HDMI输入通常是RGB或者YCbCr 4:4:4MIPI DSI面板可能是RGB888、RGB666或者RGB565。如果IT6625的输出格式和面板不匹配就会出现颜色偏差或者花屏。另外色彩空间转换矩阵也要注意BT.601和BT.709的转换系数不一样配错了颜色会偏。我遇到过一种情况面板是RGB666但IT6625配置成了RGB888结果屏幕能亮但颜色明显偏红。后来把MIPI TX的像素格式改成RGB666问题解决。还有一种情况是HDMI输入是YCbCr 4:2:0但IT6625默认按4:4:4处理导致画面出现严重的色彩断层。这种需要在HDMI RX配置里正确设置输入格式。6.3 音频不出声I2S配置与HDMI音频解嵌IT6625支持HDMI音频解嵌通过I2S输出。如果音频不出声先检查HDMI源端是否真的在输出音频可以用示波器量I2S的BCLK和LRCLK。然后检查IT6625的音频配置寄存器确认音频采样率、位宽、I2S格式左对齐、右对齐、I2S标准是否和外部Codec匹配。我遇到过I2S的LRCLK极性配反的情况导致左右声道互换后来改了一个寄存器就好了。注意IT6625的I2S输出是Master模式BCLK和LRCLK由它产生。外部Codec要配置成Slave模式否则时钟会冲突。6.4 热插拔不稳定HPD与EDID的时序问题热插拔的时候源端会重新读EDID如果IT6625的EDID RAM还没有准备好源端可能读到无效数据导致不输出信号。解决方法是确保IT6625在上电之后尽快完成EDID RAM的初始化并且在HPD释放之前就准备好。另外HPD的释放时机也很关键太早释放源端可能还没准备好太晚释放用户体验不好。一般建议在IT6625初始化完成之后延时100ms再释放HPD。7. 选型对比与方案取舍7.1 IT6625与LT9611的对比龙迅的LT9611是另一颗常见的HDMI转MIPI芯片和IT6625定位类似。两者的主要区别在几个方面LT9611支持更高的分辨率可以到4K30而IT6625只到1920x1200LT9611的MIPI DSI支持更高的lane速率单lane可以到1.5GbpsLT9611的封装更小QFN64适合空间受限的场景。但IT6625的优势在于音频直通更成熟I2S输出更稳定而且ITE的参考代码更完善调试起来更省心。选型的时候如果你的面板是1080p或者1200pIT6625完全够用而且成本更低。如果要上2K或者4K那就得选LT9611或者别的方案。另外如果你需要HDCP 2.2IT6625只支持HDCP 1.4LT9611部分型号支持HDCP 2.2这个也要考虑。7.2 FPGA方案与ASIC方案的取舍用FPGA做HDMI转MIPI灵活性最高你可以自己控制缩放、旋转、叠加但成本和功耗也最高。Lattice的CrossLink系列有硬核MIPI D-PHY加上HDMI RX IP可以做完整的转换方案但FPGA本身的价格可能是IT6625的好几倍。ASIC方案比如IT6625成本低、功耗低、外围简单但功能固定不能做图像处理。我的建议是如果你只是做单纯的协议转换不需要图像处理那ASIC方案是首选。如果你需要做图像缩放、旋转、多路合成那FPGA方案更合适。还有一种折中方案用ASIC做协议转换前面加一颗Scaler芯片做图像处理但这样BOM会更复杂。7.3 电源芯片的选型与匹配IT6625的电源需求前面说过1.2V、1.8V、3.3V三路。1.2V可以用RT9013这类LDO但要注意压差和功耗。如果输入是5V1.2V的压差是3.8V电流300mA的话LDO上的功耗是1.14W发热会比较明显。这种时候建议用DC-DC比如TPS62130或者类似的同步降压芯片效率可以到90%以上。1.8V的D-PHY电源对噪声敏感建议用低噪声LDO比如TPS7A系列或者RT9013的低噪声版本。3.3V可以用普通的LDO或者DC-DC但要注意纹波不能太大否则会影响HDMI RX的灵敏度。8. 调试工具与实测经验8.1 I2C调试工具的选择调试IT6625的I2C最常用的工具是USB转I2C的适配器比如Total Phase的Aardvark或者国内的CH341A。Aardvark贵但稳定支持I2C和SPI配套的软件也好用。CH341A便宜但I2C速率有限适合低速调试。如果你用的是RK3566或者RK3588可以直接在Linux下用i2c-tools通过i2cdetect、i2cget、i2cset来读写寄存器。我个人的习惯是先用i2cdetect确认IT6625的I2C地址能扫到然后用i2cget读几个关键寄存器确认芯片活着。如果i2cdetect扫不到那就要查电源、复位和I2C上拉。如果扫到了但读写异常那可能是I2C速率太快可以降到100kHz试试。8.2 示波器与协议分析仪的使用调试HDMI和MIPI的时候示波器是必不可少的。HDMI的TMDS信号要用高带宽示波器至少1GHz以上才能看到1.485Gbps的眼图。MIPI D-PHY的HS信号速率更高需要2GHz以上的带宽。如果示波器带宽不够看到的波形会严重失真没法判断信号质量。协议分析仪方面HDMI可以用Teledyne LeCroy的协议分析仪MIPI可以用Total Phase的Komodo或者Introspect的MIPI分析仪。这些设备价格不菲一般小团队可能没有。如果没有协议分析仪可以用示波器加软件解码的方式虽然效率低一点但也能定位大部分问题。8.3 实测经验那些文档里不会写的细节第一个经验IT6625的I2C地址通常是0x4C或者0x4E具体看你的配置。如果你扫不到先确认地址对不对。第二个经验IT6625的寄存器写入之后需要一定的时间生效特别是PLL配置写完之后要等至少10ms再读状态。第三个经验MIPI DSI的HS速率不要设得太高留20%的余量否则信号完整性容易出问题。第四个经验如果面板的初始化命令表很长建议分段加载每段之间加延时避免I2C总线拥塞。还有一个坑IT6625的HDMI RX端对输入信号的抖动比较敏感。如果源端的TMDS时钟抖动比较大IT6625可能锁不住表现为画面闪烁或者间歇性黑屏。这种时候可以在HDMI输入前端加一颗去抖芯片或者换一个质量更好的源端。9. 写在最后一些个人体会做HDMI转MIPI这个方向IT6625算是一颗比较省心的芯片。它的集成度高外围简单ITE的参考代码也够用。但它的局限也很明显分辨率上限1920x1200不支持HDCP 2.2Scaler能力一般。如果你的项目刚好在这个范围内那IT6625是个不错的选择。如果要上更高的分辨率或者需要图像处理那就得考虑别的方案。我个人在实际操作中的体会是调试这类协议转换芯片最怕的不是芯片本身的问题而是电源和时序的问题。很多看起来像是芯片坏了的现象其实都是电源纹波太大、上电时序不对、复位没释放干净导致的。所以每次拿到新板子我都会先量电源和复位确认没问题之后再动I2C。这个习惯帮我省了很多时间。最后再分享一个小技巧如果你手头没有MIPI面板可以用一块MIPI转HDMI的转接板反过来接把IT6625的MIPI输出转成HDMI接到显示器上看。这样调试的时候不用一直盯着小屏幕效率会高很多。当然这个转接板本身也要配置但至少能让你快速确认IT6625有没有正常输出。
返回列表