Skip to main content

DSI

1. Overview

DSI (Display Serial Interface) is a high-speed serial communication interface used between display panels and display controllers. It is widely used in mobile devices, embedded systems, tablets, and other systems requiring high-performance displays. Developed by the MIPI (Mobile Industry Processor Interface) Alliance, DSI is a standardized interface protocol designed to reduce the number of pins required by devices and optimize power consumption.

2. Hardware Connections

The default supported DSI screen model for the Luckfox Omni3576 development board is the 10.1-DSI-TOUCH-A.If you wish to use a different screen, you will need to modify the relevant device tree configuration. For details, please refer to the SDK Environment Deployment - Device Tree Configuration,On the Omni3576 baseboard, the CSI (camera) and DSI (display) interfaces are similarly packaged. Be sure to connect the wiring correctly. The DSI interface is located next to the USB interface. Please note that if you are using a different baseboard, the specific layout may vary, so refer to the layout of your baseboard.

  1. Use a 22-pin FPC cable to connect the display's DSI interface to the DSI interface on the Luckfox Omni3576 baseboard. (Note: The blue side of the cable should face up.)
  2. Connect the display's power interface to the 5V and GND pins on the 40-pin header of the Luckfox Omni3576 baseboard, as shown below:

3. Checking Display Information

  • The available screen IDs on the current system can be checked using the following command:

    sudo cat /sys/kernel/debug/dri/0/summary
    Video Port0: DISABLED
    Video Port1: ACTIVE
    Connector:DSI-1 Encoder: DSI-203
    bus_format[100a]: RGB888_1X24
    overlay_mode[0] output_mode[0] SDR[0] color-encoding[BT.709] color-range[Full]
    Display mode: 800x1280p60
    clk[70000] real_clk[69883] type[48] flag[a]
    H: 800 840 860 880
    V: 1280 1300 1304 1324
    Fixed H: 800 840 860 880
    Fixed V: 1280 1300 1304 1324
    Esmart1-win0: ACTIVE
    win_id: 1
    format: XR24 little-endian (0x34325258) pixel_blend_mode[0] glb_alpha[0xff]
    color: SDR[0] color-encoding[BT.601] color-range[Limited]
    rotate: xmirror: 0 ymirror: 0 rotate_90: 0 rotate_270: 0
    csc: y2r[0] r2y[0] csc mode[0]
    zpos: 1
    src: pos[0, 0] rect[800 x 1280]
    dst: pos[0, 0] rect[800 x 1280]
    buf[0]: addr: 0x00000000fe44e000 pitch: 3200 offset: 0
    Video Port2: DISABLED

4. Rotating the Screen

  1. Rotate commands:

    xrandr -o left
    xrandr -o right
    xrandr -o normal
    xrandr -o inverted
  2. The effect of rotating with xrandr is temporary, and the screen orientation will reset after a system reboot. To make the screen rotate automatically on startup, modify the configuration file:

    sudo vim  /etc/X11/xorg.conf.d/10-monitor.conf

    ### Valid values for rotation are "normal", "left", "right"
    Section "Monitor"
    # Identifier "Default Monitor"
    Identifier "DSI-1"
    Option "Rotate" "right"
    EndSection

5. Touch Calibration

  1. After rotating the display, the touch direction may become inconsistent. To correct the touch orientation, perform the following actions:

    sudo vim  /etc/udev/rules.d/99-luckfox-touch.rules
  2. Add the appropriate configuration based on your rotation direction, save the file, and reboot the development board.

    90度:
    ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 -1 1 1 0 0"
    180度:
    ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1"
    270度:
    ENV{ID_INPUT_TOUCHSCREEN}=="1", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"