3、MIPI DSI 协议详解:D-PHY 物理层、Lane 配置、高速模式与低功耗模式、数据包格式
MIPI DSI(Display Serial Interface)是移动与嵌入式显示领域的事实标准串行接口。在 SA8155 平台中,DSI 接口负责将 GPU/显示控制器生成的图像数据高速传输至显示面板。本章深入解析 DSI 的物理层(D-PHY)、Lane 配置策略、两种工作模式以及数据包结构,为后续时序与 HDR 参数配置奠定基础。
3.1 D-PHY 物理层架构
D-PHY 是一种源同步、差分串行传输物理层,采用 1 对时钟 Lane + N 对数据 Lane 的拓扑结构。每个 Lane 由两条差分信号线(Dp/Dn)组成,支持高速(HS)和低功耗(LP)两种信号状态。
3.2 Lane 配置与带宽计算
SA8155 平台的 DSI 控制器支持 1、2、3、4 Lane 配置。Lane 数量的选择直接影响最大分辨率和刷新率。Lane 配置需在 DTS(Device Tree Source)中通过 qcom,mdss-dsi-lane-map 属性指定。
| Lane 数量 | 总带宽(Gbps) | 典型分辨率支持 | 适用场景 |
|---|---|---|---|
| 1 Lane | 2.5 | 720p @ 60fps | 低端仪表盘、辅助屏 |
| 2 Lane | 5.0 | 1080p @ 60fps | 中控信息娱乐屏 |
| 3 Lane | 7.5 | 1440p @ 60fps | 高端中控屏 |
| 4 Lane | 10.0 | 4K @ 60fps / 2K @ 120fps | 仪表盘 + 中控双屏、HDR 显示 |
3.2.1 DTS Lane 配置示例
/* SA8155 DSI Lane 配置片段 */
&mdss_mdp {
qcom,mdss-dsi-lane-map = "lane_map_3012"; // Lane 映射顺序
qcom,mdss-dsi-lane-count = <4>; // 启用 4 Lane
qcom,mdss-dsi-bpp = <24>; // 每像素 24 位
qcom,mdss-dsi-traffic-mode = "non_burst_sync_pulse";
qcom,mdss-dsi-h-sync-pulse = <1>;
qcom,mdss-dsi-bllp-eof-power-mode;
qcom,mdss-dsi-bllp-power-mode;
qcom,mdss-dsi-lane-0-state;
qcom,mdss-dsi-lane-1-state;
qcom,mdss-dsi-lane-2-state;
qcom,mdss-dsi-lane-3-state;
};
3.3 高速模式(HS)与低功耗模式(LP)
D-PHY 定义了两种工作模式,用于平衡数据传输效率与功耗:
- 高速模式(High Speed, HS): 使用差分信号(200mV 摆幅),时钟由专用 CLK Lane 提供,数据 Lane 在时钟双沿采样。用于传输大量像素数据。
- 低功耗模式(Low Power, LP): 使用单端信号(1.2V 摆幅),异步传输,无需时钟。用于传输命令、配置参数和短数据包。
两种模式之间的切换通过 Lane 状态序列 控制,由主机发送特定的 LP 状态组合完成。
3.4 数据包格式详解
DSI 协议定义了两种数据包类型:短数据包(Short Packet) 和 长数据包(Long Packet)。所有数据包在 HS 模式下通过数据 Lane 传输。
3.4.1 短数据包(Short Packet)
用于传输命令、状态和同步信息,固定 4 字节长度:
- 字节 0: 数据标识符(DI),包含虚拟通道号(VCX)和数据类型(DT)。
- 字节 1-2: 16 位数据负载(Word Count)。
- 字节 3: 错误校验码(ECC),可纠正 1 位错误、检测 2 位错误。
3.4.2 长数据包(Long Packet)
用于传输像素数据、大块配置参数,结构如下:
| 字段 | 长度(字节) | 描述 |
|---|---|---|
| Packet Header | 4 | DI(1B)+ Word Count(2B)+ ECC(1B) |
| Data Payload | 0~65535 | 实际数据内容,长度由 Word Count 指定 |
| Packet Footer | 2 | 16 位校验和(Checksum) |
qcom,mdss-dsi-panel-width 和 qcom,mdss-dsi-h-front-porch 不匹配,会导致显示画面偏移或撕裂。务必使用示波器抓取 DSI 总线波形验证包长度。
3.4.3 数据类型(DT)对照表
| DT 值(Hex) | 类型 | 说明 |
|---|---|---|
| 0x01 | V Sync Start | 垂直同步开始 |
| 0x21 | H Sync Start | 水平同步开始 |
| 0x29 | Pixel Stream (RGB888) | 24 位像素数据流 |
| 0x02 | Generic Short Write | 通用短写命令(0 参数) |
| 0x03 | Generic Short Write (1 param) | 通用短写命令(1 参数) |
| 0x05 | DCS Short Write | 显示命令集短写 |
| 0x06 | DCS Short Write (1 param) | 显示命令集短写(带参数) |
| 0x37 | Set Maximum Return Packet Size | 设置最大回包大小 |
3.5 多 Lane 分发机制
当使用 2 或 4 Lane 时,DSI 控制器将像素数据按 字节交错 方式分发到各数据 Lane。例如 4 Lane 配置下,每个时钟周期传输 4 字节数据:
/* 4 Lane 字节分发示例 */
Clock Cycle 0: Lane0=Byte0, Lane1=Byte1, Lane2=Byte2, Lane3=Byte3
Clock Cycle 1: Lane0=Byte4, Lane1=Byte5, Lane2=Byte6, Lane3=Byte7
Clock Cycle 2: Lane0=Byte8, Lane1=Byte9, Lane2=Byte10, Lane3=Byte11
...
接收端(显示面板)必须按照相同的 Lane 映射顺序重组字节流。SA8155 的 lane_map_3012 表示物理 Lane 3 对应逻辑 Lane 0,物理 Lane 0 对应逻辑 Lane 1,以此类推。