|
|
@@ -408,157 +408,6 @@ TEST_CASE("lcd panel with i80 interface (st7789, 8bits)", "[lcd]")
|
|
|
#undef TEST_IMG_SIZE
|
|
|
}
|
|
|
|
|
|
-// The following test shows a porting example of LVGL GUI library
|
|
|
-// To run the LVGL tests, you need to clone the LVGL library into components directory firstly
|
|
|
-#if CONFIG_LV_USE_USER_DATA
|
|
|
-#include "test_lvgl_port.h"
|
|
|
-
|
|
|
-static bool notify_lvgl_ready_to_flush(esp_lcd_panel_io_handle_t panel_io, esp_lcd_panel_io_event_data_t *edata, void *user_ctx)
|
|
|
-{
|
|
|
- lv_disp_t *disp = *(lv_disp_t **)user_ctx;
|
|
|
- lv_disp_flush_ready(&disp->driver);
|
|
|
- return false;
|
|
|
-}
|
|
|
-
|
|
|
-TEST_CASE("lvgl gui with i80 interface (st7789, 8bits)", "[lcd][lvgl][ignore]")
|
|
|
-{
|
|
|
- // initialize LVGL graphics library
|
|
|
- lv_disp_t *disp = NULL;
|
|
|
- lv_init();
|
|
|
-
|
|
|
- gpio_config_t bk_gpio_config = {
|
|
|
- .mode = GPIO_MODE_OUTPUT,
|
|
|
- .pin_bit_mask = 1ULL << TEST_LCD_BK_LIGHT_GPIO
|
|
|
- };
|
|
|
- TEST_ESP_OK(gpio_config(&bk_gpio_config));
|
|
|
-
|
|
|
- esp_lcd_i80_bus_handle_t i80_bus = NULL;
|
|
|
- esp_lcd_i80_bus_config_t bus_config = {
|
|
|
- .dc_gpio_num = TEST_LCD_DC_GPIO,
|
|
|
- .wr_gpio_num = TEST_LCD_PCLK_GPIO,
|
|
|
- .data_gpio_nums = {
|
|
|
- TEST_LCD_DATA0_GPIO,
|
|
|
- TEST_LCD_DATA1_GPIO,
|
|
|
- TEST_LCD_DATA2_GPIO,
|
|
|
- TEST_LCD_DATA3_GPIO,
|
|
|
- TEST_LCD_DATA4_GPIO,
|
|
|
- TEST_LCD_DATA5_GPIO,
|
|
|
- TEST_LCD_DATA6_GPIO,
|
|
|
- TEST_LCD_DATA7_GPIO,
|
|
|
- },
|
|
|
- .bus_width = 8,
|
|
|
- .max_transfer_bytes = TEST_LCD_H_RES * 40 * sizeof(uint16_t)
|
|
|
- };
|
|
|
- TEST_ESP_OK(esp_lcd_new_i80_bus(&bus_config, &i80_bus));
|
|
|
- esp_lcd_panel_io_handle_t io_handle = NULL;
|
|
|
- esp_lcd_panel_io_i80_config_t io_config = {
|
|
|
- .cs_gpio_num = TEST_LCD_CS_GPIO,
|
|
|
- .pclk_hz = 10000000, // 10MHz
|
|
|
- .trans_queue_depth = 10,
|
|
|
- .dc_levels = {
|
|
|
- .dc_idle_level = 0,
|
|
|
- .dc_cmd_level = 0,
|
|
|
- .dc_dummy_level = 0,
|
|
|
- .dc_data_level = 1,
|
|
|
- },
|
|
|
- .flags = {
|
|
|
- .swap_color_bytes = 1,
|
|
|
- },
|
|
|
- .on_color_trans_done = notify_lvgl_ready_to_flush,
|
|
|
- .user_ctx = &disp,
|
|
|
- .lcd_cmd_bits = 8,
|
|
|
- .lcd_param_bits = 8,
|
|
|
- };
|
|
|
- TEST_ESP_OK(esp_lcd_new_panel_io_i80(i80_bus, &io_config, &io_handle));
|
|
|
-
|
|
|
- esp_lcd_panel_handle_t panel_handle = NULL;
|
|
|
- esp_lcd_panel_dev_config_t panel_config = {
|
|
|
- .reset_gpio_num = TEST_LCD_RST_GPIO,
|
|
|
- .color_space = ESP_LCD_COLOR_SPACE_RGB,
|
|
|
- .bits_per_pixel = 16,
|
|
|
- };
|
|
|
- TEST_ESP_OK(esp_lcd_new_panel_st7789(io_handle, &panel_config, &panel_handle));
|
|
|
-
|
|
|
- // turn off backlight
|
|
|
- gpio_set_level(TEST_LCD_BK_LIGHT_GPIO, 0);
|
|
|
- esp_lcd_panel_reset(panel_handle);
|
|
|
- esp_lcd_panel_init(panel_handle);
|
|
|
- esp_lcd_panel_invert_color(panel_handle, true);
|
|
|
- // the gap is LCD panel specific, even panels with the same driver IC, can have different gap value
|
|
|
- esp_lcd_panel_set_gap(panel_handle, 0, 20);
|
|
|
- // turn on backlight
|
|
|
- gpio_set_level(TEST_LCD_BK_LIGHT_GPIO, 1);
|
|
|
-
|
|
|
- test_lvgl_task_loop(panel_handle, TEST_LCD_H_RES, TEST_LCD_V_RES, &disp);
|
|
|
-}
|
|
|
-
|
|
|
-#define TEST_NT35510_DATA_WIDTH (8) // change this to 16 when NT35510 is configured to 16bit in length
|
|
|
-TEST_CASE("lvgl gui with i80 interface (nt35510, 8/16bits)", "[lcd][lvgl][ignore]")
|
|
|
-{
|
|
|
- // initialize LVGL graphics library
|
|
|
- lv_disp_t *disp = NULL;
|
|
|
- lv_init();
|
|
|
-
|
|
|
- esp_lcd_i80_bus_handle_t i80_bus = NULL;
|
|
|
- esp_lcd_i80_bus_config_t bus_config = {
|
|
|
- .dc_gpio_num = TEST_LCD_DC_GPIO,
|
|
|
- .wr_gpio_num = TEST_LCD_PCLK_GPIO,
|
|
|
- .data_gpio_nums = {
|
|
|
- TEST_LCD_DATA0_GPIO,
|
|
|
- TEST_LCD_DATA1_GPIO,
|
|
|
- TEST_LCD_DATA2_GPIO,
|
|
|
- TEST_LCD_DATA3_GPIO,
|
|
|
- TEST_LCD_DATA4_GPIO,
|
|
|
- TEST_LCD_DATA5_GPIO,
|
|
|
- TEST_LCD_DATA6_GPIO,
|
|
|
- TEST_LCD_DATA7_GPIO,
|
|
|
- TEST_LCD_DATA8_GPIO,
|
|
|
- TEST_LCD_DATA9_GPIO,
|
|
|
- TEST_LCD_DATA10_GPIO,
|
|
|
- TEST_LCD_DATA11_GPIO,
|
|
|
- TEST_LCD_DATA12_GPIO,
|
|
|
- TEST_LCD_DATA13_GPIO,
|
|
|
- TEST_LCD_DATA14_GPIO,
|
|
|
- TEST_LCD_DATA15_GPIO,
|
|
|
- },
|
|
|
- .bus_width = TEST_NT35510_DATA_WIDTH,
|
|
|
- .max_transfer_bytes = TEST_LCD_H_RES * 40 * sizeof(uint16_t)
|
|
|
- };
|
|
|
- TEST_ESP_OK(esp_lcd_new_i80_bus(&bus_config, &i80_bus));
|
|
|
- esp_lcd_panel_io_handle_t io_handle = NULL;
|
|
|
- esp_lcd_panel_io_i80_config_t io_config = {
|
|
|
- .cs_gpio_num = TEST_LCD_CS_GPIO,
|
|
|
- .pclk_hz = 10000000, // 10MHz
|
|
|
- .trans_queue_depth = 4,
|
|
|
- .dc_levels = {
|
|
|
- .dc_idle_level = 0,
|
|
|
- .dc_cmd_level = 0,
|
|
|
- .dc_dummy_level = 0,
|
|
|
- .dc_data_level = 1,
|
|
|
- },
|
|
|
- .on_color_trans_done = notify_lvgl_ready_to_flush,
|
|
|
- .user_ctx = &disp,
|
|
|
- .lcd_cmd_bits = 16,
|
|
|
- .lcd_param_bits = 16,
|
|
|
- };
|
|
|
- TEST_ESP_OK(esp_lcd_new_panel_io_i80(i80_bus, &io_config, &io_handle));
|
|
|
-
|
|
|
- esp_lcd_panel_handle_t panel_handle = NULL;
|
|
|
- esp_lcd_panel_dev_config_t panel_config = {
|
|
|
- .reset_gpio_num = -1,
|
|
|
- .color_space = ESP_LCD_COLOR_SPACE_RGB,
|
|
|
- .bits_per_pixel = 16,
|
|
|
- };
|
|
|
- TEST_ESP_OK(esp_lcd_new_panel_nt35510(io_handle, &panel_config, &panel_handle));
|
|
|
-
|
|
|
- esp_lcd_panel_reset(panel_handle);
|
|
|
- esp_lcd_panel_init(panel_handle);
|
|
|
- esp_lcd_panel_swap_xy(panel_handle, true);
|
|
|
- esp_lcd_panel_mirror(panel_handle, true, false);
|
|
|
-
|
|
|
- test_lvgl_task_loop(panel_handle, TEST_LCD_H_RES, TEST_LCD_V_RES, &disp);
|
|
|
-}
|
|
|
-#endif // CONFIG_LV_USE_USER_DATA
|
|
|
#endif // SOC_LCD_I80_SUPPORTED
|
|
|
|
|
|
#if SOC_I2S_LCD_I80_VARIANT
|