Skocz do zawartości

Kurs STM32L4 – #11 – kolorowy wyświetlacz TFT (SPI)


Pomocna odpowiedź

Kurs STM32L4 – #11 – kolorowy wyświetlacz TFT (SPI)

Za nami podstawy pracy z SPI na STM32L4. Pora, aby zająć się obsługą wyświetlacza graficznego. Przy okazji poruszymy również temat stosu. Przejdziemy od omówienia sterownika ST7735S, przez liczne testy, optymalizację kodu i DMA, aż po wykorzystanie gotowej biblioteki graficznej.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

  • Lubię! 1
Link do komentarza
Share on other sites

Przypominamy: w komentarzach do kursów rozmawiamy wyłącznie na tematy związane z konkretnym kursem. Mile widziane są również informacje od osób, które korzystały wcześniej z naszych poradników. Wszystko po to, aby kursanci, którzy mają zamiar korzystać z tego kursu nie musieli "przedzierać" się przez dziesiątki postów na inne tematy. Tematy na pytanie, które nie są związane z kursem można zadawać na naszym forum o mikrokontrolerach.

Link do komentarza
Share on other sites

Zachęcam do lektury kolejnej części kursu, która chyba dość dobrze udowadnia, że świadoma praca z wyświetlaczami graficznymi to niełatwy temat. Osoby, które są zainteresowane jeszcze lepszym poznaniem tego tematu powinny zapoznać się również z tą serią poradników. Można tam znaleźć np. informacja o tym jak wykorzystać dwa bufory do tego, aby stworzyć jeszcze lepszy program.

PS załączam gotowy plik z logotypem w formie tablicy - może się przyda 😉 ➡ forbot_logo.zip

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ja powiem tak: mój Nucleo leży sobie od miesiąca jeszcze nie rozpakowany (chociaż staram się przynajmniej poczytać sobie co tam jest ciekawego, ale czas...).

Na razie jak dla mnie najciekawszy odcinek - jestem w miarę świeżo po napisaniu swojego drivera ILI9341 na RPi Pico (nawet fajnie wyszedł, animowane ikonki i takie tam pierdołki), ale mimo że 95% materiału znam, nawet te 5% to coś, co jest warte uwagi, czego się mogę nauczyć i co może w przyszłości zaowocować skonstruowaniem rzeczywistego urządzenia.

Dawaj dalej, @Elvis - czekam na jakiś porządny driver I2S!

Tak przy okazji: mój program wymaga min. 4 MB FLASH (fajnie by było mieć 8), RAM nie jest tu tak istotny (myślę, że nawet w 64 kB bym się zmieścił). Cena gra krytyczną rolę. Coś z gotowych płytek poradzicie czy jestem skazany na ESP32? Lolin32 to ok. 30 PLN... a oprócz jednego drobiazgu (bez podpinania się pod piny gniazda USB nie mogę stwierdzić czy akumulator jest ładowany) wszystko pięknie działa 😞

 

  • Lubię! 2
Link do komentarza
Share on other sites

Czekałem na tę część i się nie zawiodłem. @Elvis dobra robota, jeszcze nie zdążyłem przetestować wszystkiego w praktyce, ale przeczytałem artykuł z zaciekawieniem. Świetny pomysł, aby opisać kolejne korki, zamiast dawania gotowca! Tematyka trudna, ale przedstawiona w ciekawy sposób :)

Link do komentarza
Share on other sites

Pytanko po za konkursem, ma ktos moze pomysl jak konwertowac int'y na wchar_t, tak zeby mozna bylo sobie uzyc zmiennej razem z hagl_put_text?

Moje poszukiwania w necie nie wiele przyniosly bo ludzie glownie polecaja uzyc jakis specjalnych wersji printf() do wyswietlania napisow a nie o to mi chodzi. Najbardziej obiecujace znalezisko funkcje itow() badz _itow_s() nie sa zaimplementowane, a przynajmniej tak mi sie wydaje bo nie widze ich w stdlib.h a np. itoa() dla "zwyklych stringow" jest i smiga az milo.

Na koniec chcialem ponownie pogratulowac autorom swietnego odcinka kursu.

  • Lubię! 1
Link do komentarza
Share on other sites

Najprościej: znaleźć kod źródłowy itow (np. pytając o "itow source"), a następnie skopiować ów kod do swojego programu.

 

Edytowano przez Treker
PPF
  • Lubię! 1
Link do komentarza
Share on other sites

Cześć 🖐️, w czasie przerabiania kursu natrafiłem na pewien problem.  Funkcja lcd_copy() z HAL_SPI_Transmit() działa poprawnie. Niestety po zmianie na HAL_SPI_Transmit_DMA() pojawił się problem. Na ekranie widzę jedynie kolorowe piksele (inicjalizację wyświetlacza), nie wyświetla się napis "Hello World!". W debuggerze ustawiłem breakpoint w funkcji HAL_SPI_TxCpltCallback(), lecz program nie zatrzymał się w tym miejscu. Dodałem również funkcję HAL_SPI_ErrorCallback() z breakpointem w środku, aby złapać ewentualny błąd - tutaj również program nie dotarł. Zmieniłem z ciekawości na opcję z przerwaniami HAL_SPI_Transmit_IT() - działała bez zarzutu i wywoływała przerwanie informujące o zakończeniu transmisji, które nie było wywoływane przez DMA. Szukając rozwiązania zmieniłem również priorytet przerwania od DMA z 0 na 2 (SysTick ma priorytet 0). W zakładce DMA Settings przy konfiguracji SPI2 zmieniłem Priority z Low na Very High - także bez rezultatu. Czy ktoś z Was spotkał się z czymś takim? Macie może pomysł co może być przyczyną problemu na podstawie tego, co opisałem? Będę wdzięczny za pomoc🙂 

Link do komentarza
Share on other sites

Problem już rozwiązany 💪 Zresetowałem konfigurację SPI2 w CubeMX, aby na nowo wygenerować kod, ale nic to nie dało. Zmieniłem więc na SPI3 i tam transmisja z DMA zadziałała i został wywołany callback. Po udanej transmisji z wykorzystaniem DMA wyłączyłem SPI3 i ponownie włączyłem SPI2 + DMA i grafika wyświetliła się na ekranie. Najwyraźniej był to problem z konfiguracją po stronie CubeMX, bo kod był w porządku😉 "Reset" polegający na odpaleniu innego SPI jakoś załatwił sprawę🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.