Fixes
This commit is contained in:
parent
36d210e1e2
commit
efde86778b
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@ -14,5 +14,6 @@
|
||||
"--background-index",
|
||||
"--query-driver=/home/thomas/.espressif/tools/riscv32-esp-elf/esp-14.2.0_20251107/riscv32-esp-elf/bin/riscv32-esp-elf-gcc",
|
||||
"--compile-commands-dir=/home/thomas/projekte/test1/display/build"
|
||||
]
|
||||
],
|
||||
"idf.flashType": "UART"
|
||||
}
|
||||
|
||||
@ -1,4 +1,19 @@
|
||||
dependencies:
|
||||
espressif/button:
|
||||
component_hash:
|
||||
fccb18c37f1cfe0797b74a53a44d3f400f5fd01f4993b40052dfb7f401915089
|
||||
dependencies:
|
||||
- name: espressif/cmake_utilities
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: '*'
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 4.1.5
|
||||
espressif/cmake_utilities:
|
||||
component_hash:
|
||||
351350613ceafba240b761b4ea991e0f231ac7a9f59a9ee901f751bddc0bb18f
|
||||
@ -36,6 +51,100 @@ dependencies:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 1.2.0~1
|
||||
espressif/esp_lv_decoder:
|
||||
component_hash:
|
||||
0eb7b2bceaf73484ef80f5004337ee31617b2450a3d40621812998a47e7dd349
|
||||
dependencies:
|
||||
- name: espressif/esp_new_jpeg
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 0.*
|
||||
- name: espressif/libpng
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 1.*
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.3'
|
||||
- name: lvgl/lvgl
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: '>=8,<10'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
targets:
|
||||
- esp32
|
||||
- esp32s2
|
||||
- esp32s3
|
||||
- esp32p4
|
||||
- esp32c2
|
||||
- esp32c3
|
||||
- esp32c5
|
||||
- esp32c6
|
||||
version: 0.3.2
|
||||
espressif/esp_lv_fs:
|
||||
component_hash:
|
||||
66896007884b817df34c964f9a114fff538ee2674e99fee7159162498b93f94b
|
||||
dependencies:
|
||||
- name: espressif/cmake_utilities
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 0.*
|
||||
- name: espressif/esp_mmap_assets
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: '>=1.2'
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.4'
|
||||
- name: lvgl/lvgl
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: '>=8,<10'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.1
|
||||
espressif/esp_lvgl_adapter:
|
||||
component_hash:
|
||||
4ba6ad754b2533cb582bff81ba672ea7a682f4724a02327e57f96e9c73d330c2
|
||||
dependencies:
|
||||
- name: espressif/button
|
||||
registry_url: https://components.espressif.com
|
||||
require: public
|
||||
version: 4.*
|
||||
- name: espressif/esp_lcd_touch
|
||||
registry_url: https://components.espressif.com
|
||||
require: public
|
||||
version: 1.*
|
||||
- name: espressif/esp_lv_decoder
|
||||
registry_url: https://components.espressif.com
|
||||
require: public
|
||||
version: 0.*
|
||||
- name: espressif/esp_lv_fs
|
||||
registry_url: https://components.espressif.com
|
||||
require: public
|
||||
version: 1.*
|
||||
- name: espressif/freetype
|
||||
registry_url: https://components.espressif.com
|
||||
require: public
|
||||
version: 2.*
|
||||
- name: espressif/knob
|
||||
registry_url: https://components.espressif.com
|
||||
require: public
|
||||
version: 1.*
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.5'
|
||||
- name: lvgl/lvgl
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: '>=8,<10'
|
||||
source:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 0.3.0
|
||||
espressif/esp_lvgl_port:
|
||||
component_hash:
|
||||
f872401524cb645ee6ff1c9242d44fb4ddcfd4d37d7be8b9ed3f4e85a404efcd
|
||||
@ -51,6 +160,49 @@ dependencies:
|
||||
registry_url: https://components.espressif.com/
|
||||
type: service
|
||||
version: 2.7.0
|
||||
espressif/esp_mmap_assets:
|
||||
component_hash:
|
||||
91d785326b03db15e2f7f1314d8c976d38f21aa5759b570dcbbc89bcf247fd27
|
||||
dependencies:
|
||||
- name: espressif/cmake_utilities
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 0.*
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.4.0
|
||||
espressif/esp_new_jpeg:
|
||||
component_hash:
|
||||
e6af208a875abd0ecfc0213d3751a11b504b463ebde6930f24096047925fa5c1
|
||||
dependencies: []
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
targets:
|
||||
- esp32
|
||||
- esp32s2
|
||||
- esp32s3
|
||||
- esp32p4
|
||||
- esp32c2
|
||||
- esp32c3
|
||||
- esp32c5
|
||||
- esp32c6
|
||||
version: 0.6.1
|
||||
espressif/freetype:
|
||||
component_hash:
|
||||
cd5e2d8458e6e8d73f1120ac474467cabb669d8ea4b25050bf6a348c1e89225e
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.4'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 2.13.3~1
|
||||
espressif/i2c_bus:
|
||||
component_hash:
|
||||
4e990dc11734316186b489b362c61d41f23f79d58bc169795cec215e528cba14
|
||||
@ -66,6 +218,47 @@ dependencies:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.5.0
|
||||
espressif/knob:
|
||||
component_hash:
|
||||
138ed090b4c9090a0a678f695b9d1884b368130c729b7333ed35bd7f4e8da80e
|
||||
dependencies:
|
||||
- name: espressif/cmake_utilities
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: 0.*
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.4.1'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.0.2
|
||||
espressif/libpng:
|
||||
component_hash:
|
||||
6eb993575e30da281faa37cecda2338ccf6d11dbd12234937758278d1c78b4fd
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=5.0'
|
||||
- name: espressif/zlib
|
||||
registry_url: https://components.espressif.com
|
||||
require: private
|
||||
version: ^1.2.13
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.6.52
|
||||
espressif/zlib:
|
||||
component_hash:
|
||||
d901723af51f13fc8e5824f39f32239c847956e8fd951a05266588dc5cfbb9ae
|
||||
dependencies:
|
||||
- name: idf
|
||||
require: private
|
||||
version: '>=4.4'
|
||||
source:
|
||||
registry_url: https://components.espressif.com
|
||||
type: service
|
||||
version: 1.3.1
|
||||
idf:
|
||||
source:
|
||||
type: idf
|
||||
@ -101,10 +294,11 @@ dependencies:
|
||||
version: 1.0.4
|
||||
direct_dependencies:
|
||||
- espressif/esp_lcd_touch_gt911
|
||||
- espressif/esp_lvgl_adapter
|
||||
- espressif/esp_lvgl_port
|
||||
- idf
|
||||
- lvgl/lvgl
|
||||
- waveshare/esp_lcd_jd9365_10_1
|
||||
manifest_hash: 1b3972520800645b8020e1ad5d7fcfe89a9006c17fff1fcaa83ae8df9e2314ff
|
||||
manifest_hash: df48f0c889a77855e4d9de37a676a02669553fe2b7fdf43547783bcf8f97c123
|
||||
target: esp32p4
|
||||
version: 2.0.0
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
idf_component_register(SRCS "hello_world_main.c"
|
||||
PRIV_REQUIRES spi_flash esp_lcd
|
||||
REQUIRES esp_timer lvgl
|
||||
PRIV_REQUIRES spi_flash esp_driver_ppa esp_lcd
|
||||
REQUIRES esp_mm esp_driver_ppa esp_timer lvgl
|
||||
INCLUDE_DIRS "")
|
||||
|
||||
@ -16,6 +16,8 @@
|
||||
#include "esp_ldo_regulator.h"
|
||||
#include "esp_lcd_touch_gt911.h"
|
||||
#include "lvgl.h"
|
||||
#include "esp_timer.h"
|
||||
#include "esp_lv_adapter.h"
|
||||
#include "esp_lcd_jd9365_10_1.h"
|
||||
|
||||
#define TAG "JD9365_LVGL"
|
||||
@ -43,26 +45,19 @@
|
||||
static esp_lcd_panel_handle_t panel_handle = NULL;
|
||||
static esp_lcd_touch_handle_t touch_handle = NULL;
|
||||
static lv_display_t *display = NULL;
|
||||
static uint8_t *buf1 = NULL;
|
||||
static uint8_t *buf2 = NULL;
|
||||
|
||||
// ================= Callbacks ===================
|
||||
static bool on_color_trans_done(esp_lcd_panel_handle_t panel, esp_lcd_dpi_panel_event_data_t *event_data, void *user_ctx)
|
||||
{
|
||||
BaseType_t high_task_awoken = pdFALSE;
|
||||
if (display) {
|
||||
lv_display_flush_ready(display);
|
||||
}
|
||||
return high_task_awoken == pdTRUE;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// ================= Flush Callback ===================
|
||||
static void lvgl_flush_cb(lv_display_t *disp, const lv_area_t *area, uint8_t *color_p)
|
||||
{
|
||||
// Warte bis vorheriger Transfer fertig ist
|
||||
esp_lcd_panel_draw_bitmap(panel_handle, area->x1, area->y1,
|
||||
area->x2 + 1, area->y2 + 1, color_p);
|
||||
}
|
||||
|
||||
static void lvgl_touch_cb(lv_indev_t *indev, lv_indev_data_t *data)
|
||||
{
|
||||
uint16_t x[1], y[1];
|
||||
@ -98,6 +93,10 @@ static void lcd_init(void)
|
||||
esp_lcd_new_panel_io_dbi(mipi_dsi_bus, &io_cfg, &mipi_dbi_io);
|
||||
|
||||
esp_lcd_dpi_panel_config_t dpi_cfg = JD9365_800_1280_PANEL_60HZ_DPI_CONFIG(LCD_COLOR_PIXEL_FORMAT_RGB565);
|
||||
dpi_cfg.num_fbs = esp_lv_adapter_get_required_frame_buffer_count(
|
||||
ESP_LV_ADAPTER_TEAR_AVOID_MODE_DEFAULT_MIPI_DSI, // Tearing mode
|
||||
ESP_LV_ADAPTER_ROTATE_90 // Rotation
|
||||
);
|
||||
jd9365_vendor_config_t vendor_cfg = {
|
||||
.flags = { .use_mipi_interface = 1 },
|
||||
.mipi_config = { .dsi_bus = mipi_dsi_bus, .dpi_config = &dpi_cfg, .lane_num = MIPI_DSI_LANE_NUM }
|
||||
@ -112,10 +111,10 @@ static void lcd_init(void)
|
||||
|
||||
esp_lcd_panel_reset(panel_handle);
|
||||
esp_lcd_panel_init(panel_handle);
|
||||
ESP_ERROR_CHECK(esp_lcd_dpi_panel_get_frame_buffer(panel_handle, 2, (void **)&buf1, (void **)&buf2));
|
||||
esp_lcd_panel_disp_on_off(panel_handle, true);
|
||||
|
||||
esp_lcd_dpi_panel_event_callbacks_t cbs = { .on_color_trans_done = on_color_trans_done };
|
||||
esp_lcd_dpi_panel_register_event_callbacks(panel_handle, &cbs, NULL);
|
||||
|
||||
}
|
||||
|
||||
// ================= Touch init ===================
|
||||
@ -143,7 +142,7 @@ static void touch_init(void)
|
||||
.rst_gpio_num = TOUCH_RST_GPIO,
|
||||
.int_gpio_num = TOUCH_INT_GPIO,
|
||||
.levels = { .reset = 0, .interrupt = 0 },
|
||||
.flags = { .swap_xy = 0, .mirror_x = 0, .mirror_y = 0 },
|
||||
.flags = { .swap_xy = 1, .mirror_x = 1, .mirror_y = 0 },
|
||||
};
|
||||
ESP_ERROR_CHECK(esp_lcd_touch_new_i2c_gt911(touch_io, &touch_cfg, &touch_handle));
|
||||
}
|
||||
@ -151,54 +150,74 @@ static void touch_init(void)
|
||||
// ================= LVGL init ===================
|
||||
static void lvgl_init(void)
|
||||
{
|
||||
lv_init();
|
||||
|
||||
lv_display_t *disp = lv_display_create(LCD_H_RES, LCD_V_RES);
|
||||
display = disp;
|
||||
lv_display_set_color_format(disp, LV_COLOR_FORMAT_RGB565);
|
||||
esp_lv_adapter_config_t cfg = ESP_LV_ADAPTER_DEFAULT_CONFIG();
|
||||
ESP_ERROR_CHECK(esp_lv_adapter_init(&cfg));
|
||||
|
||||
// Full-screen double buffer für bessere Performance mit DPI Panel
|
||||
size_t buf_size = LCD_H_RES * 200 * sizeof(uint16_t);
|
||||
uint8_t *buf1 = heap_caps_aligned_alloc(64, buf_size, MALLOC_CAP_SPIRAM | MALLOC_CAP_DMA);
|
||||
uint8_t *buf2 = heap_caps_aligned_alloc(64, buf_size, MALLOC_CAP_SPIRAM | MALLOC_CAP_DMA);
|
||||
esp_lv_adapter_display_config_t disp_cfg = ESP_LV_ADAPTER_DISPLAY_MIPI_DEFAULT_CONFIG(
|
||||
panel_handle, // LCD panel handle
|
||||
NULL, // LCD panel IO handle (can be NULL for some interfaces)
|
||||
LCD_H_RES, // Horizontal resolution
|
||||
LCD_V_RES, // Vertical resolution
|
||||
ESP_LV_ADAPTER_ROTATE_90 // Rotation
|
||||
);
|
||||
display = esp_lv_adapter_register_display(&disp_cfg);
|
||||
assert(display != NULL);
|
||||
|
||||
if (!buf1 || !buf2) {
|
||||
ESP_LOGE(TAG, "Failed to allocate buffers!");
|
||||
return;
|
||||
}
|
||||
esp_lv_adapter_touch_config_t touch_cfg = ESP_LV_ADAPTER_TOUCH_DEFAULT_CONFIG(display, touch_handle);
|
||||
lv_indev_t *touch = esp_lv_adapter_register_touch(&touch_cfg);
|
||||
lv_indev_set_read_cb(touch, lvgl_touch_cb);
|
||||
assert(touch != NULL);
|
||||
|
||||
lv_display_set_buffers(disp, buf1, buf2, buf_size, LV_DISPLAY_RENDER_MODE_PARTIAL);
|
||||
lv_display_set_flush_cb(disp, lvgl_flush_cb);
|
||||
lv_display_set_default(disp);
|
||||
ESP_ERROR_CHECK(esp_lv_adapter_start());
|
||||
}
|
||||
|
||||
lv_indev_t *indev = lv_indev_create();
|
||||
lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);
|
||||
lv_indev_set_read_cb(indev, lvgl_touch_cb);
|
||||
lv_indev_set_display(indev, disp);
|
||||
static lv_obj_t * label2;
|
||||
|
||||
static void slider_event_cb(lv_event_t * e)
|
||||
{
|
||||
lv_obj_t * slider = lv_event_get_target_obj(e);
|
||||
|
||||
/*Refresh the text*/
|
||||
lv_label_set_text_fmt(label2, "%" LV_PRId32, lv_slider_get_value(slider));
|
||||
//lv_obj_align_to(label2, slider, LV_ALIGN_OUT_TOP_MID, 0, -15); /*Align top of the slider*/
|
||||
}
|
||||
|
||||
uint32_t my_get_milliseconds()
|
||||
{
|
||||
return esp_timer_get_time() / 1000;
|
||||
}
|
||||
|
||||
// ================= UI ===================
|
||||
static void create_ui(void)
|
||||
{
|
||||
lv_obj_t *tileview = lv_tileview_create(lv_screen_active());
|
||||
if (esp_lv_adapter_lock(-1) == ESP_OK) {
|
||||
lv_obj_t *tileview = lv_tileview_create(lv_scr_act());
|
||||
|
||||
// Page 1 - Blue
|
||||
lv_obj_t *tile1 = lv_tileview_add_tile(tileview, 0, 0, LV_DIR_BOTTOM);
|
||||
lv_obj_set_style_bg_color(tile1, lv_color_hex(0x2196F3), 0);
|
||||
lv_obj_t *label1 = lv_label_create(tile1);
|
||||
lv_label_set_text(label1, "Seite 1\n\nSwipe nach oben");
|
||||
lv_obj_set_style_text_color(label1, lv_color_white(), 0);
|
||||
lv_obj_set_style_text_font(label1, &lv_font_montserrat_28, 0);
|
||||
lv_obj_set_style_text_color(label1, lv_color_black(), 0);
|
||||
lv_obj_set_style_text_font(label1, &lv_font_montserrat_14, 0);
|
||||
lv_obj_center(label1);
|
||||
|
||||
lv_obj_t * slider = lv_slider_create(tile1);
|
||||
lv_obj_set_width(slider, 200); /*Set the width*/
|
||||
lv_obj_center(slider); /*Align to the center of the parent (screen)*/
|
||||
lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
||||
|
||||
// Page 2 - Green
|
||||
lv_obj_t *tile2 = lv_tileview_add_tile(tileview, 0, 1, LV_DIR_TOP);
|
||||
lv_obj_set_style_bg_color(tile2, lv_color_hex(0x4CAF50), 0);
|
||||
lv_obj_t *label2 = lv_label_create(tile2);
|
||||
label2 = lv_label_create(tile2);
|
||||
lv_label_set_text(label2, "Seite 2\n\nSwipe nach unten");
|
||||
lv_obj_set_style_text_color(label2, lv_color_white(), 0);
|
||||
lv_obj_set_style_text_font(label2, &lv_font_montserrat_28, 0);
|
||||
lv_obj_set_style_text_color(label2, lv_color_black(), 0);
|
||||
lv_obj_set_style_text_font(label2, &lv_font_montserrat_14, 0);
|
||||
lv_obj_center(label2);
|
||||
esp_lv_adapter_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
// ================= Main ===================
|
||||
@ -208,12 +227,13 @@ void app_main(void)
|
||||
|
||||
lcd_init();
|
||||
touch_init();
|
||||
|
||||
lvgl_init();
|
||||
create_ui();
|
||||
|
||||
//lv_tick_set_cb(xTaskGetTickCount);
|
||||
//lv_tick_set_cb(my_get_milliseconds);
|
||||
while (1) {
|
||||
lv_tick_inc(10);
|
||||
lv_task_handler();
|
||||
lv_timer_handler();
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,3 +18,4 @@ dependencies:
|
||||
lvgl/lvgl: ^9.4.0
|
||||
espressif/esp_lvgl_port: ^2.3.0
|
||||
espressif/esp_lcd_touch_gt911: '*'
|
||||
espressif/esp_lvgl_adapter: '*'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user