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.
- skonfigurujemy podłączenie wyświetlacza oraz panelu dotykowego
- podłączymy bibliotekę ILI9341 TFT oraz XPT2046 TS
- 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
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.
Na szybko wrzuciłem kod.
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!
Hey.
Nie ma prawa to działać , brak jednego pliku!
reg…h
Już poprawione, git nie złapał pliku