Skip to content

Using usb_host_uvc to connect the USB camera causes screen tearing when displayed on the MIPI LCD. (AEGHB-1309) #609

@KineticChen

Description

@KineticChen

The screen I am using is ST7701, with MIPI-2line interface, and the resolution is 854*480.Here are the screen parameters that I have set.

`esp_lcd_dsi_bus_handle_t mipi_dsi_bus = NULL;
esp_lcd_dsi_bus_config_t bus_config = {
.bus_id = 0,
.num_data_lanes = 2,
.lane_bit_rate_mbps = 940,
.phy_clk_src = MIPI_DSI_PHY_CLK_SRC_DEFAULT,
};

ESP_GOTO_ON_ERROR(esp_lcd_new_dsi_bus(&bus_config, &mipi_dsi_bus), err, TAG, "LCD init failed");

ESP_LOGI(TAG, "Install MIPI DSI LCD control panel");

esp_lcd_dbi_io_config_t dbi_config = ST7701_PANEL_IO_DBI_CONFIG();

ESP_GOTO_ON_ERROR(esp_lcd_new_panel_io_dbi(mipi_dsi_bus, &dbi_config, &io_handle), err, TAG, "LCD init failed");

esp_lcd_dpi_panel_config_t dpi_config = {                 \
    .dpi_clk_src = MIPI_DSI_DPI_CLK_SRC_DEFAULT,          \
    .dpi_clock_freq_mhz = 15,                             \
    .virtual_channel = 0,                                 \
    .pixel_format = MIPI_DPI_PX_FORMA,                   \
    .num_fbs = 3,                                         \
    .video_timing = {                                     \
        .h_size = LCD_H_RES,                      \
        .v_size = LCD_V_RES,                      \
        .hsync_back_porch = 30,                           \
        .hsync_pulse_width = 4,                           \
        .hsync_front_porch = 50,                          \
        .vsync_back_porch = 10,                           \
        .vsync_pulse_width = 8,                           \
        .vsync_front_porch = 20,                          \
    },                                                    \
    .flags.use_dma2d = true,                              \
};

st7701_vendor_config_t vendor_config = {
    .init_cmds = lcd_init_cmds,      // Uncomment these line if use custom initialization commands
    .init_cmds_size = sizeof(lcd_init_cmds) / sizeof(st7701_lcd_init_cmd_t),
    .flags.use_mipi_interface = 1,
    .mipi_config = {
        .dsi_bus = mipi_dsi_bus,
        .dpi_config = &dpi_config,
    },
};
const esp_lcd_panel_dev_config_t panel_config = {
    .reset_gpio_num = EXAMPLE_PIN_NUM_LCD_RST,
    .rgb_ele_order = LCD_RGB_ELEMENT_ORDER_RGB,
    .bits_per_pixel = LCD_PIXEL_BITS,
    .vendor_config = &vendor_config,
};`

The screen displays normally without tearing when using the lvgl demo. However, when displaying the USB camera, the picture is normal when the camera is stationary or moving slowly, but it will experience tearing when the camera is shaken rapidly. How should this situation be handled? (PPA rotation and zooming, JPEG decoding are used.)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions