前阵子做一台带屏幕的设备,主控板这边只预留了DisplayPort数字输出,而屏模组偏偏是一块标准的MIPI DSI接口——两块硬件对不上,整个方案差点卡在接口选型上。最后绕了一圈,用了IT6510这颗4通道DisplayPort 1.2转4通道MIPI-CSI/DSI转换器,才把问题解决。整个过程涉及选型、带宽核对、原理图设计、驱动配置和调试踩坑,信息量不算小,这篇就完整复盘一遍,给正在做类似桥接方案的同行一个参考。
如果你手头的东西也是“上游只有DP、下游只有MIPI”的状态,不管方向是显示还是摄像头采集,这篇文章都值得看完。我尽量少讲废话,把真正影响点亮和设备稳定的细节一次说清楚。
1. 这颗芯片要解决的核心矛盾:信号源有DP,外设只有MIPI
1.1 一个典型到几乎不用讨论的选型场景
现在很多嵌入式平台的视频输出越来越倾向DisplayPort协议。DP接口本身带宽高、管脚少、支持长距离传输,也便于做Type-C形态的复用,所以无论是工控主板、迷你主机还是带DP输出的处理器方案,都会把DP当成默认显示出口。但另一头,市面上的液晶模组却大量停留在MIPI DSI接口,尤其是从手机/平板供应链流出的屏幕,驱动IC、背光、FPC统统是按DSI设计的。
这两种总线协议完全不同,直接拿线对接是不可能的。常规思路有三种:换主控、换屏幕、加桥接。换主控意味着整块板子的核心方案要变动,代价极高;换屏幕看着简单,但结构开模、亮度色域、供货渠道都要重新评估,周期也熬不住。这时候加一颗桥接芯片就成了最实际的路径,而IT6510的角色就是DP信号源与MIPI外设之间的翻译官。
“4通道DisplayPort 1.2转4通道MIPI-CSI/DSI”这句话已经说明了它的两个核心参数:DP输入端支持标准1.2规范的4条lane,MIPI输出端同样给出4条数据lane,协议方向同时覆盖CSI(摄像头输入)和DSI(显示器输出)。换句话说,它既可以用来点亮一块DSI屏幕,也可以把DP发送过来的视频流转成CSI信号喂给带摄像接口的应用处理器。
1.2 DSI和CSI:同一个芯片的两种人生
经常有工程师觉得“支持DSI和CSI”就是一颗芯片搞定所有屏和摄像头,实际用起来根本不是一回事。DSI面向显示,MIPI总线上走的是RGB像素流,由Host端主动发送像素数据和同步信号,时序上必须严格配合屏幕的blanking参数。CSI面向摄像头采集,数据方向以Sensor端输出为主,携带行同步、帧同步和像素格式信息,接收端要做的是解析维度不同的MIPI包。
IT6510把这两种模式合并到一个芯片里,板级硬件绝大部分可以共用,但初始化配置、寄存器含义、同步信号的方向链路完全不一样。我在项目里主要用DSI方向点亮屏幕,CS方向在实验室做过视频采集验证,后面的章节会分开讲,避免混淆。
1.3 为什么不用“叠罗汉”方案
有朋友建议我“DP先转LVDS,再从LVDS转MIPI”,理由是这两类转换芯片出货量大、采购容易。我试了一下原理图方案,立刻否掉。多一级转换意味着多一组时钟、多一轮信号调理,延迟、EMI、功耗都在往上叠加,而且还多占一版PCB面积。更麻烦的是,两级芯片的时序参数互相牵制,一旦屏幕点不亮,你根本不知道是前一转换器没配好,还是后一级没跟上前一级的节奏。
用IT6510这类单芯片直转方案,最大的好处是问题域清晰:DP侧一套寄存器,MIPI侧一套寄存器,中间由芯片内部完成映射。排查链路短,调试路径也就更可控。
2. 带宽账本是怎么算的:DP/MIPI速率换算不是做除法
2.1 两边链路的物理层“能力”先写清楚
我见过不少项目在选型阶段只看分辨率,不看色深,更不看刷新率,结果板子回来点亮才发现带宽不够。所以动手画原理图之前,最好把两边的物理带宽老老实实算一遍。
DisplayPort 1.2规范下,每lane有三档速率:RBR(1.62Gbps)、HBR(2.7Gbps)、HBR2(5.4Gbps),因为采用8b/10b编码,实际每lane有效数据带宽要乘以0.8。4条lane用HBR2时,总有效带宽理论上限为:
5.4Gbps × 4 × 0.8 = 17.28Gbps
这个数字对绝大多数显示分辨率都足够宽裕,所以DP侧基本不构成瓶颈。
MIPI这边要分开说。D-PHY物理层在HS(高速)模式下,不同版本的PHY能力不同,常见典型速率在每lane 1.0Gbps到1.5Gbps之间,部分PHY可以跑到2.5Gbps。标题里“4通道”指的就是4条数据lane,如果按保守的1.5Gbps/lane计算,总带宽是:
1.5Gbps × 4 = 6Gbps
这里没有被8b/10b这样的编码吃掉带宽,但MIPI链路传输中仍需插入同步序列、Escape模式、LP指令等开销,实际可用带宽会比理论值再打一点折扣。所以工程上算账时,我习惯按总带宽的85%到90%作为可持续可靠值的红线。
2.2 1080p@60和1440p@60,两个账各算一遍
先看最普及的1080p60,RGB888(即每像素24bit)输出。1080p60的像素时钟是148.5MHz,数据率约为:
148.5MHz × 24bit = 3.564Gbps
这是有效像素的数据量。如果把行场消隐(blanking)也算进去,MIPI DSI的传输过程同样需要为每行留出HFP/HBP/HSA,为每帧留出VFP/VBP/VSA,总线上实际流量会明显高于像素数据率,通常需要在这基础上再加20%~25%。算下来总需求大约在4.3Gbps附近,4条lane按1.5Gbps跑,还留有接近30%的余量,所以1080p60点起来没有任何压力。再加上DP侧HBR2只是“小跑”,链路稳定度相当高。
再看2560x1440@60。这块面板的像素时钟按标准CVT时序约241.5MHz,RGB888有效数据率为:
241.5MHz × 24bit = 5.796Gbps
加上blanking开销之后,大致会到7Gbps左右。这个数字已经非常接近甚至超过4条lane按1.5Gbps计算的6Gbps红线。实际能不能做,取决于这颗芯片的MIPI PHY是否支持2.5Gbps/lane,或者屏能不能妥协到18bit色深(每像素少了6bit,带宽需求下降约25%)。如果两者都不行,硬上1440p60大概率会出现闪烁、花屏或链路不稳定。
2.3 Blanking、色深和压缩:账算错了会误判
带宽计算里最容易踩的坑是忽略blanking。有些需求文档只写“分辨率1920x1080,60Hz”,没写像素时钟。实际上1080p只是标准时序下的1280x720那样有“默认”参数,一旦采用非标准时序、或者MIPI侧使用burst mode,每行允许的数据传输时间窗口会变化。如果按像素有效时间直接算,然后照着满带宽去配,链路就会长期工作在临界状态,稍微遇到点干扰就挂掉。
还有色深。现在不少屏支持18bit/24bit/30bit切换,转换芯片往往也可以配置。30bit的带宽需求比24bit高出25%,而人眼对多数商务场景下18bit和24bit的差异并不明显。带宽实在紧张时,适当降色深是最省事的出路。
至于DSC压缩,我不建议在这个项目里一开始就寄希望于它。如果IT6510这版固件支持DSC,那确实可以把4K60的码流压到4-lane MIPI可以承受的范围;但DSC要求源端也支持该压缩标准,主机的显卡或SoC必须能够产出DSC编码流,这不是仅靠桥接芯片单方面能解决的。所以选型时先默认不支持DSC,算出物理带宽够不够才稳妥。
3. 硬件设计阶段容易忽略的六个细节:从参考时钟到差分走线
3.1 电源域与上电时序
IT6510这类转换芯片内部通常同时存在数字核心、PLL、DP PHY、MIPI PHY,不同模块对电源的要求不一样,也不会共用一颗1.8V就可以无脑跑。原理图阶段务必把数字电源、模拟电源、IO电源分开处理,每路都配上足够的去耦电容,特别是1.8V到PLL供电之间,建议加磁珠形成单点隔离。
上电时序同样重要。实际踩过的教训是:如果MIPI侧的IO电源先于核心电源起来,芯片内部逻辑可能出现闩扣风险,轻则启动异常,重则损伤PHY。安全的做法是严格按芯片手册给出的电源轨顺序执行,如果主控不方便在GPIO上做时序,可以用电源监控芯片专门控制各路enable。
3.2 参考时钟和PLL的关系
很多人把参考时钟当成“只要有25MHz或27MHz晶振就能跑”,实际上桥接芯片内部的DP PHY和MIPI PHY共用时钟树的场景很常见。DP侧的时钟恢复电路需要干净的低抖动参考,MIPI侧的DDR采样也需要稳定基频,一旦时钟抖动指标超标,DP链路训练可能反复失败,MIPI输出画面也会出现周期性的抖动或花屏。
设计时优先选用芯片厂商推荐的晶振频率,而不是从“手头有什么”的角度凑合。晶振到芯片的走线要短,旁边加大地铜皮隔离,不要和开关电源的电感太近。如果主控可以直接输出参考时钟,务必确认波形质量,别一股脑直接接到芯片时钟脚。
3.3 差分线:DP和MIPI的等长与阻抗
DP侧差分对和MIPI侧差分对的阻抗要求并不完全相同。DisplayPort一般要求100Ω差分阻抗,MIPI D-PHY通常也按100Ω设计目标。虽然数值上看类似,但两边的走线层、参考平面、线宽线距要根据实际叠层单独调整,不能照抄一种参数。
等长控制方面,DP lane组内要做到尽量等长,lane group之间也不能偏太多;MIPI侧每个数据lane必须和时钟lane对齐,芯片规格书里通常给出lane到lane的偏差要求,比如控制在某一皮秒值内。实践中的做法是先在PCB Layout里为MIPI时钟lane和数据lane设等长约束,再为DP侧设另一组等长约束,不要混着约束。
另外过孔是差分信号的隐形杀手。同一对差分线打过孔时,最好两个过孔对称放置,并尽量压缩过孔数量。我调试过一块板子,MIPI时钟lane多打了一对过孔,结果信号完整性明显恶化,最后通过缩短走线长度才救回来。
3.4 I2C、HPD、INT:三个调试必备的引脚
桥接芯片通常提供I2C从接口用于配置,调试时必须把这些引脚引到主控的I2C总线,同时预留测试点。HPD(热插拔检测)则是DP源端判断Sink设备是否在线的重要信号,芯片侧一般会输出/接收HPD状态,不接对会导致源端压根不发起链路训练。
INT/IRQ引脚用来上报链路状态变化、训练结果等事件。我建议3.3V电平域合适的话直接接到主控的一个外部中断输入,这样当DP链路掉线时主控能第一时间感知并重新初始化,而不是黑屏了都不知道。
3.5 EEPROM自动配置:量产时能省很多事
如果产品量产数量大,每次上电都靠主控I2C写入全套寄存器,既占启动时间,也容易出现漏配。很多此类芯片支持外挂一颗EEPROM,上电时自动加载配置,实现“免驱动启动”。硬件设计时给EEPROM留好位置和I2C地址跳线,调试阶段用主控写入,量产阶段切换成自动加载,灵活度会高很多。
我实际体会是,EEPROM方案特别适合工控类设备,因为主控端的固件往往不想频繁改,显示参数变化时只更新一颗存储芯片即可。
3.6 地平面完整性与散热
DP和MIPI都是高速信号,参考地平面必须连续。在差分走线下方切地是高速设计大忌,一旦被分割,阻抗不连续必然反射,轻则链路裕量下降,重则直接训练失败。靠近连接器位置的地,建议用完整铜皮铺满,再通过多个过孔连接内层地。
散热方面很容易被低估。桥接芯片内部同时处理DP解码、MIPI编码,高分辨率运行一段时间后温度不低。如果产品是密封外壳,最好在芯片焊盘下加散热过孔,PCB背面对应位置铺铜,必要时增加导热垫接触外壳。
4. 从上电到点亮:链路训练与寄存器配置的完整流程
4.1 上电先看什么:I2C通信与芯片识别
拿到新板子第一件事不是写MIPI参数,而是确认芯片内部的I2C从机是否响应。先用I2C扫描工具把总线上的设备地址找出来,再读取vendor ID和device ID,和规格书里核对。这个动作能一次性验证电源、时钟、I2C引脚、复位状态四个基础条件,排错效率非常高。
# 以Linux i2c-tools为例,先看总线2上有哪些设备 i2cdetect -y 2 # 假设芯片地址为0x50,读取两个ID寄存器做确认 i2cget -y 2 0x50 0x00 i2cget -y 2 0x50 0x014.2 DP侧:和源端握手的过程
DisplayPort链路建立依赖“链路训练”机制。DP源端通过AUX通道读取Sink设备(也就是IT6510)的DPCD寄存器,确认最多支持多少lane、最高支持什么速率,然后开始发送训练序列,调节电压摆幅和预加重,Sink端把训练是否成功的状态写回DPCD的STATUS寄存器,源端再决定是否调整参数重试。
这个阶段我见过最多的问题是:
- 源端坚持使用某个固定lane/rate组合,而桥接芯片当前配置只接受了更低模式,两边反复COM失败;
- AUX通道上出现持续高电平,说明总线电平定义不对或上拉电阻异常;
- 芯片内部复位未完成,DPCD寄存器读到全0xFF,源端以为Sink不存在。
调试时建议通过I2C访问芯片对应的DPCD镜像寄存器,把“源端认为链路状态”和“芯片实际接收状态”对照起来看,不要靠示波器盲猜。
4.3 MIPI侧:时序参数填写
MIPI DSI/VOD色深、lane数、时钟频率要在寄存器里明确配置。尤其要向屏幕规格书逐项核对HSA、HBP、HFP、VSA、VBP、VFP等参数,很多屏开机无显示都是背景档期(blanking)参数配错导致的。
我习惯将屏幕规格书中的数据整理成一张表,然后对照芯片寄存器说明逐项填写。要注意DSI接口有两种同步方式:同步事件(Sync Event)和同步脉冲(Sync Pulse),不同驱动IC支持的格式不一样,配错了屏幕能点亮但有概率出现水波纹或局域异常。
还要注意MIPI HS传输时“时钟lane”和“数据lane”的极性设置。多数屏是默认正极,但也存在反向极性的模组,一旦极性反了,屏幕上可能是全黑或激烈闪烁。
4.4 点亮自检清单
把整个点亮过程归纳成一张可复用的清单,遇到问题按顺序排查:
- I2C扫描能否发现芯片地址。
- 芯片vendor/device ID是否匹配。
- DP源端是否发起链路训练,DPCD中链路状态是否为Lane Count=4、Rate=HBR2。
- MIPI侧是否输出HS时钟,用示波器探头在测试点能否看到约1GHz左右的时钟翻转。
- 屏幕初始化命令有没有通过I2C之外的专用接口正确下发(有的屏需要额外初始化序列)。
- 背光、复位、电源使能引脚电平是否正确。
这个清单能过滤掉七八成常见问题。
5. 实测中容易翻车的三个方向:DPCD回读、MIPI时序与EMI
5.1 DPCD回读:不要靠猜
有一次调试某项目时,源端软件日志显示HBR2训练成功,但画面始终不输出。我开始怀疑MIPI配置,查了半天没结果。后来通过I2C读芯片的DPCD状态寄存器,发现第四对lane的实际接收状态一直是“未锁定”。换了一个DP插头之后恢复正常,才意识到是信号源侧连接器的一根触针接触不良,导致lane信号缺失。
这件事之后我养成了习惯:只要链路有问题,先读DPCD状态位,用数据说话。Lane status寄存器里有每一位的“接收信号正常”和“符号锁定”标志,哪一路没有锁定一目了然。
5.2 MIPI时序:换线材、换屏幕后的“玄学黑屏”
MIPI接口对FPC走线长度和阻抗非常敏感。同一个IT6510方案,用15cm的FPC连接屏可能一直正常,换成25cm的FPC后开机只有背光没有画面,或者偶尔画面左右抖动。
这属于典型的时序裕量不足。MIPI在HS模式下,数据和时钟之间要求建立保持时间,FPC一长,阻抗不连续和串扰都会上升。解决思路不是直接加驱动强度,而是先确认:
- 线缆是否为屏蔽FPC,地线是否充分;
- MIPI数据lane到时钟lane的延迟偏差是否超过芯片/接收端要求;
- HS-Trail和HS-Exit等时序参数是否按更长线缆重新计算。
在某些情况下,把MIPI TX的驱动电流从默认值调高一档就能救回,但这不是无代价的,驱动电流增加会提升功耗和EMI,所以能靠缩短FPC解决就不依赖改寄存器。
5.3 CSI方向:采集场景的另类坑
如果是用IT6510做DP转CSI的视频采集链路,要注意的问题和显示方向很不一样。CSI接收端关心的是虚拟通道ID、数据类型(RAW/YUV等)、帧同步信号从哪里来,以及MIPI连续时钟还是非连续时钟模式。
我用某图像处理Demo验证时遇到的坑是:CSI接收端配置了2路虚拟通道,而桥接芯片默认只在一个通道上发数据,导致接收端始终得不到有效图像。另外,CSI模式和DSI模式的寄存器配置存在部分共用字段,从显示改成采集时,最好重新初始化全芯片参数,而不是只修改几个被标注为CSI相关的寄存器,残留的DSI配置很容易干扰同步解析。
最后说一点个人体会
这类DP/MIPI桥接芯片,不是“焊上去就能出活”的器件,但它解决的链路痛点非常实在。我做了几个轮次的项目之后,最深的两条经验是:第一,选型阶段一定要把带宽账算足,分辨率、刷新率、色深三个变量缺一不可,很多后续调试的苦都是选型时埋下的;第二,硬件上把I2C和HPD测试点留出来,再贵的板子都不差这几个Teat Point,但调试时能帮你节省大量来回飞线的时间。产品设计总会有各种各样的接口不匹配,遇到的时候先别急着改大方案,算清楚两边物理层的家底,找一颗合适的桥接芯片,往往是最小成本的那条路。