跳到主要内容

DSI

1. 简介

DSI(Display Serial Interface)是一种用于显示面板与显示控制器之间的高速串行通信接口,主要由移动设备、嵌入式系统、平板电脑和其他需要高性能显示的系统广泛使用。它由MIPI(移动行业处理器接口,Mobile Industry Processor Interface)联盟制定,是一种标准化的接口协议,旨在减少设备的引脚数量并优化功耗。

2. 硬件连接

Luckfox Lyra 连接 10.1-DSI-TOUCH-A 屏幕

  1. 使用 22PIN 的 FPC 排线,将显示屏 DSI 接口连接到 Luckfox-Lyra 主板的 DSI 接口。(注意:排线的蓝色端朝向开发板芯片,
  2. 使用 MX1.25 2PIN 转 4PIN 连接线,将显示屏的电源接口连接到 Luckfox-Lyra 主板的 USB MX1.25 4P 接口。如下图所示:

Luckfox Lyra 连接树莓派 DSI屏幕

  1. 使用 15PIN 转 22PIN 的 FPC 排线Pi5-Display-Cable排线的黑色端朝向开发板芯片。

3. 兼容屏幕

Luckfox Lyra 系列开发板默认支持的 DSI 屏幕型号为 10.1-DSI-TOUCH-A。此外,我们还适配了幸狐官方、树莓派兼容以及微雪 DSI 屏幕,确保其显示和触摸功能正常工作。

可通过开发板内置的 luckfox-config 工具选择与所接屏幕对应的配置。如需进行定制,也可参考 SDK 设备树配置说明 修改相关设备树。切换屏幕配置后,请重启开发板使配置生效。

表中的分辨率是选择对应屏幕配置及执行显示测试时使用的原生显示模式。

树莓派 DSI V1 兼容屏幕

型号分辨率
4.3inch DSI LCD800 x 480
5inch DSI LCD800 x 480
7inch DSI LCD800 x 480
8inch DSI LCD800 x 480

树莓派兼容 DSI 屏幕

型号分辨率
2.8inch DSI480 x 640
3.4inch DSI800 x 800
4.0inch DSI480 x 800
5.0inch / 7.0inch DSI1024 x 600
7.9inch DSI400 x 1280
8.0inch / 10.1inch DSI1280 x 800
11.9inch DSI320 x 1480
4.0inch DSI-C720 x 720
5.0inch DSI-D720 x 1280
6.25inch DSI720 x 1560
8.8inch DSI480 x 1920
7.0inch DSI-H1280 x 720

微雪 DSI 屏幕

型号分辨率
10.1-DSI-TOUCH-A800 x 1280
10.1-DSI-TOUCH-B / 9-DSI-TOUCH-B720 x 1280
8.8-DSI-TOUCH-A480 x 1920
8-DSI-TOUCH-A800 x 1280
7-DSI-TOUCH-A720 x 1280
7-DSI-TOUCH-C1024 x 600
5.5-DSI-TOUCH-A720 x 1280
5-DSI-TOUCH-A720 x 1280
4.3-DSI-TOUCH-A480 x 800
4-DSI-TOUCH-A480 x 800
4-DSI-TOUCH-C720 x 720
3.4-DSI-TOUCH-C800 x 800

4. 查看屏幕信息

  • 当前系统中可用的屏幕 ID 可通过以下命令查看:

    cat /sys/kernel/debug/dri/0/summary
  • 输出:

    VOP [ff600000.vop]: ACTIVE
    Connector: DSI-1
    bus_format[100a]: RGB888_1X24
    overlay_mode[0] output_mode[0]color-encoding[1] color-range[1]
    Display mode: 800x1280p60
    dclk[70000 kHz] real_dclk[69475 kHz] aclk[294912 kHz] type[48] flag[a]
    H: 800 840 860 880
    V: 1280 1310 1314 1324
    win1-0: ACTIVE
    format: XR24 little-endian (0x34325258) SDR[0] color-encoding[0] color-range[0]
    csc: y2r[0] r2r[0] r2y[0] csc mode[0]
    zpos: 0
    src: pos[0x0] rect[800x1280]
    dst: pos[0x0] rect[800x1280]
    buf[0]: addr: 0x06100000 pitch: 3200 offset: 0
    post: sdr2hdr[0] hdr2sdr[0]
    pre : sdr2hdr[0]
    post CSC: r2y[0] y2r[0] CSC mode[2]

5. 显示测试

在 Lyra 上使用 modetest 显示彩条测试图案。Connector ID、CRTC ID 和分辨率必须与当前选择的屏幕配置一致。

  1. 查询 DSI 接口及其可用显示模式:

    modetest -M rockchip | grep -A10 "Connectors:"

    找到状态为 connectedDSI-1 行,第一列即为 Connector ID。其下方 modes 中的 #0 行会显示当前屏幕配置提供的分辨率。

  2. 查询 CRTC ID:

    modetest -M rockchip | grep -A10 "CRTCs:"

    已启用 CRTC 所在行的第一列即为 CRTC ID,其尺寸应与 DSI-1 显示的分辨率一致。

  3. 使用查询到的 ID 和分辨率执行标准彩条测试:

    modetest -M rockchip -s <Connector ID>@<CRTC ID>:<宽度>x<高度>

    例如,查询到 Connector ID 为 74、CRTC ID 为 71 时,应根据所接屏幕使用对应命令:

    屏幕测试命令
    10.1-DSI-TOUCH-A(800 x 1280modetest -M rockchip -s 74@71:800x1280
    7-DSI-TOUCH-C(1024 x 600modetest -M rockchip -s 74@71:1024x600
    4-DSI-TOUCH-C(720 x 720modetest -M rockchip -s 74@71:720x720
  4. 如需显示斜向彩条,可在命令末尾添加 -Ftiles

    modetest -M rockchip -s <Connector ID>@<CRTC ID>:<宽度>x<高度> -Ftiles
提示

示例中的 ID 仅供参考,不同软件版本的 ID 可能不同。请始终以 modetest 查询到的 ID 和分辨率为准。如果 DSI-1 下没有显示预期分辨率,请通过 luckfox-config 选择对应的屏幕配置,或修改设备树并重启后再测试。

6. 触摸测试

  • 使用 evtest 命令进行触摸屏测试,检查触摸输入设备的响应。执行以下命令:

    evtest
  • 运行该命令后,正常情况下会显示类似以下的输出,入“0”回车后触摸屏幕开始测试,终端会打印触摸操作触发的事件数值:

    No device specified, trying to scan all of /dev/input/event*
    Available devices:
    /dev/input/event0: 2-005d Goodix Capacitive TouchScreen
    Select the device event number [0-0]:

7. 背光控制

其他适配屏幕共用同一个驱动,支持0~255级背光控制,背光控制的命令为:

# brightness level:0 ~ 255
echo <brightness level> > /sys/class/backlight/waveshare_bl/brightness