☰
HDMI转MIPI桥接芯片IT6625:原理、配置与调试全解析
2026/9/27 1:02:45 网站建设 项目流程

做嵌入式显示的朋友,十有八九会撞上这样一件事:一边是电脑、电视盒子、游戏主机都默认支持的HDMI,一边是手机屏、平板屏、车载屏普遍采用的MIPI DSI,两边都是主流,但协议、电气规格、控制方式完全不一样。IT6625这颗芯片,就是专门在两者之间当翻译的。它把HDMI输入进来的TMDS串行视频流解出来,恢复成像素时钟和RGB/YCbCr数据,再按MIPI DSI的规范重新打包,通过高速差分lane送进屏幕驱动IC。硬件工程师能靠它省掉一整套FPGA方案,驱动工程师可以把它当作一个标准的HDMI转MIPI桥接器来调。这篇文章我写点实在的东西:这根“桥梁”到底是怎么架起来的,调通时哪些参数必须弄清楚,以及我踩过的一些坑。

1. 一颗芯片的本质工作:把两套接口语言互相翻译

1.1 HDMI和MIPI其实是两套完全不同的“方言”

很多人第一反应是:HDMI和MIPI不都是高速串行接口吗?难道不是电平转一下就行?实际完全不是。HDMI的物理层是TMDS,数据线4对(3对数据+1对时钟),信号经过8B/10B编码,内嵌行场同步、音频、辅助数据。HDMI源端对外输出的时候,根本不关心你后面接的是电视还是液晶模组,它只认两个东西:通过DDC通道读到的EDID,以及HPD引脚的电平。

MIPI DSI这边则是另一种生态。数据通道是D-PHY,一组时钟lane加1到4组数据lane,高速状态下是差分信号,低功耗状态下是单端LP信号。视频信号要拆成一个一个的包,长包传像素数据,短包传同步事件或命令。MIPI屏的驱动方式还分命令模式和视频模式,很多TFT屏上电以后必须先发一串初始化寄存器序列,否则就算有视频数据也不亮。

所以HDMI和MIPI之间,不只是物理接口换一下,而是整个通信模型都不一样。IT6625做的事情,拆开来看就是三个环节:先做HDMI接收,把TMDS串行流解码成并行视频数据;再做视频处理,对分辨率、色彩格式、时序参数做转换;最后做MIPI发送,把并行数据按DSI协议打包输出。

1.2 桥接的本质是“协议翻译”,不是“电平转换”

把桥接芯片理解成一颗带协议栈的转换芯片,就顺了。电平转换芯片(比如简单的信号缓冲器)只负责把电压域一变,或者把单端转差分,但IT6625这类芯片内部有完整的视频处理链路。HDMI那边进来的是一帧一帧的像素,包含时钟、DE、HSync、VSync,MIPI那边出去的是一个一个的包,里面有包头、像素负载、ECC/CRC校验。

打个比方,HDMI像是寄国际快递,东西打包好,贴了面单(EDID),快递员(源端)看面单知道往哪送;MIPI像是工厂内部传送带,零件(数据包)要按照固定节拍一件一件放进工位(屏幕驱动IC)。IT6625就是把国际快递拆开,重新按工厂节拍放上传送带。

这也就解释了为什么很多做硬件的人会踩坑:你以为是简单的线序问题,其实真正要调的是时序和包的格式。

1.3 这个桥适合用在哪里

IT6625这类芯片在三种场景最常见。第一种是HDMI信号驱动MIPI接口的显示屏,比如广告机、会议平板、工业一体机,主板只有HDMI输出,但屏是MIPI DSI,中间必须加桥接。第二种是采集类应用,把HDMI视频转成MIPI CSI信号给处理器采集,比如RK3588这类SoC本身没有HDMI输入,但有MIPI CSI接口,用这颗芯片可以做一个HDMI采集前端。第三种是信号转换盒,把HDMI转成MIPI接口,去接某些特殊显示模组或车载屏。

不管是哪种场景,思路都是一样的:先把输入链路搞定,再把输出链路搞定,两边对接成一个完整的时钟树。下面我从方案选型到实际调试,把整个链路拆开讲。

2. 方案选型:为什么用专用桥接芯片,而不是FPGA或者MCU

2.1 和FPGA方案比,省的不只是成本

每次有工程师问我能不能用FPGA实现HDMI转MIPI,我都说:能,但要想清楚代价。FPGA做这个事,需要MIPI D-PHY的硬核或软核,需要HDMI接收IP,还要处理EDID、HDCP、音频这些杂七杂八的协议。就算纯做视频直通,光是把MIPI RX/TX调稳定,就要耗费不短的开发周期。FPGA的引脚、电源、时钟设计复杂度也明显高于一颗专用桥接芯片。

IT6625走的是专用ASIC路线,芯片内部已经把HDMI RX、视频缩放/转换、MIPI DSI发送都集成好了。对大多数项目来说,一颗芯片加一个晶振加几个电容电阻就能工作,不需要写FPGA逻辑,也不需要买MIPI PHY的授权或IP。开发周期从按月算变成按天算。FPGA的优势是灵活,可以同时处理多路信号、做复杂的图像算法,但如果项目目标只是“把HDMI转成MIPI去点屏”,那用FPGA属于杀鸡用牛刀。

2.2 和SoC直接硬解比,节省主芯片资源

另一种常见的做法是SoC自带HDMI接口,比如某些主控芯片直接能输出LVDS或者RGB,但很多小型处理器没有MIPI DSI控制器,或者MIPI口被Camera占用了。这时候如果强行用SoC的RGB或者LVDS去转MIPI,需要额外的转换芯片,而且会占用主控的IO、内存和CPU开销。IT6625把协议转换卸载到自己身上,主控只需要通过I2C配置它,视频流走HDMI输入,MIPI输出,主控的负担非常低。

选型的时候有一个容易忽略的点:主控和桥接芯片之间是I2C控制关系,不是数据关系。视频数据走HDMI这路,I2C只是用来配置寄存器、读取中断状态。有些项目为了图省事,想用GPIO模拟I2C去配IT6625,我也试过,不是不行,但初始化时序长、调试不方便,建议还是用硬件I2C,频率至少100kHz以上。

2.3 选型必看的几个关键参数

用IT6625这类芯片前,先确认几个参数。输入侧要看支持HDMI 1.4还是2.0,最高分辨率到多少,支不支持3D和深色。输出侧要看MIPI支持DSI还是CSI,最多几组lane,数据率上限多大,是否支持MIPI D-PHY 1.2。分辨率换算时,要把HDMI带宽和MIPI带宽放在一起折算:比如1080p@60Hz,RGB888下像素时钟约148.5MHz,MIPI DSI如果是4-lane,每条lane数据率1Gbps,那理论带宽约4Gbps,足够传输;如果上4K@30Hz,像素时钟约297MHz,对lane数和速率的要求就高很多。

还要问清楚EDID管理。IT6625通常会预留EDID存储空间,或者从外部EEPROM读取,有些版本还支持动态改写EDID。EDID如果配置不对,源端很可能只输出低分辨率或者干脆黑屏。这一点一定不能靠猜。

3. IT6625的核心模块与配置流程拆解

3.1 输入侧:EDID、HPD和HDCP是三个连招

HDMI输入侧的工作,不是说把TMDS信号接进来就行,而是要先让源端“认识”你。源端上电后,会通过Hot Plug Detect引脚的电平来判断有没有设备连接。IT6625这边把HPD拉高,源端才会开始读EDID。EDID里写清楚支持的分辨率、刷新率、色彩格式、音频格式,源端根据EDID来调整输出。

调这块最容易出的问题是HPD和EDID互相配合不好。有的工程师先把HPD拉高,EDID还没来得及写入就被源端读取了,导致源端读到一个空EDID,后面就一直输出错误分辨率。正确的做法是先在桥接芯片里把EDID准备好,再拉HPD,必要时可以做一个HPD脉冲来通知源端重新读EDID。IT6625的状态机把不少流程自动化了,但初始化的先后顺序还是要注意看寄存器说明。

HDCP是另一个容易踩坑的地方。如果输入源设备启用了HDCP加密,桥接芯片没有正确完成HDCP认证,输出就会黑屏,或者源端直接降级到不加密的低分辨率。很多工业级应用其实不需要HDCP,但默认情况下芯片可能会尝试认证,如果你不接HDCP密钥,就要在配置里明确关闭HDCP,或者设置成“接收加密失败时自动跳过”。实际项目里,如果出现接某些盒子黑屏、接电脑正常的怪现象,十有八九和HDCP有关,先关闭HDCP测试。

3.2 输出侧:MIPI DSI的lane、时钟和数据包格式

MIPI DSI输出是IT6625真正干活的地方。首先要确定lane数量,一般支持1/2/3/4-lane,分辨率越高用的lane越多。第二要确定是视频模式还是命令模式。大多数TFT屏,尤其是用来做HDMI投屏的屏,支持视频模式(Video Mode),不需要频繁刷新;如果是带显示RAM的屏,可能要命令模式。IT6625的应用里,视频模式最常见,但视频模式下要配的参数特别多。

视频模式需要配置HSA、HBP、HACTIVE、VSA、VBP、VACTIVE这些时序参数,并且要和HDMI输入端解出来的时序对上。MIPI协议里还有BLLP(Blanking or Low-Power)机制,垂直和水平消隐期间可以选择持续输出高速时钟,也可以切换到LP状态。这个参数选错了,会出现屏幕上半部分正常、下半部分花屏,或者画面撕裂。

还有一个坑是数据包的格式。MIPI DSI像素数据的传输方式有RGB888、RGB666、RGB565之分,IT6625要做color depth conversion。如果你的HDMI源输出的是RGB888,而屏只支持RGB666,芯片要把格式转一下。这里会涉及像素如何打包进长包(long packet),以及word count对不对。调的时候用示波器看数据lane上的包结构,是最直接的验证方法。

3.3 I2C初始化序列:不是写一堆寄存器那么简单

IT6625的初始化本质上是通过I2C从机接口写寄存器。常见的流程是:上电,等待晶振稳定;配置系统时钟和PLL;配置HDMI RX;配置MIPI TX;最后使能输出。不同批次芯片的寄存器地址和值会不一样,这里我建议把所有初始化序列都放在一个表里,按顺序发送,并且一次初始化后要做一次回读校验。

我自己的做法是这样:先用芯片原厂提供的工具或者示例驱动,确认视频能正常输出;然后逐步精简寄存器,看看哪些是非必需配置,哪些是必须保留的。这样做的目的是为了Debug,万一以后初始化序列冲突了,能更快定位问题。很多工程师喜欢直接把原厂一大段数组贴进去,结果初始化顺序乱了,或者在某个寄存器上覆写错误,导致MIPI输出一直不稳定,这种情况并不少见。

4. 整条链路从PCB到驱动的调通实录

4.1 硬件设计:MIPI差分对比HDMI更容易被布局坑

PCB布局上,IT6625这类芯片的第一原则是:HDMI差分对和MIPI差分对要分开布线,尽量不要交叉,更不能把MIPI差分对跨分割。HDMI那边输入的是TMDS信号,差分阻抗要求通常按100Ω控制;MIPI D-PHY的差分阻抗一般是100Ω,但要注意单端阻抗也在50Ω左右,布线时按完整参考平面走最好。

热词里经常出现“MIPI同层挖空”,说的是有些PCB设计为了减少寄生电容,在MIPI差分对下方的参考层挖空,这个做法本身是为了匹配阻抗或削减回流噪声,但挖空不当会破坏参考平面,导致信号完整性更差。我的建议是:除非你有明确的仿真依据,否则不要随意挖空,优先保证MIPI差分对下方有连续地平面。

电源设计也不能偷懒。IT6625通常需要多路电源,内核电压、IO电压、模拟电压分开供电,上电顺序要满足手册要求。我踩过一个坑:内核电压和IO电压一起上电,结果I2C一直无响应,排查半天发现是上电时序不满足,芯片没有正常起来。现在我在任意桥接芯片项目里,都会把电源时序测试作为上电后的第一项检查。

4.2 先让HDMI端认识屏幕:EDID和HPD的实测过程

我把调试流程分成两步,先HDMI端,后MIPI端。所谓“HDMI端认识屏幕”,就是源端能正确读到EDID,并且锁定到一个合适的分辨率。用HDMI分析仪或者支持EDID读数的信号源,能直接看到源端读到了什么EDID。如果没有分析仪,就把IT6625的I2C接口挂到逻辑分析仪上,抓DDC的读取过程。

实测时我会把EDID内容导出来,跳过校验和之后,重点看Horizontal Addressable、Vertical Addressable、Pixel Clock、HDMI VSDB这几个字段。如果屏幕实际物理分辨率是1920x1080,EDID里却写了其他分辨率,源端可能输出奇怪的时序。有些项目为了兼容性,EDID里同时写多个分辨率,但IT6625要把源端的输出分辨率固定在某一档,这就需要在EDID里做手脚,把不需要的分辨率屏蔽掉。

HPD信号可以用万用表量,高电平说明桥接芯片通知源端“我准备好了”。如果HPD一直低,源端大概率不会输出。有的场景要求热插拔,就是HDMI线头拔掉再插上,HPD要重新拉低再拉高一次,这一块IT6625会自动处理,但前提是芯片没有进入异常状态。

4.3 再让MIPI端开口讲话:初始化面板与输出信号验证

HDMI端正常以后,MIPI端出来的信号如果屏不亮,就要从两个方向查。第一是屏的初始化命令有没有发对。很多MIPI屏驱动IC,比如ST7701S这类,上电之后必须通过MIPI命令模式发送初始化Sequence,设置伽马、电压、偏置、扫描方向等。桥接芯片只负责把视频包发出去,不会替你把屏的初始化命令准备好,所以这部分需要在主控或者桥接芯片支持的透传机制里处理。

第二是MIPI物理层的验证。用示波器探MIPI数据lane的HS信号,看高速传输时差分幅度是否达到D-PHY规范(通常约200mV),有没有明显的过冲或振铃。再看时钟lane是否连续,是否与Data对齐。MIPI D-PHY下有LP和HS两个状态,LP电压一般在1.2V左右,HS差分在200mV量级,如果示波器没设置好,很容易误判。

我遇到过一个很典型的例子:硬件工程师总觉得MIPI输出接线没问题,但屏幕就是花屏,最后用示波器量发现每组lane的极性全反了。MIPI的D-PHY里,lane正负极性接反会导致数据完全解不出来,屏幕表现可能是不亮,也可能是满屏雪花。线序和极性,一定要在画原理图时反复核对,这是最基础但最容易出问题的点。

4.4 驱动代码的框架参考

如果你是自己写Linux驱动,大概会涉及这几个文件:I2C设备驱动、视频接口配置、面板时序。下面我贴一个初始化流程的伪代码框架,具体寄存器值以芯片资料为准。

static int it6625_init(struct i2c_client *client) { // 1. 复位芯片,等待稳定 it6625_write(client, REG_SYSTEM_RST, 0x01); msleep(20); // 2. 配置输入EDID和HPD it6625_edid_load(client, edid_data); it6625_write(client, REG_HPD_CTRL, 0x01); // 拉高HPD // 3. 配置HDMI接收 it6625_write(client, REG_HDMI_RX_CFG, 0x00); it6625_write(client, REG_HDMI_CLK_CFG, 0x23); // 4. 配置MIPI输出参数 it6625_write(client, REG_MIPI_LANE_NUM, 0x03); // 4-lane it6625_write(client, REG_MIPI_PIXEL_FMT, FMT_RGB888); it6625_write(client, REG_MIPI_HACTIVE, 1920); it6625_write(client, REG_MIPI_VACTIVE, 1080); it6625_write(client, REG_MIPI_HSA, 2); it6625_write(client, REG_MIPI_HBP, 40); it6625_write(client, REG_MIPI_VBP, 10); // 5. 使能输出 it6625_write(client, REG_MIPI_EN, 0x01); // 6. 读中断状态确认无报错 ret = it6625_read(client, REG_INT_STATUS); if (ret & ERR_HDMI_NO_LOCK) { dev_err("HDMI not locked\n"); } return 0; }

注意MIPI的HSA、HBP这些值,和屏厂规格书给的时序参数必须严格对应。有些屏要求HSA不能太小,否则会有竖条纹;有些屏要求HBP必须覆盖某个范围。IT6625内部会有一定的容错,但时序参数越准,越不容易出现边界问题。调这个有一个好习惯:先把屏厂提供的初始化Sequence和时序参数整理成一张表,再和寄存器配置逐项核对。

5. 常见问题与排查技巧实录

现象可能原因排查方向
完全黑屏EDID配置错误、HPD没拉高、HDCP认证失败检查I2C是否能读写,EDID是否有效,HPD电平,关闭HDCP测试
花屏MIPI lane极性反、lane数配置错、像素格式不对用示波器看HS差分信号,核对lane映射和寄存器
闪烁或者间歇性黑屏电源纹波大、MIPI差分对阻抗不连续、HDMI时钟抖动检查电源电容、差分阻抗、HDMI线材
有画面但颜色不对色彩空间转换配置错、RGB/YCbCr没有对齐确认像素格式和色彩空间转换寄存器
画面偏移或上面少一截HSA/HBP/HACTIVE时序不对对照屏规格书,逐步调整消隐参数
连接某些HDMI源不识别EDID格式不规范、HPD时序有问题用分析仪抓DDC,重新生成EDID
I2C无响应芯片未正常上电、地址配错、复位引脚被拉低量电源、时钟、复位、I2C地址

5.1 黑屏不等于芯片坏,先查出在哪一环断的

我见过许多工程师一旦黑屏就怀疑芯片焊接问题,其实黑屏通常发生在链路早期。用I2C能读写、HPD正常、但源端没有输出,说明卡在HDMI链路;如果源端正常输出、MIPI输出无波形,说明卡在MIPI配置或者面板初始化。从源端到芯片再到屏幕,这个链路可以拆成五个节点:HDMI源端的TMDS输出、IT6625的输入锁定、IT6625的MIPI输出、面板端的MIPI接收、面板背光控制。黑屏时沿着这五个节点逐个量,一个小时就能定位。

特别提醒,有些屏的背光控制和MIPI是分开的。MIPI信号已经正确、屏幕也应该显示了,但背光没开,看起来还是全黑。这时候用强光手电照屏幕,如果有淡淡的图像,就是背光问题。这个低级错误在初学阶段很容易犯,多留意一下。

5.2 花屏和闪屏,多数是时序和信号完整性问题

花屏比黑屏更难调,因为它说明MIPI通道已经传数据了,但数据内容或者时序不对。先看像素格式,如果HDMI源输出RGB888,但MIPI配了RGB666,那颜色会失真但不一定花;真正的花屏往往是HACTIVE或者VACTIVE和屏的实际尺寸不匹配,导致行场计数错位。还有一个经常被忽略的参数是MIPI的“sync event”还是“sync pulse”。视频模式下,同步信息可以通过Short Packet里的Sync Event发送,也可以通过同步脉冲来对齐。面板如果不支持sync event方式,就会出现整屏偏移。

闪屏可能是电源纹波问题。MIPI高速传输时,瞬间需要的电流比静态大很多,如果电源反馈环路慢,电压会有明显跌落,屏幕表现为间歇性闪烁。我在设计时要求IT6625的电源尽量靠近芯片引脚放0.1uF和1uF电容,并且用一个小一点的磁珠做电源隔离,实测对闪屏改善很明显。

5.3 我调HDMI转MIPI的一点体会

这类桥接芯片项目,最考验人的往往不是芯片本身,而是对输入输出两侧协议的理解。HDMI侧要照顾好EDID、HPD、HDCP,这三者少一个都不行;MIPI侧要把时序、lane、包格式、面板初始化全部对齐。芯片本身并不神秘,它就是一个协议状态机,但你得按它的节奏来。

如果你手里拿到一块IT6625的参考板,最稳的办法是先照着参考设计画板,先把原厂的驱动跑起来,再去做改动。我做第一版的时候总想顺便做点“优化”,比如把MIPI差分对走线换层,结果换层处的阻抗突变直接导致花屏,后来老老实实参考原厂设计才稳定下来。电子产品设计就是这样,走通一条路以后,你才知道哪些地方动了会出问题,哪些地方可以大胆调整。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询