十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

RK3568 MIPI DSI屏调试实录:点亮、时序与触摸排查

RK3568 MIPI DSI屏调试实录:点亮、时序与触摸排查 做RK平台最怕的不是功能调不通而是屏幕这种肉眼可见的东西死活点不亮。我拿到RK3568核心板配一块7寸MIPI DSI屏的时候头两天基本处于供电正常、背光正常、系统正常但屏幕就是黑着的状态后来触摸又冒出来一堆问题。这篇实录把整个过程重新梳理了一遍从硬件信号测到设备树从MIPI时钟波形看到初始化序列最后把屏幕从完全不亮调到显示正常、触摸顺滑。如果你正在调RK3568或者同平台的MIPI屏这篇文章能帮你少走很多弯路。1. RK3568外接MIPI屏为什么坑比想象的多很多人拿到RK3568开发板第一反应是我有HDMI我有LVDS为什么非要用MIPI屏。答案往往是因为选型定了、外壳开了、结构改不了了只能用这块MIPI模组。MIPI DSI接口本身在SoC层面不算冷门但真正让RK3568外接MIPI屏变成经典坑位的原因有三点必须提前认识到。1.1 3568和3566之间的差异会直接影响你的屏选型先说一个很多人混淆的点。RK3568和RK3566在显示链路设计上看着差不多内核里用的DSI驱动也基本相同但两者在CPU频率、GPU频率和编解码能力上差距不小外设引脚的复用关系也未必一致。当你参考网上3566的屏幕设备树直接搬到3568上调时完全可能因为引脚复用、电源域配置不同而点不亮。我自己也这么踩过一次。在选屏或者换平台移植时先确认两个事情你的屏是DSI原生接口还是需要MIPI转LVDS桥接芯片。RK3568/3566的DSI控制器支持输出到DSI面板也能通过TC358775这类桥接芯片接LVDS大屏。屏的分辨率和刷新率是否在RK3568 DSI控制器的带宽范围内。比如在4K大屏场景MIPI DSI带宽很可能不够需要走eDP或HDMI。单论调试方法3568和3566基本一致但设备树文件、电源域定义、gpio序号不能直接互相抄。1.2 MIPI DSI在RK方案里常见的三处硬伤第一处硬伤是电源层级多且对时序敏感。MIPI屏不像HDMI那样一个5V就完事它通常要VDD供电1.8V或3.3V、VCI2.8V或3.3V、VSP/VSN偏压往往要5V以上。这三路电如果上电顺序不对或者某一路电压建立太慢屏幕表现可能就是完全没反应或者只有背光亮、屏幕灰白。第二处硬伤是MIPI信号属于高速差分信号物理设计不允许随意发挥。MIPI DSI的CLK Lane和Data Lane需要按100Ω差分阻抗布线等长控制要严格。手工飞线或者转接板走线过长、不连续都会导致信号质量差。信号差的结果不是雪花点而是直接黑屏或者间歇性闪烁。这个特性决定了硬件设计阶段就要留足余量软件再会调也救不了layout烂的板子。第三处硬伤是屏厂给的初始化序列和设备树参数经常脏。很多MIPI屏用在手机、平板上模组厂给的初始化命令是直接从某个安卓工程里拷出来的里面夹带着厂商私有命令、时序余量、delay参数拿过来塞进RK3568的dts里顺序、格式都要重新梳理。这属于软件层面的坑后面展开说。1.3 一个合格的MIPI屏方案需要先确认这些硬条件在动手改设备树之前我先按住自己不要急着敲代码把下面的清单逐项确认这能帮你省下至少半天时间。屏规格书里的timing表HSA/HBP/HFP/HACT、VSA/VBP/VFP/VACT必须清晰。没有这个表后续所有参数都靠猜基本调不出来。初始化序列要么是text文本要么是数组。来源要明确注明配套的驱动IC型号。屏的工作模式Video Mode还是Command Mode。RK3568接MIPI屏绝大多数用Video Mode如果用Command Mode要接DSI TE引脚逻辑完全不同。DSIlane数量通常4-lane也有2-lane小屏。lane数量和设备树配置、时钟计算直接相关错一个数字就会黑屏。触摸IC型号和接口常见的有GT911、FT5426、CST系列。它们挂在不同的I2C总线上复位和中断引脚可能和显示复位共用也可能完全独立。是否需要MIPI转LVDS桥接如果是你要调的是桥接芯片的初始化而不是直接调屏。把这些信息整理到一张表里开工时会清楚得多。我习惯直接在工程目录里放一份panel_info.md把屏的电源时序图、timing表、复位时序、初始化序列全部归档方便随时查阅也方便后续换屏对照。2. 屏幕不亮的第一轮排查供电、复位与背光拿到屏第一天现象是最典型的全黑。插上核心板系统正常启动串口有日志HDMI外接显示器正常但MIPI屏一直黑着。这时候不要先怀疑初始化序列先怀疑最底层的东西屏到底有没有电复位有没有拉起来背光有没有亮。2.1 按先外设后主控排查供电时序用GPIO直接拉起来看我排查的第一件事是屏的供电。打开原理图确认屏排座上的每一路电压来源然后用万用表逐一量。注意量的时候不要只看电压值对不对还要看电压建立的时间点是否符合屏规格书要求的上电时序。大部分MIPI屏要求的供电顺序是先VDD逻辑电源再VCIIO/模拟电源最后VSP/VSN偏压电源。如果硬件上用了同一个PMIC的LDO供电顺序往往由硬件拉电决定但如果是软件通过GPIO控制负载开关那么顺序就完全由驱动中的gpio操作顺序决定。RK3568的设备树里面板节点可以配prepare-delay-ms、enable-delay-ms这些延时参数实际上就是在时间轴上保证上电时序的正确性。调试时最粗暴也最有效的方法是先不管内核驱动直接在uboot或系统起来后用GPIO控制每一路电源使能人为确认屏在裸供电状态下有没有反应。比如拉高背光EN引脚、拉高屏VDD使能引脚观察屏幕是否出现微弱亮光或者白屏。如果裸供电加背光亮了说明屏幕和背光硬件没问题问题在软件时序或初始化序列。2.2 复位引脚被忽略时的典型症状屏幕不亮还有一个非常常见的隐藏原因是复位引脚没处理好。MIPI DSI面板的RESET引脚通常要求先拉低若干毫秒再拉高然后等一小段时间再去发初始化命令。如果复位时序不对屏幕内部的状态机卡在初始化前的某个阶段MIPI信号就算到了屏幕也完全没有反应。在RK3568的设备树面板节点里复位相关配置主要通过下面几个参数体现dsi0 { status okay; panel0 { compatible simple-panel-dsi; reg 0; reset-gpios gpio3 19 GPIO_ACTIVE_LOW; reset-delay-ms 100; prepare-delay-ms 20; init-delay-ms 120; ... }; };这里有个容易掉坑的点GPIO_ACTIVE_LOW和GPIO_ACTIVE_HIGH要与实际电路一致。如果复位引脚是低有效复位但你在设备树里配成了高有效驱动操作GPIO时根本不会把屏复位释放掉屏幕自然一直黑。更隐蔽的是有些屏的复位是高有效那你在调试时要反向操作。遇到屏幕不亮我建议先用GPIO命令手动拉一下复位引脚确认硬件电平方向再对照设备树里的flag。提示如果用的是simple-panel-dsi通用驱动复位和初始化之间的延时由reset-delay-ms和init-delay-ms控制。这两个参数不是随便写的请务必查屏规格书里的 reset timing尤其是复位释放到控制器可以接收命令之间的最小时间。2.3 背光电路设计对排查工作的影响背光不亮这个问题视觉上会和屏幕不亮混在一起。MIPI屏的背光通常由独立的升压LED驱动IC控制EN引脚控制开关PWM引脚控制亮度。如果背光压根没亮屏幕即使有图像人也看不到看起来就是全黑。排查背光时我建议先看硬件上电后背光EN引脚是否为高电平PWM是否给了有效占空比。用万用表量一下LED端电压如果是升压电路空载时电压通常会升高到设定值如果电压几乎为0说明背光IC没有工作可能是EN没拉起来或者IC供电有问题。在RK3568上背光节点同样在设备树里独立配置。比较稳妥的做法是先把背光亮度调到最大排除PWM占空比过小导致的背光几乎看不见echo 255 /sys/class/backlight/backlight/brightness如果sysfs节点不存在先检查背光节点是否probe成功或者直接看dmesg | grep backlight。有些板子上背光EN引脚的GPIO和屏幕复位引脚刚好复用或者接反这种情况在调试时很折腾。建议第一步就把背光独立点亮不让它参与后面的MIPI信号排查缩小问题范围。3. 第二轮排查MIPI时钟波形与时序参数供电、复位、背光都确认没问题之后屏幕依旧黑着这时候才进入真正的MIPI信号排查环节。这一轮要动示波器同时要把屏的时序参数彻底搞明白。3.1 示波器抓MIPI时钟的正确姿势MIPI DSI的CLK Lane是一对差分线频率通常在200MHz到500MHz级别。想抓这个波形示波器带宽至少要有500MHz采样率至少2GS/s或更高。用普通100MHz示波器测MIPI时钟抓到的波形只有衰减后的正弦波痕迹基本判断不了什么。操作上优先用差分探头。如果没有差分探头用单端探头分别勾CLK_P和CLK_N也能看到周期性信号但要注意探头的接地线一定要短绝对不能用长地线夹子。MIPI信号高速长地线会引入很大电感导致看到的信号完全是畸形的。示波器上重点关注三件事有没有周期波形如果有说明MIPI PHY已经在输出时钟控制器配置基本走到了DSI使能这一步。如果没有说明DSI控制器压根没有输出问题在更前面的链路配置。频率对不对通过示波器的频率测量功能读一下时钟频率然后和你在设备树里预期的lane rate对比。如果实际频率和配置频率差几倍说明驱动计算时钟的公式参数配置有误或者PLL没有按预期工作。波形质量看有没有明显的过冲、振铃、毛刺。差分幅度太低屏幕可能完全点不亮信号畸变严重可能出现间歇性花屏。3.2 时序参数计算从屏规格书换算成设备树里的hbp、hfpMIPI屏的timing直接决定屏幕能不能正常显示。很多屏幕不亮或者显示偏移、花屏的问题归根结底是timing参数从屏幕规格书到设备树之间的换算出了问题。以一块常见的720x1280 MIPI屏为例假设屏规格书给出的timing参数是HACT 720HBP 100HFP 100HSA 40VACT 1280VBP 16VFP 16VSA 16那么一整行的总像素宽度是 720 100 100 40 960一帧的总行数是 1280 16 16 16 1328。在60Hz刷新率下像素时钟是 960 × 1328 × 60 ≈ 76.5MHz。这个像素时钟接下来会决定MIPI DSI时钟频率。假设面板是4-lane、RGB88824bpp那么总的MIPI数据速率为 76.5MHz × 24 1.836Gbps平均到4条lane上每条lane的数据速率是459MbpsDSI DDR时钟的lane rate就是 459MHz / 2 ≈ 229.5MHz。这个229.5MHz就是你在设备树中配置或让驱动自动计算的MIPI时钟。如果你的设备树里给panel的timing和屏规格书不一致驱动算出来的时钟就会偏移轻则显示闪烁重则直接没有输出。在RK3568的dts里timing部分长这样panel0 { compatible simple-panel-dsi; ... display-timings { native-mode timing0; timing0: timing0 { clock-frequency 76500000; hactive 720; vactive 1280; hback-porch 100; hfront-porch 100; hsync-len 40; vback-porch 16; vfront-porch 16; vsync-len 16; vsync-active 0; hsync-active 0; de-active 0; pixelclk-active 0; }; }; };细心的读者会发现clock-frequency这里我写的是76500000Hz也就是76.5MHz。RK的DSI驱动会根据这个pixel clock、lane数、bpp自动计算lane rate。所以只要pixel clock和实际刷新的模式对得上驱动一般能算出正确的MIPI时钟。有些老版本内核需要手动配rockchip,lane-rate但新内核大多会自动算。如果屏幕不亮我建议先确认驱动到底用的哪个计算路径。3.3 ST7701S初始化序列的坑片内时序和外部时序的关系ST7701S是MIPI DSI屏幕里非常常见的一颗显示驱动IC7英寸、10.1英寸的IPS屏很多都用它。用ST7701S的模组屏厂通常会提供一套初始化序列格式类似下面这样rockchip,init-cmd-sequence 0x00 0xff 0x77 0x01 0x00 0x00 0x10 0x00 0x00 0xc0 0x3b 0x00 0x00 0xc1 0x0b 0x02 0x00 0xc2 0x07 0x02 ... 0x01 0x11 0x01 0x29 ;这里的每一行前面的 0x00 或 0x01 表示延时标识后面的字节是命令和数据。具体解析方式为0x00开头表示当前行是写命令或数据0x01开头表示执行了延时延时的毫秒数在后面的字节里。这套格式在不同驱动中会有细微差异但逻辑类似。调ST7701S时我踩过最典型的坑是屏厂给的初始化序列里把0x11Sleep Out放在很靠前的位置0x29Display On放在最后但中间好几条带延时的命令在RK驱动里执行速度很快导致面板内部还没有稳定命令就被吞掉了。解决办法是适当增加延时尤其0x11之后建议至少有120ms的延时这个延时让DCDC和GAMMA电路稳定下来再继续初始化。另一个坑是ST7701S的某些厂商私有命令比如0xFF开头的扩展命令它后面的数据长度和具体含义只有屏厂自己清楚。网上搜到的ST7701S初始化序列不一定适用于你的模组因为同样是ST7701S不同模组厂的VCOM、GAMMA、分辨率参数可能在私有命令里写死了。所以务必使用模组厂随屏提供的初始化序列不要自己从别的工程里拷。3.4 DSI时钟频率算不对的典型故障形态在调试过程中我遇到过几种典型的时钟算错导致的故障这里直接说结论时钟状态故障现象排查方式lane rate偏高较多屏幕有背光但完全没图像或图像严重偏色示波器测CLK频率和设备树预期对比lane rate偏低显示区域偏移、顶部有噪点、刷新率不足的感觉核对pixel clock和timing参数计算lane rate正确但PHY配置错误黑屏示波器测不到信号检查lane数配置、PHY供电、reset节点时钟频率正确但极性配置反屏幕显示左侧或右侧偏移画面撕裂检查hsync/ vsync/de 的active polarity最容易被忽略的是hsync-active、vsync-active、de-active这几个极性字段。有些屏规格书标注的是负极性有些是正极性配置反了屏幕不是完全不亮而是画面不稳定、偏移、闪烁。这类问题在采样率低的示波器上还看不出来只能逐一改极性测试。我调试时会把极性的四种组合都试一遍排除这个问题再深入其他方向。4. 设备树与驱动配置让屏幕真正亮起来的关键一环前面硬件信号和时序参数都没问题了接下来就是最关键的设备树配置。RK3568的显示链路配置涉及DSI控制器、VPVideo Port和route三层关系任何一个没配对屏幕都不会亮。4.1 RK3568 DSI相关设备树骨架给一个参考的DSI屏设备树结构后面逐项解释dsi0 { status okay; rockchip,lane-rate 0; panel0 { compatible simple-panel-dsi; reg 0; backlight backlight; reset-gpios gpio3 19 GPIO_ACTIVE_LOW; enable-gpios gpio3 20 GPIO_ACTIVE_HIGH; prepare-delay-ms 20; reset-delay-ms 50; init-delay-ms 120; disable-delay-ms 20; unprepare-delay-ms 20; width-mm 154; height-mm 86; dsi,flags (MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST); display-timings { native-mode timing0; timing0: timing0 { clock-frequency 76500000; hactive 720; vactive 1280; hback-porch 100; hfront-porch 100; hsync-len 40; vback-porch 16; vfront-porch 16; vsync-len 16; ... }; }; ports { #address-cells 1; #size-cells 0; port0 { reg 0; panel_in_dsi: endpoint { remote-endpoint dsi0_out_panel; }; }; }; }; ports { #address-cells 1; #size-cells 0; port1 { reg 1; dsi0_out_panel: endpoint { remote-endpoint panel_in_dsi; }; }; }; };还有路由和VP连接route_dsi0 { status okay; connect vp0; }; dsi0_in_vp0 { status okay; };4.2 那些没配就黑屏的字段lane、route、vp很多人调RK的屏第一步就漏了route和VP的配置。RK3568有多个Video Port相当于多个显示控制器MIPI DSI必须显式地绑定到某个VP上。你没有route_dsi0节点或者dsi0_in_vp0没有配status okay那DSI控制器可能初始化了但VP的数据没有路由到DSI屏幕自然是黑的。另一种黑屏原因是lane配置不一致。你选的是4-lane屏但某处配置改成了2-lane或者硬件上只用2-lane设备树里按4-lane配置。这种情况下驱动初始化时会等待不存在的lane信号PHY无法完成同步屏幕不亮且没有报错。检查时除了设备树还要看内核启动日志里打印的lane信息比如link rate和lane number。dsi,flags也要留意。MIPI_DSI_MODE_VIDEO_BURST是常用的burst模式功耗和时序余量相对好如果你的屏只支持MIPI_DSI_MODE_VIDEO非burst配置不对可能出现刷新率不稳定、画面撕裂。屏规格书里如果没有说明可以把burst和非burst轮流试一下看哪个效果稳定。4.3 调试期内快速验证配置是否生效配置完设备树重编内核dtb烧录启动后第一件事不是看屏而是看日志。下面几个命令能帮你快速判断链路状态# 查看DRM链路状态能看到connector和encoder是否连上 cat /sys/kernel/debug/dri/0/summary # 查看内核日志里DSI/MIPI相关打印 dmesg | grep -i dsi dmesg | grep -i mipi # 查看DRM设备状态 modetest -M rockchip -p/sys/kernel/debug/dri/0/summary这个节点非常有用它会打印出当前所有显示通路的状态包括VP连接、encoder类型、connector状态。如果看到DSI的connector状态是Connected说明链路基本打通如果显示Disconnected或者根本没有DSI节点那问题大概率在设备树或驱动probe阶段。modetest能看到DSI encoder是否注册成功、支持哪些分辨率。如果能看到panel modeline说明panel的timing被驱动正确读取了。如果什么都看不到检查dts里的panel节点compatible是否被驱动匹配。5. 触摸失灵的排查I2C、中断和复位顺序屏幕点亮之后紧接着就是触摸。触摸失灵的现象分两种一种是完全没有任何事件另一种是触摸有事件但坐标完全不对。这两种问题往往来自不同层面。5.1 先确认触摸IC型号和I2C地址拿到触摸屏第一件事是看触摸IC型号常见的有GT911、FT5426、HX8527E、CST系列。不同IC的I2C地址差别很大比如FT5426通常是0x38GT911则根据复位时序不同地址可能是0x5D或0x14。用i2c-tools可以直接探测触摸IC挂在哪个总线上、地址是多少# 列出所有I2C总线 i2cdetect -l # 探测指定总线上的设备找到触摸IC地址 i2cdetect -y -r 2注意触摸IC通常不是默认挂在I2C总线上的它可能挂在I2C2或I2C3要看原理图。不要盲目在所有总线上扫先把原理图里触摸IC连接的I2C控制器编号找出来。5.2 触摸IC的复位时序依赖GT911尤其典型GT911这个IC有个众所周知的特性复位释放后主机必须在极短时间内通常1ms内读取它的版本信息或发送配置否则它不会进入正常工作状态。如果主机响应慢了GT911可能进入错误的地址模式或者干脆不工作在I2C从机模式驱动probe时自然找不到设备。如果你用的触摸IC是GT911检查这两点触摸IC的复位GPIO是否在设备树里正确配置并且复位释放后到驱动读取ID之间的延时是否足够短。I2C地址是0x5D还是0x14取决于复位引脚释放后的电平状态和时序。如果设备树里reg和实际硬件响应地址不一致probe会一直失败。FT5426这类IC对复位时序没有GT911那么苛刻但同样存在复位没释放就 probe→I2C 不通的问题。通用排查方法是系统起来后通过GPIO手动拉一下触摸IC的复位引脚然后再用i2cdetect探测如果此时能扫到地址说明驱动probe时序有问题如果手动拉复位都扫不到那就要检查硬件连接和供电了。5.3 中断引脚与驱动probe的关系触摸驱动一般依赖中断引脚来上报事件。中断引脚配置错了屏幕能显示、触摸IC能被i2cdetect扫到但触摸就是没有反应。典型问题中断GPIO在设备树里被复用成其他功能导致request_irq失败。触发电平/边沿类型不对。GT911一般用下降沿或低电平触发FT5426一般也是下降沿触发。如果配置成上升沿中断事件几乎不会触发。中断引脚上拉/下拉电阻和IC默认输出状态冲突导致一直处于中断触发状态或者一直被拉死。排查中断问题最直接的办法是看/proc/interrupts里触摸中断是否注册成功然后用示波器或逻辑分析仪抓中断引脚的波形手动触摸屏幕时看有没有脉冲。如果中断引脚完全没有变化说明触摸IC本身就没有检测到触摸问题回到触摸IC的供电、复位或I2C配置上而不是驱动。5.4 触摸坐标验证和常见偏转问题触摸IC能上报事件之后还要验证坐标是否准确。用下面的命令可以实时查看触摸事件evtest如果没有evtest直接用hexdump /dev/input/event2触摸有事件但坐标方向反了或者旋转了通常不是硬件问题而是触摸驱动或者触摸IC的坐标映射配置没配对。比如屏幕竖放触摸原始坐标横放就需要在触摸节点里配置交换或反转参数i2c2 { status okay; gt9115d { compatible goodix,gt911; reg 0x5d; interrupt-parent gpio3; interrupts RK_PC0 IRQ_TYPE_EDGE_FALLING; reset-gpios gpio3 RK_PB4 GPIO_ACTIVE_LOW; touchscreen-inverted-x; touchscreen-inverted-y; touchscreen-swapped-x-y; }; };这里的touchscreen-inverted-x、touchscreen-inverted-y、touchscreen-swapped-x-y三个属性就是用来做坐标镜像和交换的。调试时可以先通过evtest观察原始坐标变化方向再决定具体翻转哪一项。注意有些触摸IC是电容屏自带的坐标映射需要校准如果没有明显翻转问题尽量不要乱配因为误配置会让本来正确的坐标变乱。6. 从能亮到显示完美偏色、花屏和背光控制屏幕亮了、触摸能点了还远远不够。显示偏色、背光闪烁、画面偶尔花一下这些问题才是日常使用中最烦人的。这里讲几个我在RK3568上遇到的显示质量坑。6.1 颜色格式不一致导致的偏色MIPI DSI面板在dts里要指定颜色格式常见的有rgb888和rgb666。如果面板实际支持RGB666而你在dts里配置了RGB888驱动按24bpp发送数据但面板内部只能解析18bpp画面就会明显偏色一般表现为颜色发粉、发紫或者某些颜色深度丢失严重。反过来面板支持RGB888你配置RGB666画面会丢失低位颜色信息色彩过渡出现明显色带。在RK3568的设备树里颜色格式通常通过panel节点或者DSI控制器的format字段指定dsi0 { ... panel0 { compatible simple-panel-dsi; ... dsi,format MIPI_DSI_FMT_RGB888; }; };如果格式配错了可以输出一张纯色测试图快速判断。比如显示纯红色时泛紫多半是绿色或蓝色通道的位数不对显示灰色渐变色带明显多半是低位颜色丢失。6.2 花屏和闪烁的常见元凶屏幕能正常显示但偶尔花屏或闪烁这类问题排查起来比完全黑屏更玄学。我总结过几个方向MIPI时钟余量不足。像素时钟稍微偏离panel的推荐范围或者lane rate偏大偏小会导致显示不稳定。可以尝试在驱动允许范围内微调lane rate看花屏是否消失。供电纹波过大。VCI或者VSP/VSN供电纹波过大会在亮暗变化时表现为屏幕闪烁或横纹。用示波器看纹波若纹波超过屏规格书要求优先改善滤波电容。电磁干扰。MIPI走线靠近DCDC电感或高频开关节点容易受到干扰。干扰导致的故障不稳定有时用手按压排线附近就会触发花屏。这种只能从layout上规避软件能做的有限。帧率不匹配。RK3568的显示链路帧率和屏端刷新率不一致可能出现画面撕裂。检查pixel clock是否接近整数倍必要时让VOP输出和panel刷新率完全一致。6.3 背光亮度调节的PWM频率选择背光PWM频率选不好会出现两类问题一是人眼可见的闪烁频率太低二是产生啸叫频率落在可听范围内与屏幕或者电源的电感产生共振发声。RK3568设备树里背光节点配置PWM频率pwm0 { status okay; pinctrl-names default; pinctrl-0 pwm0_pin; }; backlight { status okay; compatible pwm-backlight; pwms pwm0 0 20000 0; // period 20000ns, 即50kHz brightness-levels 0 1 2 ... 255; default-brightness-level 128; };个人经验PWM频率不要低于1kHz推荐4kHz到20kHz之间。太高的频率对背光驱动IC的响应速度要求也高可能出现亮度非线性太低的频率人眼会感知闪烁。如果同时有小尺寸扬声器还要注意背光PWM频率和扬声器工作频率之间的差拍避免出现可闻的“滋滋”声。7. RK3568 MIPI屏调试工具箱与速查表最后把这轮调试中用到的命令和踩坑规律整理一下方便以后复现。7.1 调试中真正有用的命令cat /sys/kernel/debug/dri/0/summary看显示链路整体状态最优先。dmesg | grep -i dsi\|mipi\|panel看DSI驱动、panel驱动的probe日志。modetest -M rockchip -p看encoder、connector、mode。i2cdetect -y -r bus探测触摸IC的I2C地址。evtest实时观察触摸事件。echo N /sys/class/backlight/backlight/brightness调节背光快速判断背光链路。devmem/io直接操作寄存器排查GPIO状态或PHY配置。7.2 常见症状、原因和排查手段一览症状可能原因排查手段完全黑屏供电、复位、背光、DSI信号任一环节断按供电→背光→复位→MIPI波形顺序逐层确认背光亮、无图像初始化序列错误、timing参数错、route/VP未配置检查dmesg和dri summary核对panel timing和init code有图像但花屏时钟频率偏移、lane配置错误、信号质量差示波器测CLK频率核对lane数和时钟计算公式偏色颜色格式RGB888/RGB666配错输出纯色测试图核对dts里的format字段触摸完全无响应触摸IC地址错、复位未释放、中断引脚配置错i2cdetect探测地址手动拉复位后再试检查/proc/interrupts触摸有响应但坐标乱坐标翻转/交换配置不对evtest观察原始坐标方向配置touchscreen-inverted/swap属性屏幕闪烁供电纹波、PWM频率低、timing余量不足示波器看纹波提高背光PWM频率微调lane rate7.3 关于选屏和买模组的几句大实话调试经验再多也不如一开始就选对屏幕。个人强烈建议在采购阶段就问模组厂要三样东西完整规格书、配套的RK平台设备树、已经调通的初始化序列。如果模组厂说我们只有安卓的驱动没有Linux的也要把安卓工程的设备树和初始化数组拿过来在RK3568上转换的成本远低于从零摸索。另一个建议是尽量选择同平台已验证过的屏幕型号。比如你的方案参考设计用的是某款7寸屏最好不要因为价格便宜换成另一家同尺寸屏——引脚定义、初始化时序、触摸IC都可能完全不同。屏幕这种外设省几十块钱可能让你多调两周。我自己后来的习惯是拿到新屏先花半天时间把所有信息整理成屏参笔记分辨率、lane数、电源时序、复位延时、初始化序列、触摸IC地址全部归档。轮到换屏或者换平台时这份笔记能直接把调试周期从一周压缩到一天。RK3568的MIPI屏问题绝大多数都不是玄学而是供电、时序、配置这三件事里有一件没做到位。把这三件事逐项确认过去屏幕就会乖乖亮起来。
返回列表