STM32F4VE + LCD ILI9341 FSMC 16BIT

W tym wpisie przedstawię w jaki to sposób można uruchomić chiński pakiet STM32F4VE + TFT ILI9341 dostępny na jednym ze sklepów z chińskimi produktami. Opis płytki: STM32F4VE. 

  1. skonfigurujemy podłączenie wyświetlacza oraz panelu dotykowego
  2. podłączymy bibliotekę ILI9341 TFT oraz XPT2046 TS
  3. wyświetlimy datę i godzinę oraz mikro GUI do ustawienia daty i godziny oraz obsłużymy panel dotykowy

Startujemy:

Otwieramy nowy projekt w STM32CubeIDE:

Wybieramy mikroprocesor: STM32F407VETx.

Zapisujemy projekt, IDE buduje nam strukturę katalogów i pliki.

Zaczynamy od pozycji SYS i uruchamiamy możliwość komunikacji i debugowania mikrokontrolera.

Następnie wybieramy opcję RCC i ustawiamy zewnętrzne oscylatory.

Płytka STM32F4VE udostępnia nam dwa zewnętrzne oscylatory wysokiej (HSE) i niskiej (LSE) częstotliwości. Wynika to ze schemtu:

W pozycji HSI Calibration Value wpisujemy wartość 8.

LSE uruchamiamy bo mamy zamiar uruchomić zegar czasu rzeczywistego RTC i chcemy wyświetlić datę i godzinę.

Aktywujemy i ustawiamy zegar czasu rzeczywistego, wchodzimy do RTC.

Aby korzystać z zegara RTC należy aktywować obie pozycje wskazane strzałkami u góry ekranu. W okienku parametrów możemy podać wartości domyślne godziny i daty które będą ustawiane przy wgrywaniu programu do STM’a.

Teraz możemy przejść do zakładki Clock Configuration czyli ustawienia częstotliwości taktowania STM’a i komponentów. Zegary warto ustawić na początku tworzenia projektu bo potem przy włączaniu i konfigurowaniu poszczególnych komponentów np SPI należy ustawić częstotliwość magistrali a na nią wpływ ma wpływ właśnie ustawienia zegara.

Ustawienia HSE zaczynamy od podania wartości oscylatora zewnętrznego czyli 8 MHz, potem wystarczy podać warość taktowania STM’a w naszym przypadku 168 (ostatnie okienko ze strzałką) i system sam przeliczy i ustawi inne wartości na odpowiednie.

Ustawienie LSE na oscylator zewnętrzny. Ustawienia tego można dokonać dopiero po wcześniejszym aktywowaniu RTC.

Teraz można już zająć się następnymi komponentami.

Włączamy i konfigurujemy wyświetlacz TFT.

Nasz wyświetlacz podłączony jest po magistrali FSMC i sterowany 16 bitami.

Parametry ustawiamy wg obrazka, system automatycznie zarezerwuje odpowiednie piny co widać po prawej stronie ekranu. Można ewentualnie sprawdzić to ze schematem:

Jeszcze ręcznie musimy ustawić podświetlenie TFT ze schematu wynika że podłączone ono jest na naszej płytce do pinu PB1

Ustawiamy pin PB1 na output i nazywamy do LCD_BL.

Teraz ustawimy obsługę panelu dotykowego.  Ze schematu wynika że panel dotykowy (TP) podłączony jest do SPI2.

Konfigurujemy SPI2.

No i zaczynają się pierwsze schody 🙂 domyślnie system ustawia SPI2 na pinach PB2, PB3, PC10 a z naszego schematu wynika że płytka sprzętowo SPI panelu dotykowego ma połączone z pinami PB13, PB14, PB15.  No tak to jest w STM’ach że piny mogą pełnić różne funkcje. STM32Cube podpowiada nam inne piny które mogą pełnić te same zadania co właśnie wybrany pin. Naciskamy CTRL najeżdżamy na wybrany pin i naciskamy lewy guzik myszy, system na czarno podświetli wszystkie inne piny które mogą mieć te same funkcje które ma wybrany pin.

No to trzeba teraz ręcznie zmienić piny SPI2 z:

PC2 -> PB14
PC3 -> PB15
PB10 – PB13

Polega to na najechaniu na pin PB14 i wybraniu z menu kontekstowego SPI2_MISO system automatycznie zwolni pin PC2. Analogicznie robimy z pozostałymi pinami.

Konfigurujemy pin SPI2 CS (chip select) na PB12 co wynika ze schematu płytki.

Jeszcze musimy ustawić preskaler SPI czyli częstotliwość z jaką będzie pracować nasz SPI od panelu dotykowego. W dokumentacji napisali że optymalne jest około 1MHz. Ja ustawiłem jak na poniższym obrazku i działa OK, można zwiększyć  preskaler do 64 i będziemy mieli coś około 650 kHz. Kwestia wytestowania.

Teraz jeszcze zostało nam do skonfigurowania przerwanie od panelu dotykowego na odpowiednim pinie PC5 który również wynika ze schematu płytki:

 

PC5 ustawiamy na tryb przerwania zewnętrznego na zboczu opadającym.

Teraz musimy włączyć obsługę przerwania dla naszego pinu PC5.

Jeszcze warto sprawdzić/ustawić inicjalizacje przerwania podczas generowania kodu.

 

No i to było by wszystko w temacie konfiguracji hardware ;).

Zostaje zapisać projekt i wygenerować źródła.

Warto jeszcze ustawić IDE tak aby w oddzielnych katalogach umieszczało pliki nagłówkowe i źródłowe.

Oprogramowanie do pobrania:

Przykład działania.

Po źródła zapraszam do mojego gitlaba:

https://gitlab.com/mackuz116/stm32f407ve_tft_fsmc_ili9341

 

 

Źródła:

http://www.stm32res.ru/ru/STM32F4VE_LCD_ili9341_16bit_CubeMx_Keil

5 komentarzy do “STM32F4VE + LCD ILI9341 FSMC 16BIT”

  1. Super artykuł. Czekam na ciąg dalszy… Przymierzam się właśnie do uruchomienia tego zestawu (sterownik + wyświetlacz). Leży u mnie na półce (wewnętrzny test odpaliłem – działa). Fajnie będzie nie wywarzać otwartych drzwi. Mam nadzieję, że nie poprzestaniesz na konfiguracji układu a udostępnisz jakiś kod – demo. Będę miał z czego nauczyć się czegoś nowego. Dotychczas czytałem artykuły: https://stm32withoutfear.blogspot.com/2019/09/stm32-ili9341-fsmc.html
    i
    https://stm32withoutfear.blogspot.com/2019/10/stm32-touchscreen-xpt2046-spi.html
    Fajne artykuły i poparte kodem. Mam nadzieję że twój będzie jeszcze lepszy.

      1. Ale zabawa!!! Tej strony ze źródłami jeszcze nie znałem. Widzę że wiedza jest niezgłębiona. Fajnie że dałeś na szybko kod – demo. Będę miał z czego się uczyć. Super robota!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.