Skocz do zawartości

Stm32f429 discovery -> LCD


xamrex

Pomocna odpowiedź

Hej

Mam pytanie odnośnie tego w jaki sposób jest zrealizowana komunikacja z wyświetlaczem LCD na płytce STM32F429 discovery.

Zestaw uruchomieniowy.pdf

Wiem, ze dane z uC lecą do drivera ILI9341 a ten kontroler steruje już wyświetlaczem ciekłokrystalicznym.

ILI9341 można skonfigurować, w różnych trybach, ale bazując na dokumentacji zestawu uruchomieniowego to:

Przechwytywanie.thumb.PNG.497c1203ce28350dca56788b7ed77514.PNG

Pracuje w trybie 4wire 8 bit data serial interface.
Czyli czy ja to dobrze rozumiem, do komunikacji z driverem wyświetlacza korzystamy tylko z  4 pinów?

 

z tego co widzę potem w kodzie, to używany jest LTDC i tutaj mamy już tryb RGB666(czyli używamy po 6 przewodów na kolor) dodatkowo używane są sygnały HSYNC,VSYNC,DE,CLK

 

wiec wydaje mi sie, że jednak do komunikacji z wyświetlaczem/ sterownikiem ili9341, to wykorzystywanych jest więcej niż te 4 przewody?

Jak to  w końcu jest?

 

Link do komentarza
Share on other sites

To 4 wire 8 bit, to pewnie SPI 8 bitów (nie 9) z oddzielnym pinem na D/C (dane / instrukcje). Jak ustawisz IM[0..3] taki będzie interfejs. Datasheet sterownika wyświetlacza lub może jest w załączonej instrukcji. Domyślnie pewnie SPI - 0b0110.

Prawie wszystkie piny wyświetlacza też są wyprowadzone i podłączone, więc jak ustawisz IM. Jest też interfejs równoległy. Podsumowując: RGB (bez pamięci RAM LCD), DBI/8080/równoległy - nazwa nie waźna (z pamięcią), SPI (też z pamięcią). Tabela 6 jakie piny do jakiego trybu.

Datasheet jest dostępny i jest rozpiska jak ustawić IM[0..3] dla żądanego trybu.

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

matsobdev dzięki za odpowiedź ale dalej nie rozumiem.

Jeśli ustawimy interface jako 4wire 8 bit data serial interface. To rozumiem, że do komunikacji ze steroniwkiem, potrzeba tylko 4 pinów, tak? ALE mając tylko te 4 piny nie będziemy w stanie zapialić zadnych pixeli na wyświetlaczy?

 

Przechwytywanie.thumb.PNG.98aee80aa7949da7000998154d5afc7c.PNG

 

dobrze to rozumiem, że do sterowana / komunikacji ze sterownikiem potrzeba 4 pinów, ale

DO wyświetlania jakichś pixeli trzeba wybrać interface RGB

Przechwytywanie2.thumb.PNG.4d95f20155483ed898a2d8499af1fba9.PNG

?

 

Link do komentarza
Share on other sites

Te IM to datasheet wyświetlacza (podpis na schemacie, który załączyłeś w pierwszym poście, choć te DIP z tym korespondują jakoś) wskazuje. Nie, domyślny stan rzeczy SPI (4 przewody, 8 bitów) wystarczy do obsługi wyświetlacza w całości. Z SPI będzie potrzeba 18 (lub 24) taktów interfejsu (przy 262K - 18 bitowym kolorze), żeby zapełnić jeden piksel, a używając interfejsu DBI/80 przy 18 przewodach tylko jednego taktu (tutaj pewnie będzie to sygnał DE).

Edytowano przez matsobdev
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

Kurcze, dalej sie nie rozumiemy:<

Mam płytkę STM32F429i disco

https://www.st.com/en/evaluation-tools/32f429idiscovery.html

I fizycznie na niej, poprzez rezystory wybrany jest tryb 4wire 8 bit serial

aa.thumb.PNG.b5b3c2645fe6c50c901606f6e77dc538.PNG

No i teraz jak odpalam sobie jakiś przykład LCD dostarczony przez producenta, to widzę, że do obsługi LCD jest więcej przewodów wykorzystywanych:

Przechwytywanie.thumb.PNG.930eb7fa29eabe4002aa246cfe30dd85.PNG

 

Tylko no jak jest to możliwe skoro został wybrany fizycznie (i nie ma jak go zmienić, nie przelutowywując re) tryb 4 przewodowy

Czyli: jakim cudem jeśli ustawiony jest tryb 4 wire, to używamy trybu gdzie pinów jest używnach jest ponad 22 (18 RGB+HSYNC,VSYNC,DE,CLK)

 

Link do komentarza
Share on other sites

(edytowany)

Ja chyba nie do końca rozumiem  konfiguracji ILI9341, bo mamy:

1. MCU Interface

2.RGB interface

 

MCU Interface mam ustawiony na 4wire 8bit data.

i teraz popraw mnie, czy dobrze rozumiem, nawet jak mam ustawiony tryb (poprzez rezystory) 4wire 8bit data. to mogę w pełni obsłużyć wyświetlacz TYLKO poprzez SPI [SCL,SDA,CS] oraz D/CX (data or command)

ALE mogę również wykorzystać 'tryb' RGB (dołożyć ok22 pinów) i mieć szybsze działanie ? -> dalej mając ustawiony tryb 4wire 8bit data?

Edytowano przez xamrex
Link do komentarza
Share on other sites

To nie musi być szybsze, choć przy większej rozdzielczości jakby chcieć np. 60 klatek na sekundę, to taki interfejs z większą ilością bitów na raz będzie pomocny, ale Ty nie dokładasz sobie tylko wybierasz. Te interfejsy gdzie jest GRAM w wyświetlaczu są fajne, jak wyświetlasz stały obraz, rzadko (to też pojęcie względne) odświeżasz, to obraz siedzi w wyświetlaczu, na dobrą sprawę MCU można wyłączyć i nawet odłączyć a jak wyświetlacz będzie zasilany, obraz nie zginie. Tak SPI zadziałą i też ten DBI/80/równoległy (DB[0..16] piny w Tab. 6). RGB wymaga ciągłego odświeżania przez MCU, choć tu nie problem bo STM (ten z Twojej płytki, nie wszystkie w ogóle) posiada wyspecjalizowany interfejs, więc możesz z powodzeniem sterować wyświetlaczami w pełni ich możliwości graficznych, które tylko mają RGB (czy DPI też zwane). Ten SPI ma tylko 4 przewody i nic więcej nie potrzebuje. Wszystko wyśle, cały obraz do wyświetlacza w dowolnie wybranej palecie kolorów. DBI i DPI (RGB) mają jeszze poza tymi 18 (lub mniej, tylko RGB będzie wtedy miał mniej kolorów, a DBI tak jak ustawisz. Przy 8 przewodach może mieć równie dobrze 18 bitowy kolor - 262K).

Edytowano przez matsobdev
Link do komentarza
Share on other sites

No ale żeby używać GRAM, to trzeba wybrać inny interface niż 4wire 8 bit tak?

aa.thumb.PNG.31873f4ba96a2ce8cf2f05c3a0d37faf.PNG

Jakim cudem na mojej płytce w przykładzie, używany jest ten GRAM (są używane piny pokazane poniżej);
Przechwytywanie.thumb.PNG.687efeb42fb4ef7931a3ac6330437413.PNG

a tryb jest ustawiony 4wire 8 bit? -> ja rozumem, że skoro jest ten tryb używany, to driver ILI9341 nie korzysta z innych pionów niż SPI+WRX(D/CX)

Link do komentarza
Share on other sites

Tutaj jest podział (pierwsza tabelka) na instrukcje (8 bitowe - tylko używane są piny 0-7, 1-8 itd.) i dane (pełna szyna np 18, 16, 8). Dla SPI nie ma, bo ten tryb i tak ma tylko jeden pin do danych a ten D/CX to jak jest wysoko to leci instrukcja, a nisko dane albo na odwrót. Te tryby z pierwszej tabelki wszystkie GRAM używają. A w STM to pewnie chodzi o bufor ramki po stronie mikrokontrolera. Za jednym zamachem generujesz obraz i zapisujesz to tego buforu i całą klatkę z niego dalej wysyła bez udziału procesora układ w STM, czy to SPI, czy ten LTDC, który ogarnie DBI czy RGB sprzętowo. Domyślam się, że zaczynasz z tematem, to nie pomaga, jakoś po kolei trzeba przyswoić i ogarnąć, to wtedy będzie wiadomo o co chodzi - domyślam się, że teraz to trochę dziko się czujesz 😄. Na początek trzymaj się jednego. To SPI wszystko załatwi i poszukaj takiego przykładu.

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

Jeszcze raz, dzięki za wyjaśnienie mi tego wszystkiego 😉

Udało mi się odpalić wyświetlacz po SPI, nie bylo to takie trudne ;-))

 

W przykładzie od producenta używane jest LTDC oraz DMA2D.

Na razie cichłbym poznać więcej LTDC.

W tym LTDC, to właśnie są używane po 6 pinów na kolor+sygnały HSYNC,VSYNC,DE,CLK

 

No i ja dalej nie do końca rozumiem, jakim cudem w przykładzie od producenta, mimo ustawienia parametrów jako 4wire 8 bit, 

czyli w dokumentacji znalazłem to:

1.thumb.PNG.0c738f035f1cf4690fe6a44dc8a245c0.PNG

 

Używanych jest więcej przewodów??

Wg.mnie wygląda to tak, jakby interface były ustawiony jako 16bit parrarel MCU interface, (bo tam używane są linie D[0...17]) 

2.thumb.PNG.ba6c18ae4355a364ed726cf42754ffe7.PNG

no a sprawdzałem kilka razy jak ustawione są rezystory na płytce i to jest 4wire 8 bit...

No to jakim cudem używane są te dodatkowe 22 piny?

Link do komentarza
Share on other sites

Treker
Ta treść została wynagrodzona przez moderatora!

Elvis otrzymał odznakę: "Za udzielenie wzorowej odpowiedzi"

@xamrex Sterownik ILI9341 może komunikować się z MCU poprzez dwa interfejsy jednocześnie. Nie jest to wymagane i jeden interfejs, przykładowo SPI wystarcza.

Zamiast SPI można też użyć innego interfejsu, powiedzmy równoległego 8080. Piny IM[3:0] ustalają który interfejs będzie używany i tylko jeden może być aktywny w danej chwili. Natomiast niejako dodatkowo można włączyć RGB inteface, czyli drugi interfejs, który będzie pracował jednocześnie z pierwszym.

Jeśli używasz konfiguracji z jednym interfejsem, to dane obrazu są przechowywane w pamięci wbudowanej sterownika ILI9341, czyli GRAM. Do tych danych oraz rejestrów sterujących (za pomocą komend) można się dostać używając interfejsu SPI.

Wykonując odpowiednie komendy przez SPI można natomiast włączyć RGB interface. Wówczas SPI będzie nadal pozwalało na komunikację z rejestrami, ale dane obrazu nie będą przesyłane z GRAM, a zamiast tego bezpośrednio z mikrokontrolera STM32 (za pomocą modułu LTDC).

Pewne zamieszanie może wynikać z dublowania się funkcji - zarówno ILI9341 może mieć pamięć obrazu (GRAM), jak i STM32F429 może zajmować się pamięcią obrazu (najczęściej SDRAM). To którą opcję wybierzesz zależy od Ciebie. Przykłady od ST używają wersji z 2 interfejsami, dlatego więcej pinów jest wykorzystanych, a dane obrazu są w pamięci podłączonej do STM32.

Edit: Obraz znaczy 1000 słów, więc poniżej jeszcze raz wyjaśnienie.

Pierwsza konfiguracja, czyli jeden interfejs:

lcd1.thumb.png.7107c10a14d907e454b903bacd2efefd.png

Bity / piny IM[3:0] określają rodzaj interfejsu, powiedzmy SPI. Dane obrazu są przechowywane w pamięci GRAM wewnątrz sterownika. Interfejs SPI pozwala na przesyłanie komend sterujących oraz dostęp do pamięci GRAM.

Druga konfiguracja:

lcd2.thumb.png.7224eb1661eedb00604cea450bc0adb9.png

Pierwszy interfejs jest bez zmian, nadal SPI oraz piny IM[3:0]. Natomiast nie jest używana pamięć GRAM, pamięć obrazu jest wewnątrz STM32 (albo w podłączonej do niego pamięci). RGB interface przesyła tylko dane obrazu, a SPI tylko komendy sterujące.

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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • 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.