2. STM32MP显示硬件通路解析

在STM32MP系列(如STM32MP157)中,显示子系统并不是单一控制器,而是一条由多个硬件模块级联而成的通路。理解这条通路的连接关系与时钟来源,是后续调试显示异常、计算像素时钟、配置消隐区参数的基础。本节以STM32MP157为例,梳理从帧缓冲到屏幕的完整硬件链路,并给出用示波器测量RGB时序的实操方法。

一、显示通路的硬件拓扑

STM32MP157的显示输出有两条主要路径。第一条是RGB并行路径:LTDC(LCD-TFT Display Controller)直接输出RGB数据、像素时钟(LCD_CLK)、行同步(HSYNC)、场同步(VSYNC)和数据使能(DE),经引脚复用后送到RGB接口屏或HDMI转换芯片。第二条是MIPI DSI路径:LTDC的输出先送入DSI主机控制器(DSI Host),由DSI打包成MIPI DSI数据流,再经D-PHY物理层以差分信号输出到MIPI DSI屏。

两条路径共享同一个LTDC,区别在于后级。当使用HDMI显示器时,常见做法是LTDC输出RGB到HDMI转换芯片(如SiI9022、LT8618等),由转换芯片完成RGB到TMDS的编码。因此,LTDC是整个显示通路的“像素源”,其输出时序决定了整条链路的时序基准。

STM32MP157 显示硬件通路与时钟树 DDR 帧缓冲 Framebuffer LTDC 像素时钟 / HSYNC VSYNC / DE / RGB[23:0] 图层混合 + 消隐区生成 AXI RGB 并行接口 24-bit RGB + 同步信号 HDMI 转换芯片 RGB → TMDS 编码 DSI 主机控制器 命令/视频模式打包 DSI 协议层 MIPI D-PHY 差分物理层 1×Clock + 2×Data Lane HDMI 显示器 TMDS 差分对 MIPI DSI 屏 接收 D-PHY 差分信号 时钟树关键节点 PLL4 像素时钟源 LCD_CLK 像素时钟输出 DSI PHY CLK 高速串行时钟 TMDS CLK HDMI 像素时钟

二、时钟树与像素时钟计算

LTDC的像素时钟来自PLL4。在STM32MP157中,PLL4通常专用于显示,其输出经分频后得到LCD_CLK。像素时钟频率必须与屏幕时序匹配,计算公式为:

像素时钟 = (H_total × V_total × 刷新率)

其中:
  H_total = H_active + HBP + HFP + HSYNC_width
  V_total = V_active + VBP + VFP + VSYNC_width

以常见的1024×600@60Hz RGB屏为例,典型时序参数为:H_active=1024,HBP=160,HFP=160,HSYNC=10,则H_total=1354;V_active=600,VBP=23,VFP=12,VSYNC=2,则V_total=637。像素时钟 = 1354 × 637 × 60 ≈ 51.7 MHz。实际配置时,PLL4需输出接近该值的频率,再通过LTDC的分频器微调。

对于DSI路径,像素时钟与DSI高速时钟之间存在固定关系。DSI的位时钟(bit clock)等于像素时钟乘以每像素位数再除以Lane数。例如RGB888、2 Lane时,DSI bit clock = 像素时钟 × 24 / 2 = 像素时钟 × 12。D-PHY的时钟Lane频率则为bit clock的一半。这些关系决定了DSI PHY的PLL配置。

三、行场同步与消隐区参数

RGB接口的时序由五个关键参数描述:HSYNC(行同步脉冲)、HBP(行后沿)、HFP(行前沿)、VSYNC(场同步脉冲)、VBP(场后沿)、VFP(场前沿)。LTDC内部通过LTDC_SSCR、LTDC_BPCR、LTDC_AWCR、LTDC_TWCR等寄存器配置这些值。需要特别注意:LTDC的寄存器值通常以“有效像素数+消隐数”的形式给出,而不是直接写消隐长度,配置时需做换算。

消隐区的作用是给显示屏留出电子束回扫或数据准备时间。如果消隐区过小,屏幕可能出现边缘撕裂、闪烁或无法锁定;如果过大,则像素时钟被迫升高,可能超出D-PHY或HDMI转换芯片的带宽。因此,消隐区参数应严格参照屏幕数据手册,而不是随意取整。

调试建议:先用屏幕手册的典型值配置,再用示波器测量实际时序,根据测量结果微调HBP/HFP/VBP/VFP,直到画面稳定且无边缘异常。

四、用示波器测量RGB接口时序

测量RGB时序需要至少4通道示波器或逻辑分析仪。推荐探头连接点:LCD_CLK(像素时钟)、HSYNC、VSYNC、DE,以及任意一位RGB数据线(如R0)。测量步骤如下:

  1. 触发设置:以VSYNC下降沿为触发条件,时基设为约2ms/div,观察一帧的完整结构。
  2. 测量场周期:读取两个VSYNC下降沿之间的时间,其倒数即为刷新率。若测得16.6ms,则刷新率约60Hz。
  3. 测量行周期:将时基缩小到约10μs/div,以HSYNC为触发,测量两个HSYNC下降沿之间的时间,得到H_total对应的时间。用H_total除以该时间可反推像素时钟。
  4. 测量消隐区:在HSYNC触发下,测量HSYNC脉冲宽度、HSYNC结束到DE有效之间的时间(即HBP),以及DE结束到下一个HSYNC之间的时间(即HFP)。
  5. 验证像素时钟:用频率计或示波器直接测量LCD_CLK频率,与计算值对比。若偏差超过1%,需检查PLL4配置。

一个常见的判断依据是:DE有效期间,RGB数据线应有稳定的像素数据变化;DE无效期间,数据线应保持低电平或固定电平。如果DE有效期间数据线无变化,说明LTDC没有正确读取帧缓冲,需检查DMA和图层配置。

注意:测量时示波器探头的地线要尽量短,避免引入振铃。对于高速像素时钟(>50MHz),建议使用差分探头或至少使用弹簧地针,否则测得的时钟波形可能严重失真,导致频率误判。

五、HDMI转换芯片的额外考量

当LTDC经HDMI转换芯片输出时,转换芯片会重新生成TMDS时钟。此时LTDC的像素时钟与HDMI TMDS时钟之间存在倍频关系:TMDS时钟 = 像素时钟(对于8bit RGB,TMDS时钟等于像素时钟)。但转换芯片内部可能有自己的PLL,需要确保其输入像素时钟在芯片允许范围内。例如SiI9022要求输入像素时钟在25MHz~165MHz之间。如果LTDC输出的像素时钟低于25MHz(如小分辨率屏),转换芯片可能无法锁定,此时需要在LTDC端提高像素时钟或改用其他转换方案。

此外,HDMI转换芯片通常需要I2C配置,包括输入时序参数、输出色彩空间、音频配置等。这些配置与LTDC的时序参数必须一致,否则会出现画面偏移或颜色异常。调试时建议先用LTDC直接驱动RGB屏验证时序正确,再接入HDMI转换芯片,以隔离问题来源。

六、关键参数速查表

参数 含义 典型值(1024×600@60Hz) LTDC寄存器
HSYNC行同步脉冲宽度10LTDC_SSCR
HBP行后沿160LTDC_BPCR
HFP行前沿160LTDC_AWCR
VSYNC场同步脉冲宽度2LTDC_SSCR
VBP场后沿23LTDC_BPCR
VFP场前沿12LTDC_AWCR
像素时钟LCD_CLK频率≈51.7 MHzPLL4 + LTDC分频