Hallo,
ich habe ein Problem mit der Anbindung eines LCD's mit ILI9341
Controller an den ESP32.
Das Display habe ich bei amazon gekauft:
https://www.amazon.de/Ili9341-240X320-Display-Touchscreen-Ladicha/dp/B07BYTT1WZ
Ich verwenden einen aktuellen Branch des offiziellen esp-idf (v3.2
beta2).
Den LCD-Treiber habe ich vom esp-iot Framework hergenommen, der im
Grunde nur die Adafruit GFX-Bibliothek wrapped und portiert.
Quelle:
https://github.com/espressif/esp-iot-solution/tree/master/components/spi_devices/lcd
Damit kann ich nun auch alles auf dem LCD darstellen (Textzeichen,
Strings, Bitmaps, etc.) allerdings dies nur sehr sehr langsam.
Möchte ich zum Beispiel einen String auf dem Display ausgeben, kann ich
zusehen, wie der Text Zeichen für Zeichen aufgebaut wird.
Das Display ist über das HW SPI Interface mit dem ESP32 verbunden und
sollte mit 40 Mhz arbeiten.
Hier noch kurz ein Auszug aus meinem aktuellen Quellcode, wie ich den
LCD-Treiber initialisiere:
1 | static CEspLcd* lcd_obj = NULL;
|
2 |
|
3 | void initialise_lcd(void)
|
4 | {
|
5 | /*Initialize LCD*/
|
6 | lcd_conf_t lcd_pins = {
|
7 | .lcd_model = LCD_MOD_ILI9341,
|
8 | .pin_num_miso = GPIO_NUM_12, // leave unconnected
|
9 | .pin_num_mosi = GPIO_NUM_13,
|
10 | .pin_num_clk = GPIO_NUM_14,
|
11 | .pin_num_cs = GPIO_NUM_15,
|
12 | .pin_num_dc = GPIO_NUM_26,
|
13 | .pin_num_rst = GPIO_NUM_25,
|
14 | .pin_num_bckl = GPIO_NUM_17, // leave unconnected
|
15 | .clk_freq = 40 * 1000 * 1000,
|
16 | .rst_active_level = 0,
|
17 | .bckl_active_level = 0,
|
18 | .spi_host = HSPI_HOST,
|
19 | .init_spi_bus = true,
|
20 | };
|
21 |
|
22 | if (lcd_obj == NULL) {
|
23 | lcd_obj = new CEspLcd(&lcd_pins);
|
24 | }
|
25 | }
|
Benutzt wir das EspLcd-Objekt dann später folgendermaßen:
1 | lcd_obj->setRotation(2);
|
2 | lcd_obj->fillScreen(COLOR_ESP_BKGD);
|
3 | lcd_obj->setTextSize(1);
|
4 | lcd_obj->setTextColor(COLOR_GREEN, COLOR_ESP_BKGD);
|
5 | lcd_obj->setFont(&FreeSans9pt7b);
|
6 | lcd_obj->drawString("HELLO WORLD.", 3, 40);
|
Das schreibt mir dann HELLO WORLD (grüne Schrift auf schwarzem
Hintergrund) auf das Display.
Klappt also richtig gut - nur leider viel viel zu langsam.
Woran kann das liegen?
Kann das evtl. jemand nachvollziehen bzw. den einfachen Aufbau mit einem
LCD nachstellen?
Ich denke dass irgendetwas mit der Portierung der Adafruit-Library nicht
stimmt. Oder schon beim spi_master-Driver innerhalb der esp-idf.
Herzlichen Dank schonmal für eure Unterstützung.
Schönen Abend,
Sven