spi_lcd_touch Example von ESP-IDF auf CYD unter Vscode/ESP-IDF

#7640496
Lesenswert?

Ich habe folgende Konfiguration: VScode, ESP-IDF und als Hardware ein CYD (Cheap Yellow Display) und versuche, die spi_lcd_touch aus den

1
~/esp/v5.2/esp-idf/examples/peripherals/lcd/spi_lcd_touch

Beispielen zum Laufen zu bekommen.

Konfiguriert sind:

1
#
2
# Example Configuration
3
#
4
CONFIG_EXAMPLE_LCD_CONTROLLER_ILI9341=y
5
# CONFIG_EXAMPLE_LCD_CONTROLLER_GC9A01 is not set
6
CONFIG_EXAMPLE_LCD_TOUCH_ENABLED=y
7
# CONFIG_EXAMPLE_LCD_TOUCH_CONTROLLER_STMPE610 is not set
8
CONFIG_EXAMPLE_LCD_TOUCH_CONTROLLER_XPT2046=y
9
# end of Example Configuration

Die Graphik wird (s. Bild) scheint um 90° gedreht. Die Touchkoordinaten scheinen auch nicht richtig zu sein. Nehme an, das muß man noch kalibrieren. Aber vorrangig ist erstmal, daß die Graphikausgabe richtig erscheint. Das Beipiel baut auf lvgl auf. Eigentlich hat mir dieses lvgl zuviel Overhead und ist zu kompliziert. Was Einfaches (TFT basierend) wäre mir eigentlich lieber.

Hat jemand das Beispiel schon auf CYD laufen?

Angehängte Dateien:
#7640951
Lesenswert?

da passen vermutlich die Orientierung in lvgl und im Treibercode nicht zusammen. lvgl braucht einen Buffer mit Displaybreite * min. 10 Zeilen. Hier ist als Displaybreite die schmale Seite definiert. Der TFT Controller wurde aber für landscape initialisiert. Wenn das so sein soll, dann also Höhe und Breite in lvgl drehen. Das geht da über defines die in einem config header gesetzt werden oder per Compileroptionen übergeben werden. lvgl braucht zwar viel Platz für Code, kann dafür auch viel. Und ist trotzdem schnell weil nur die nötigen Teile einer Darstellung aktualisiert werden.

#7641009
Lesenswert?

Danke, J.S.. Habe inzwischen auf dem Kanal auf Discord erfahren, daß das CYD, das ich habe (cyd2usb), einen anderen Displaytyp (nicht ILI9341 und auch nicht den GC9A01) braucht, sondern ST7789. Das Konfigurationsmenu bietet aber nur die beiden Ersteren an. Jetzt überlege ich, ob ich lerne, wie man den Konfigurator konfiguriert, oder ob ich die Treiber händisch in das Projekt hineinkopiere. Alles nicht so einfach.

#7641070
Lesenswert?

Es stellt sich aber heraus, nachdem ich den ST7789 Treiber in dem Beispiel zum laufen bekommen habe, daß das nicht den Fehler behebt. War also Irrweg meinerseits erst mal. Werde mal in die lvgl-Initialisierung schauen, wie Du vorschlägst.

EDIT: läuft:

1
In der spi_lcd_touch_example_main.c:
2

3
// The pixel number in horizontal and vertical
4
#if CONFIG_EXAMPLE_LCD_CONTROLLER_ILI9341
5
#define EXAMPLE_LCD_H_RES              320
6
#define EXAMPLE_LCD_V_RES              240

(neues Foto, weil ich noch eine Farbinversion von vorherigen Experimenten drin hatte)

Angehängte Dateien:
#7646621
Lesenswert?

Ich setze hier mal auf diesen Thread auf, weil Thema noch stimmt und die äußeren Voraussetzungen dieselben sind.

Auch wenn lvgl einen ziemlichen Overhead mit sich bringt, so wollte ich doch damit erst mal weitermachen.

Zunächst einmal wollte ich den Hintergrund der Demo-App ändern.

Hatte dazu den Code etwas abgeändert:

1
  ESP_LOGI(TAG, "Display LVGL Meter Widget");
2
    /*Change the active screen's background color*/
3
   //  BGR (not RGB) 
4
    //lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x101010), LV_PART_MAIN);
5
    //lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x202000), LV_PART_MAIN);
6
     lv_obj_set_style_bg_color(lv_scr_act(), lv_color_hex(0x121900), LV_PART_MAIN);
7
    //example_lvgl_demo_ui(disp);
8
    //lvgl_my_demo();
9

10

11
     while (1) {
12
        // raise the task priority of LVGL and/or reduce the handler period can improve the performance
13
        vTaskDelay(pdMS_TO_TICKS(10));
14
        // The task running lv_timer_handler should have lower priority than that running `lv_tick_inc`
15
        lv_timer_handler();
16
    }
17
}

Mit dieser RGB-Einstellung gibt es auf dem Display die in Bild 1 ersichtlichen Streifen. 0x101010 (dunkleres grau) gibt einen häßlichen dicken Streifen durch die Bildmitte.

Im cyanfarbenen flackern die Störungen periodisch (vielleicht im 10ms Takt?) Der graue Streifen flackert am Rand auch leicht. Ich weiß jetzt nicht, ob das Display dauernd beschrieben wird. Kann natürlich am unterliegenden freeRTOS liegen.

Ich versuche mal, das Vscode-Projekt hochzuladen.

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren