Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Wyświetlacz ILI9341 + ESP-WROOM-32, nie uruchamia się

michalek002a 10 Feb 2021 10:27 336 5
  • #1
    michalek002a
    Level 8  
    Witam. Chciałem uruchomić swój wyświetlacz(ILI9341 480x320 3,5'), podłączając go do ESP32-Wroom-32, jednak wszystkie konfiguracje i sposoby, jakie znalazłem, nie działają, wyświetlacz jest ciągle biały. Na arduino nie miałem żadnego problemu. Wyświetlacz zasilam z 3,3V, próbowałem korzystać z VSPI i HSPI, podłączałem do masy RESET i CS, ustawiałem różne częstotliwości, jednak zawsze bez skutku. Połączenie sprawdzałem zawsze kilka razy, również miernikiem oraz podłączałem diodę przez rezystor na wejścia wyświetlacza, żeby sprawdzić, czy jest jakiś sygnał. Jedynie co zobaczyłem, to że dioda podłączona do CE, gdy do wyświetlacza nic nie było wysyłane, świeciła, a jak widziałem na innym forum, jak ktoś testował w ten sam sposób, dioda nie była włączona. Dodam, że niezależnie, jaki program wgram, po czasie ok. 1/3 ekranu ma lekko inny odcień, a po resecie ESP, znowu całość staje się biała. Macie jakieś pomysły, co może być problemem?
    Biblioteka: https://github.com/Bodmer/TFT_eSPI
    Moja konfiguracja:

    Code: c
    Log in, to see the code
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • #2
    khoam
    Level 41  
    Jaką konkretnie wartość ma stała SPI_FREQUENCY? Dobrze byłoby, gdybyś pokazał, jak konkretnie wygląda cały plik konfiguracyjny (User_Setup.h) dla ESP32.
  • #3
    michalek002a
    Level 8  
    Próbowałem na 40MHz, 27MHz i 20MHZ. Wyżej wysyłałem odczyty z programu debugującego, tam wszystkie parametry były, jakich ostatnio używałem, ale jak chcesz to ci wyślę wszystkie linie jakie używam w pliku konfiguracyjnym:

    #define ILI9341_DRIVER

    #define TFT_MISO 19
    #define TFT_MOSI 23
    #define TFT_SCLK 18
    #define TFT_CS 5
    #define TFT_DC 2
    #define TFT_RST 4

    #define LOAD_GLCD
    #define LOAD_FONT2
    #define LOAD_FONT4
    #define LOAD_FONT6
    #define LOAD_FONT7
    #define LOAD_FONT8
    #define LOAD_GFXFF
    #define SMOOTH_FONT

    #define SPI_FREQUENCY 40000000
    #define SPI_READ_FREQUENCY 20000000
    #define SPI_TOUCH_FREQUENCY 2500000

    To próbowałem włączaći wyłączać:
    #define SUPPORT_TRANSACTIONS
    #define USE_HSPI_PORT
  • #4
    khoam
    Level 41  
    Zmień TFT_DC na inny GPIO niż 2, np. 15. Pin 2 jest zwykle używany dla wbudowanego LED na płytce.
    Przy podanej przez Ciebie konfiguracji, SUPPORT_TRANSACTIONS oraz USE_HSPI_PORT powinno być wyłączone.
    Wartość SPI_FREQUENCY równa 40000000 powinna być OK dla tego wyświetlacza.
  • #5
    michalek002a
    Level 8  
    Chyba popełniłem najgłupszy błąd, jaki mogłem. Cały czas byłem pewien, że jest to ILI9341, ponieważ wyglądał praktycznie identycznie jak mój. Okazało się, że to ILI9486. Teraz wszystko działa. A siedziałem nad nim cały dzień.

    Dodano po 11 [godziny] 41 [minuty]:

    Mam jeszcze pytanie, ponieważ jak zacząłem pracować na tym wyświetlaczu, zauważyłem, że on działa trochę inaczej niż przykładowo wyświetlacz od NOKII 3310. Dokładnie chodzi mi o to, że w tamtym wyświetlaczu, po zakończeniu programu, który miałby rysować na ekranie, wywoływało się funkcję 'display()', która wyświetlała to już na wyświetlaczu. Tutaj sprawa wygląda inaczej, ponieważ każdą kreskę, piksel itd. jaki się napisze w programie, jest natychmiast wpisywany na wyświetlacz, a jeżeli jest wyświetlana jedna rzecz nad drugą, występuje efekt migania, którego nie byłoby w sytuacji z wyświetlaczem z NOKII. Są jakieś sposoby, aby tego uniknąć?
  • Helpful post
    #6
    khoam
    Level 41  
    ILI9486 ma tylko jedną pamięć obrazu i możesz bezpośrednio czytać/zapisywać tylko w tej pamięci. Ekran LCD jest stale odświeżany z tej samej pamięci, stąd efekt migotania.
    Biblioteka TFT_eSPI, której używasz oferuje tzw. sprite'y. Są to wydzielone obszary pamięci RAM, gdzie można tworzyć gotowy obraz, a następnie szybko kopiować go do pamięci wyświetlacza (w wypadku ESP32 również z użyciem DMA). Najlepiej jakbyś przejrzał przykłady sprite'ów, które są załączone do tej biblioteki.
    Link