1. 项目概述:从一块核心板到完整显示系统的构建
最近在基于瑞芯微RK3568设计一款工业平板电脑的底板,显示接口部分是重中之重。客户要求同时支持LVDS和MIPI-DSI两种屏幕,并且要能灵活切换。这听起来像是把两个不同“方言”的显示系统塞进同一个“房间”里,LVDS是老牌且稳定的“本地话”,而MIPI则是高效紧凑的“新潮语”。刚开始画原理图时,我对着RK3568那颗BGA芯片底下密密麻麻的Ball,心里直打鼓:引脚复用怎么搞?电平匹配怎么做?信号完整性如何保证?任何一个细节没处理好,轻则屏幕花屏闪烁,重则根本点不亮。这个笔记,就是记录我在设计RK3568底板LVDS和MIPI电路时,从芯片手册解读、接口标准分析到具体电路实现的全过程踩坑与填坑经验。无论你是正在画第一块RK3568底板的硬件新手,还是想深入理解这两种显示接口差异的开发者,希望这些实打实的电路分析和硬件设计细节能帮你避开我走过的弯路。
2. RK3568显示接口能力深度解读与选型思考
拿到RK3568的芯片手册,第一件事就是搞清楚它的“家底”——到底能同时驱动多少显示设备,以及这些显示接口是如何通过复用引脚“挤”出来的。RK3568的显示子系统主要由一个VOP(Video Output Processor)和多个物理接口组成。VOP可以理解为一个强大的视频渲染引擎,它能处理多图层叠加、旋转缩放,但最终要把处理好的像素数据“送出去”,就得靠物理接口。
RK3568通常提供两路显示输出通道,但这两路通道的具体物理形态非常灵活。最常见也最实用的配置是:一路LVDS加上一路MIPI DSI。为什么是这种组合?这得从两种接口的应用场景说起。LVDS接口在工业界、车载和中大尺寸液晶屏(10寸以上)中几乎是标配,它的优势是传输距离相对较远(可达几米)、抗干扰能力强、接口标准统一(虽然也有JEIDA和VESA两种数据映射格式,但物理层一致)。而MIPI DSI则是移动设备(手机、平板)和小尺寸屏的绝对主流,它用更少的信号线(通常4对差分数据线+1对差分时钟线)实现了高速数据传输,功耗和EMI性能更好,非常适合空间紧凑的设备。
在RK3568上,这两路接口的引脚是复用的。具体来说,LVDS_TX/RX和MIPI_DSI的差分对信号线,共用着同一组GPIO。这意味着你在硬件设计之初就必须做出选择:这一组引脚,我是配置成LVDS用,还是MIPI用?它不能同时既是LVDS又是MIPI。这个选择会直接体现在你的原理图连接和后续的设备树(DTS)配置中。例如,RK3568的LCD0_MIPI_D0P/N到D3P/N这四对差分线,既可以作为MIPI DSI的4条数据通道,也可以被配置为LVDS的其中一部分数据线(LVDS通常需要4对或5对差分数据线)。
注意:引脚复用的硬件锁定。一旦你在硬件上把某组差分线连接到了LVDS连接器,那么在软件上就无法再将其用作MIPI了,反之亦然。这个决定必须在画原理图时就敲定,后期无法通过软件更改。因此,在布局阶段就要想好产品的显示需求:是否需要双屏异显?主屏用哪种接口?备用屏接口是否保留?这直接决定了你如何分配这些宝贵的引脚资源。
3. LVDS接口硬件设计:不仅仅是连接那么简单
确定了使用LVDS,接下来就是具体的电路实现。很多人以为LVDS就是直接连几对差分线,其实里面的门道不少,尤其是涉及到端接和共模电压。
3.1 LVDS发送器端电路设计
RK3568内部集成了LVDS发送器(Tx),这省去了外接LVDS编码芯片的麻烦和成本。我们的工作就是把这个发送器正确地引出来,并匹配到屏幕的接收器。一个典型的LVDS通道包含:3对或4对数据差分对(TXOUT*0P/N,TXOUT*1P/N...),1对时钟差分对(TXOUT*CLKP/N)。对于RK3568,我们通常使用4对数据+1对时钟的格式,也就是所谓的“4通道”LVDS。
关键设计点一:差分走线与阻抗控制这是LVDS信号完整性的基石。LVDS的差分阻抗要求是100Ω。这意味着从RK3568芯片引脚到LVDS连接器,再到PCB另一端的屏幕连接器,这对差分线(P和N)在整个路径上必须保持100Ω的差分阻抗。在四层或六层板中,我们通常通过控制走线宽度、线与线之间的间距以及参考平面的距离来实现。使用PCB设计软件的阻抗计算工具(如SI9000)提前计算好叠层和线宽线距是必须的步骤。我的经验是,尽量让LVDS差分线走在内层(如L2或L3),用地平面作为参考,这样受外部干扰最小,阻抗也最容易控制。
关键设计点二:发送端端接电阻查看RK3568的数据手册,你会发现其LVDS发送器输出内部通常已经集成了100Ω的端接电阻。这是一个非常重要的信息!这意味着在大多数情况下,你不需要在PCB上的发送端(靠近RK3568一端)再额外放置一个100Ω的端接电阻。如果画蛇添足地加上,反而会导致阻抗失配,信号反射加剧。所以,我的原理图上,从RK3568的LVDS差分引脚出来,直接通过耦合电容就连接到连接器了。
关键设计点三:交流耦合电容这是LVDS接口的标配。必须在每一对差分信号线上(包括时钟对)串联一个100nF的电容,位置尽量靠近发送端(RK3568)。这个电容的作用是“隔直通交”,阻断发送器和接收器之间的直流偏置,避免因两者共模电压不同而导致电流过大损坏器件。电容的耐压值一般选16V或25V,封装用0402或0201,以减小寄生参数。
关键设计点四:电源与滤波RK3568的LVDS发送器需要干净的电源,通常是VCCIO3(也可能是AVDD_LVDS,具体看芯片手册)。这个电源引脚附近必须放置足够且有效的去耦电容。我的做法是:一个10uF的钽电容或陶瓷电容(针对低频噪声)+ 一个0.1uF的陶瓷电容(针对高频噪声),尽可能靠近芯片的电源引脚放置。干净的电源是稳定眼图的保证。
3.2 一个完整的LVDS接口原理图模块示例
以下是一个简化的RK3568 LVDS接口原理图设计,包含了上述所有要点:
// 注意:此为示意图,非完整原理图网表 // 1. 电源部分 VCCIO3 (3.3V) ----> [Ferrite Bead] ----> AVDD_LVDS (Pin on RK3568) | [10uF] + [0.1uF] to GND // 2. 数据通道0 (以一对为例) RK3568_LVDS_TX0P ----> [100nF, C1] ----> CONNECTOR_PIN_A1 (LVDS_D0_P) RK3568_LVDS_TX0N ----> [100nF, C2] ----> CONNECTOR_PIN_A2 (LVDS_D0_N) // 注意:PCB上,C1和C2应对称摆放,走线等长,差分阻抗100Ω。 // 3. 时钟通道 RK3568_LVDS_CLKP ----> [100nF, C5] ----> CONNECTOR_PIN_A7 (LVDS_CLK_P) RK3568_LVDS_CLKN ----> [100nF, C6] ----> CONNECTOR_PIN_A8 (LVDS_CLK_N) // 4. 屏幕端(接收端)端接 // 在屏幕的FPC或板子上,通常会在LVDS接收芯片的输入端,在每对差分线之间并联一个100Ω电阻。 // 这个电阻一般由屏幕模组厂商集成,我们无需在底板上设计。实操心得:LVDS连接器的选择。工业上常用的LVDS连接器有针座和夹子式两种。对于需要频繁插拔或振动的环境,我更喜欢用带锁紧机构的夹子式连接器(比如Hirose的DF40系列),虽然成本高一点,但可靠性极好,避免了因接触不良导致的花屏问题。选型时一定要确认引脚定义顺序是否与你的信号线序匹配,常见的30pin LVDS接口就有好几种排列标准。
4. MIPI DSI接口硬件设计:应对高速信号的挑战
MIPI DSI的设计逻辑与LVDS有相似之处,但更侧重于应对高达1Gbps以上的高速串行信号。RK3568的MIPI DSI接口通常支持1-4个数据通道(Lane),每个通道包含一对差分信号(Dp/Dn),外加一对始终存在的差分时钟信号(Clkp/Clkn)。
4.1 MIPI DPHY信号完整性设计核心
阻抗控制:MIPI D-PHY的差分阻抗标准也是100Ω。这一点与LVDS相同,所以PCB叠层和差分线宽线距可以复用LVDS的设计规则。但MIPI的频率更高,对走线质量的要求更为苛刻。
等长匹配:这是MIPI设计中的重中之重。不仅要求同一通道内的Dp和Dn两根线要等长(长度差通常控制在5mil以内),更要求所有数据通道(Lane)之间的走线长度也要匹配。例如,你的DSI使用了2个数据通道(Lane0和Lane1),那么从RK3568到连接器,Lane0的走线总长和Lane1的走线总长之差应尽可能小(一般建议小于50mil)。时钟通道(CLK)的走线长度,则应参考数据通道的长度,并遵循芯片手册的推荐(有时要求时钟线比数据线长一点,作为时序参考)。在PCB设计软件中设置好“匹配长度组”(Match Group)规则,让软件自动帮你蛇形绕线,是提高效率的关键。
交流耦合电容:与LVDS类似,MIPI DSI的每个数据通道和时钟通道上都必须串联交流耦合电容。容值通常是100nF。这个电容必须放置在靠近发送端(RK3568)的位置。它的作用同样是隔离直流分量。这里有一个极易出错的点:电容必须使用高频特性好、容值精准的陶瓷电容(如NP0/C0G材质),千万不要用材质为X7R或Y5V的普通电容,它们在高速信号下的性能很差,会导致信号边沿变缓、眼图闭合。
4.2 MIPI接口的额外控制信号
除了高速差分信号,MIPI屏幕通常还需要一些低速控制信号:
- 复位信号(RESET):用于对屏幕模组进行硬件复位。这是一个关键信号,必须由RK3568的GPIO控制,并且上电时序要正确。我通常会预留一个测试点,方便测量复位时序。
- 背光使能(BL_EN)和背光调光(PWM):这两信号控制屏幕背光。BL_EN是开关,PWM用于调节亮度。它们一般连接到RK3568的PWM输出引脚和普通GPIO。背光电路的驱动电流可能较大,可能需要用GPIO控制一个MOS管来驱动。
- I2C或SPI:用于初始化屏幕驱动IC(如常见的ST7701S、ILI9881C等)。RK3568需要通过这个总线读取屏幕的EDID信息或直接发送初始化命令序列。这部分电路就是标准的I2C/SPI,加上拉电阻即可。
4.3 MIPI连接器与ESD防护
MIPI连接器通常更小型化(如FPC连接器)。在选择时,要确认其带宽是否支持你的数据速率。对于高速MIPI信号(>1Gbps),建议在连接器附近、差分线对地添加ESD保护二极管,选择结电容极低(如0.5pF以下)的专用TVS阵列,以避免对信号质量造成影响。
踩坑记录:MIPI时钟的测量。第一次调试MIPI屏幕不亮时,用示波器单端测量CLK_P引脚,发现波形幅度很小且畸形,差点以为是芯片坏了。后来才反应过来,MIPI是差分信号,必须用示波器的差分探头(或两个通道做数学运算)测量CLK_P和CLK_N之间的电压差,才能看到正确的波形。正确的MIPI时钟波形应该是一个频率与像素时钟相关(例如,对于1920x1080@60fps的屏幕,MIPI时钟可能在几百MHz)、幅值约200mVpp的干净正弦波或差分方波。
5. 底板电路实战:LVDS与MIPI的共享与隔离设计
在我的这个底板项目中,需求是二选一:要么接LVDS屏,要么接MIPI屏。最节省成本且灵活的设计,是让这两组信号“共享”PCB走线,直到靠近板边连接器的地方再通过零欧姆电阻或跳线进行选择。但这需要极其谨慎的规划。
5.1 信号布线共享策略
分析RK3568的引脚复用表后发现,LCD0_MIPI_D0P/N这组引脚,既可以作为MIPI的Lane0,也可以作为LVDS的TXOUT0。这为共享布线提供了可能。我的设计思路是:
- 芯片引脚扇出区域:从RK3568 BGA焊盘引出的短线,同时放置LVDS和MIPI所需的交流耦合电容。例如,对于共享引脚,我并排放置了两组100nF电容,一组标签为
C_LVDS_D0,一组标签为C_MIPI_D0。 - 主干走线:从这两组电容之后,开始进行100Ω阻抗控制的差分对走线。这段走线是共用的,一直延伸到板边。
- 连接器选择区:在板边,LVDS连接器(比如一个30pin的卧贴插座)和MIPI连接器(比如一个15pin的FPC座子)并排放置。从共用走线分支出来的地方,我放置了**零欧姆电阻(0402封装)**作为跳线。例如,如果想接LVDS屏,就焊接上通向LVDS连接器的零欧姆电阻,同时确保通向MIPI连接器的电阻位号不焊接(NC)。反之亦然。
5.2 电源与配置引脚隔离
LVDS和MIPI屏幕的供电电压、IO电压可能不同。例如,有些LVDS屏需要5V或12V供电,而MIPI屏多是3.3V或1.8V。因此,屏幕的电源网络必须完全独立,并通过不同的电源管理芯片或LDO来生成。同时,像复位、背光控制这些GPIO,虽然可以共用RK3568的引脚,但在原理图上也要通过跳线或测试点区分开来,以便在调试不同屏幕时进行配置。
一个重要的提醒:这种共享设计虽然节省了PCB面积和层数,但增加了生产贴片和调试的复杂度。必须在PCB上清晰标注“LVDS装配”和“MIPI装配”的BOM(物料清单)选项,并在连接器附近丝印清晰的跳线说明图,否则量产时极易贴错。
6. 调试阶段最常见问题与硬件排查实录
板子贴回来,上电烧录系统,屏幕不亮或者显示异常是最让人头疼的。以下是我总结的硬件排查清单,按照从简到繁的顺序进行:
6.1 电源与基础信号检查
- 屏幕供电:用万用表测量连接器处的屏幕供电引脚(
VCC_LCD),电压是否正确且稳定?电流是否在预期范围内?背光供电(BL_VCC)是否正常? - 控制信号:
- 复位信号(RESET):用示波器看,上电后是否有一个从低到高的跳变(通常先低电平复位,再拉高)?时序是否符合屏幕手册要求(低电平保持时间>1ms)?
- 背光使能(BL_EN):系统启动后,该信号是否被拉高?
- PWM信号:如果用PWM调光,用示波器看是否有脉冲波形?频率和占空比是否可调?
- I2C/SPI通信:用逻辑分析仪或示波器挂在这组总线上,看RK3568启动后是否有尝试访问屏幕驱动IC的地址?是否有数据波形?上拉电阻是否焊接?
6.2 LVDS信号问题排查
- 现象:屏幕全白、全黑或闪烁。
- 检查差分线:用万用表二极管档,检查每对差分线(P和N)之间是否短路?对地是否短路?确保交流耦合电容没有焊桥或损坏。
- 测量共模电压:用万用表直流电压档,分别测量LVDS的某个数据对(如D0_P和D0_N)对地的电压。在无数据传输的静态下,两者电压应该大致相等,约在1.2V左右(具体看RK3568的IO电压)。如果相差很大,可能是发送端或PCB有问题。
- 检查连接:LVDS连接器是否插紧?FPC排线是否有折损?可以用橡皮擦轻轻擦拭连接器金手指再试。
- 软件配置:在设备树(DTS)中,是否正确配置了LVDS的
dpi-format(是JEIDA还是VESA)?这个配置错误会导致颜色通道错乱,显示异常。
6.3 MIPI信号问题排查
- 现象:屏幕不亮,背光亮。
- 检查时钟:这是第一步。用示波器差分探头测量MIPI的CLK_P/N。上电初始化后,应该能看到一个稳定的高速时钟信号。如果没有,说明MIPI DSI控制器可能没工作或配置错误。
- 检查数据线:同样用差分探头测量某对数据线(如D0_P/N)。在传输图像时,应该能看到复杂的高速串行数据波形。静态下可能没有。
- 检查耦合电容:这是高频杀手。确认每个通道的100nF电容是否焊接,且材质是否为NP0/C0G。我曾遇到因用了劣质电容导致1Gbps以上速率无法联通的情况,更换为高质量射频电容后立即解决。
- 检查ESD器件:如果加了TVS管,检查其结电容是否过大(应<0.5pF)。过大的寄生电容会滤掉高速信号。
6.4 干扰与布线问题
- 现象:显示有细线、雪花点、或特定颜色区域异常。
- 电源噪声:用示波器探头(带宽至少200MHz)的接地弹簧,近距离测量RK3568的LVDS或MIPI电源引脚(
AVDD_LVDS,VCCIO3等),看是否有几十mV以上的高频噪声。加强电源滤波,如增加一个磁珠或更换更大容值的去耦电容。 - 串扰:检查PCB layout,LVDS/MIPI的差分线是否与其他高速信号线(如DDR、千兆以太网)平行走线过近?至少保持3倍线宽的间距,必要时用地线隔离。
- 参考平面不完整:差分线下方或上方的参考地平面是否被信号线割裂?确保高速信号线下有完整的地平面作为回流路径。
- 电源噪声:用示波器探头(带宽至少200MHz)的接地弹簧,近距离测量RK3568的LVDS或MIPI电源引脚(
7. 从硬件到软件的桥梁:设备树(DTS)关键配置解析
硬件连接正确只是第一步,要让RK3568的驱动正确识别和初始化屏幕,设备树的配置至关重要。这里分享LVDS和MIPI在DTS中的核心配置片段和注意事项。
7.1 LVDS屏幕设备树配置要点
// 示例片段,位于 rk3568-evb.dtsi 或你自己的板级DTS文件中 &lvds { status = "okay"; // 启用LVDS控制器 pinctrl-names = "default"; pinctrl-0 = <&lvds_tx>; // 引用引脚复用配置 ports { lvds_out: port@1 { reg = <1>; remote-endpoint = <&panel_in_lvds>; // 连接到屏幕节点 }; }; }; // 屏幕面板节点定义 panel { compatible = "panel-lvds"; // 通用LVDS面板驱动 status = "okay"; >&dsi { status = "okay"; // 屏幕面板节点,通常作为dsi的子节点 panel@0 { compatible = "sitronix,st7701s"; // 使用具体的屏幕驱动IC兼容字符串 reg = <0>; status = "okay"; // 电源序列,控制复位、IOVCC、AVDD等上电时序 reset-gpios = <&gpio0 RK_PC5 GPIO_ACTIVE_LOW>; // 复位引脚 iovcc-supply = <&vcc3v3_lcd>; // IO电源 vcc-supply = <&vcc18_lcd>; // 核心电源 // 背光控制 backlight = <&backlight_lcd>; pwm-delay-ms = <100>; // 背光使能后的延时 // 屏幕初始化命令序列,通常由屏厂提供 panel-init-sequence = [ 39 00 04 B9 F1 12 83 39 00 1C BA 33 81 05 F9 0E 0E 20 00 00 00 00 00 00 00 44 25 00 91 0A 00 00 02 4F D1 00 00 37 // ... 更多命令 15 78 00 11 // Sleep Out 命令,并等待120ms 15 32 00 29 // Display On 命令,并等待50ms ]; port { panel_in_dsi: endpoint { remote-endpoint = <&dsi_out_panel>; }; }; }; ports { dsi_out_panel: port@1 { reg = <1>; remote-endpoint = <&panel_in_dsi>; }; }; };关键参数解析:
compatible:这里需要填写屏幕驱动IC的具体型号,如"sitronix,st7701s"、"ilitek,ili9881c"。内核会根据这个字符串去匹配对应的驱动。panel-init-sequence:这是MIPI屏幕驱动的核心。它是一系列通过MIPI DSI总线发送给屏幕驱动IC的初始化命令。必须从屏幕供应商那里获取准确的、针对你这款屏幕的初始化代码。不同厂家、不同分辨率的屏幕,初始化序列千差万别。序列中的每个数字都有含义,例如39 00 04 B9 F1 12 83,39代表用DSI长包传输,00是等待时间,04是数据长度,后面是具体命令。- 电源序列:MIPI屏幕对上电、下电时序要求很严格。
reset-gpios的拉低、拉高时机,以及iovcc、vcc等电源的开启顺序,都需要在驱动代码或DTS中仔细配置,否则屏幕可能无法初始化或损坏。
8. 总结与进阶思考:硬件设计的权衡艺术
回顾整个RK3568底板显示接口的设计,从最初的引脚复用分析,到LVDS/MIPI的电路细节,再到PCB布局布线和调试排错,每一步都是在做权衡。成本、性能、可靠性、开发难度、生产便利性,这些因素相互制约。
对于LVDS,它的设计相对“粗犷”但稳定,难点在于前期对屏幕规格书(尤其是数据映射格式和时序)的理解要绝对准确,以及PCB上对多对长距离差分线的阻抗和等长控制。而对于MIPI,它的设计更“精密”,挑战在于应对更高的信号速率,对电容、ESD器件的选型,以及等长匹配的要求达到了毫米级,软件上则严重依赖屏厂提供的初始化序列。
最后分享一个进阶思考:如果你的项目对显示可靠性要求极高(比如车载),可以考虑在LVDS输出端增加一颗专业的LVDS缓冲器/中继器芯片(如DS90UR系列)。这颗芯片不仅能增强驱动能力,延长传输距离,还能提供更好的信号整形和抗干扰能力,当然这会增加BOM成本和布局空间。这再次体现了硬件设计没有唯一解,只有基于具体需求的最优权衡。我的这块底板最终采用了LVDS/MIPI共享布线的方案,并通过了多种屏幕的测试,算是在成本、灵活性和复杂度之间找到了一个平衡点。希望这些具体的电路分析和实战经验,能为你下一次的硬件设计带来实实在在的帮助。