logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[STM32F4][C/MDK-ARM] - Wyświetlacz HY_TFT320_262K + ili9320

Fantikor 11 Wrz 2013 13:30 2475 6
REKLAMA
  • #1 12723646
    Fantikor
    Poziom 2  
    Posty: 3
    Witam
    Od kilku dni staram się uruchomić pewien tajwański tani szmelc o nazwie HY_TFT320_262K ze sterownikiem (rzekomo) ili9320. Problem w tym, że cała dokumentacja i przykładowe programy, które do niego dostałem są w krzaczkach lub całkowicie nie dotyczą mojego modelu wyświetlacza. Stąd swoją wiedzę i większość kodu czerpię z odmętów internetu i staram się w ogóle wybudzić drania. Z marnym skutkiem.

    Zacząłem od najprostszego podłączenia i kodu , ale nijak byłem w stanie nawet odczytać rejestru 0x0000 z numerem sterownika wyświetlacza. Następnie natrafiłem na wynalazek o nazwie FSMC i obecnie próbuje iść w tę stronę.

    Oto kody:

    Inicjalizacja portów:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Inicjalizacja FSMC:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Inicjalizacja wyswietlacza:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Funkcje i makra do odczytywania/zapisywania do wyświetlacza:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Piny podpięte jak w komentarzu w inicjalizacji portów.
    Na podwyższy kod wyświetlacz nie reaguje w ogóle. W debugu widzę , że odczyt rejestru 0x0000 nadal nie działa. Po jakimś czasie program trafia do nieskończonej pętli w "wyjątku" Bus Fault w pliku stm32f4xx_it.c .

    Czy ktoś ma jakieś doświadczenia w tym temacie i mógłby mi wskazać błąd?
    Czytałem również gdzieś na jakimś forum , że aby możliwe było w ogóle uruchomienie fsmc na stm32f4 discovery konieczne jest wylutowanie rezystora bodajże r50 na lini obsługującej usb. Czy to prawda? Wolałbym nie ingerować tak bardzo w płytkę.


    Proszę o pomoc!
  • REKLAMA
  • Pomocny post
    #2 12725789
    alagner
    Poziom 26  
    Posty: 768
    Pomógł: 85
    Ocena: 29
    Co mi się rzuca w oczy: wydaje mi się, że źle adresujesz wyświetlacz. Zmień adres z 0x60010000 na 0x60020000.
    Przy 16tu bitach danych masz adresowanie co drugiego bajtu, przez co A0 byłoby zawsze 0 (tak przynajmniej to zrobili w F1). I nie wiem czy masz dobre timinigi dla FSMC.
    U mnie jest tak (przy czym ja używam jakiegoś SSDxxx) :

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Generalnie polecam wykopać tę szajsowatą bibliotekę bo ona tylko obraz zaciemnia.

    Co do FSMC w Discovery - chodzi o linię FSMC_NWE na PD5? Musiałbyś datahsheeta podłączonego tam układu poczytać, ale możliwe, że trzeba tę jedną zworkę rozlutować.
  • REKLAMA
  • #3 12725844
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #4 12725889
    alagner
    Poziom 26  
    Posty: 768
    Pomógł: 85
    Ocena: 29
    @Marek_Skalski:
    z tym STMPS2141 to chyba nie do końca tak jest: na szybko nie mogę znaleźć w jego ds, czy fault leci w dół także przy zamkniętym kluczu, a przecież PC0 jest podciągnięte wysoko, prawda?
  • REKLAMA
  • #5 12725927
    Konto nie istnieje
    Poziom 1  
  • #6 12726046
    Fantikor
    Poziom 2  
    Posty: 3
    alagner napisał:
    Co mi się rzuca w oczy: wydaje mi się, że źle adresujesz wyświetlacz. Zmień adres z 0x60010000 na 0x60020000.
    Przy 16tu bitach danych masz adresowanie co drugiego bajtu, przez co A0 byłoby zawsze 0 (tak przynajmniej to zrobili w F1). I nie wiem czy masz dobre timinigi dla FSMC.


    Początkowo miałem taki adres jak napisałeś i nadal nie działało. Ale oczywiście masz rację: powinno być 0x60020000. Już zmieniam :)

    Co do lini PD5:
    Na innym forum ktoś napisał mi że dopóki nie używam w żaden sposób lini PC0 scalak STMPS2141 nie będzie mi przeszkadzać. Łącza USB w tym projekcie nie zamierzam używać, a pamięć zewnętrzną mam w postaci karty SD ( wyświetlacz ma wbudowany port i sterownik )

    Zasugerowano mi również drobną modyfikację przy resecie. Mianowicie: ustawiam RST , czekam chwilę , do rejestru 0x0000 wpisuję 1 co ma uruchomić oscylator wyświetlacza , czekam chwilę i reszta tak jak leci. Jutro z rana sprawdzę ten pomysł
  • REKLAMA
  • #7 12727155
    Fantikor
    Poziom 2  
    Posty: 3
    Czytając inne tematy na tym forum znalazłem taką inicjalizację fsmc która zadziałała w moim przypadku:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Po odczytaniu rejestru 0x0000 faktycznie dostaję wartość 0x9320. Problem w tym że nie zawsze. Bardzo często nie odczytuję nic. Ponadto jeśli już uda się poprawnie odczytać ten rejestr , inicjalizacja nie działa poprawnie. Wywołanie funkcji Clear z kolorem 0x001F nie daje efektu.


    Edit: Zmiana okablowania z "pająka" na płytkę uniwersalną rozwiązało problem. Dziękuję wszystkim za pomoc , szczególnie Alagnerowi ( leci "pomógł").
    No i wyszło na to, że nic nie trzeba rozlutowywać ( o ile nie korzysta się z tego wyjścia USB ).

    Kody w pierwszym poście zaktualizowałem , więc proszę się częstować.

Podsumowanie tematu

✨ Użytkownik zmagał się z uruchomieniem wyświetlacza HY_TFT320_262K z kontrolerem ili9320, napotykając problemy z dokumentacją i kodem. Po kilku próbach i sugestiach od innych uczestników forum, zmienił adresowanie z 0x60010000 na 0x60020000 oraz skonfigurował FSMC. Ostatecznie, po modyfikacji okablowania i zastosowaniu nowej inicjalizacji FSMC, udało mu się odczytać rejestr 0x0000, uzyskując wartość 0x9320, chociaż nie zawsze działało to poprawnie. Problemy z inicjalizacją zostały rozwiązane po przejściu na płytkę uniwersalną.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA