Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32F429ZIT6][SSD1963] Brak koloru czerwonego

maciej_zar 17 Lut 2017 15:19 639 3
  • #1 17 Lut 2017 15:19
    maciej_zar
    Poziom 3  

    Cześć wszystkim,

    Zabrałem się za obsługę wyświetlacza 4.3" opartego na SSD1963 w oparciu o FMC w STM32F429ZIT6.

    Konfigurację wszystkich podzespołów przeprowadziłem bezpośrednio na rejestrach.
    Sama procedura konfiguracyjna SSD1963 pochodzi z biblioteki UTFT z Arduino (oczywiście przepisana na potrzeby STMa) - na tamtym procku działa, więc tutaj ten sam zestaw komend też powinien działać.

    Wyświetlacz żyje, wszelkie komendy, które wysyłam do SSD1963 zdają się tam trafiać, jednakże jest jeden problem.
    Nie ma czerwonego koloru. Zielony oraz niebieski wyświetlają się poprawnie. Szukałem rozwiązań w złym systemie przesyłu kolorów (chcę użyć 565), jednakże i tutaj wszystko wydaje się być poprawnie ustawione. Dodatkowo, jak mamy słowo 16bit z kolorami, to wygląda, jakby były ustawione GBR zamiast RGB. Wszelkie sugestie mile widziane.

    Druga sprawa to konfiguracja FMC. Tutaj jak zmieniam ustawienia wyświetlacz wydaje się ciągle działać identycznie, bez względu na opóźnienia czy ustawienia typu pamięci. Czy tak może być? Wydaje mi się, że kiedyś powinien przestać działać...

    Trzecia rzecz, prędkość wrzucania danych do wyświetlacza. Na załączonym filmie widać, że zapełnienie całego ekranu chwilę zajmuje. Jak można by to było przyspieszyć?

    Docelowo chciałbym zaprzęgnąć do tego zestawu bibliotekę STemWin, także prędkość będzie miała znaczenie.

    Film z działania programu:
    https://www.youtube.com/watch?v=_3112t4ngQ0

    plik main.cpp:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Plik SSD1963.h:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Plik SSD1963.CPP:
    Kod: c
    Zaloguj się, aby zobaczyć kod

  • #2 21 Lut 2017 08:58
    maciej_zar
    Poziom 3  

    Aktualizacja w temacie.
    Brak koloru czerwonego wynika ze źle ustawionego trybu danych przyjmowanych. Zamiast 16bit 565 panel przyjmuje dane 24bit. Teraz rodzi sie pytanie, dlaczego nie chce przyjąć tego ustawienia. Próbowałem różnych timingow, opóźnień, kolejności danych. Jak w pętli głównej wyśle mu 0x01 to robi sie soft-reset bez problemu. Ale znowu jak wyśle 0xB0 i chce zeby przyjął typ danych 565 to juz nie przestawia tego.

    Czy cos oprócz timingow i opóźnień powinienem spróbować?

    Co do prędkości odświerzania to podniesienie HCLK przyspieszyło to znacząco.

  • #3 22 Lut 2017 08:37
    starob
    Poziom 25  

    Przed komendą 0xF0 wstaw

    //Set pixel format, i.e. the bpp
    /* WriteCommand(0x3A);
    WriteData(0x55); // set 16bpp
    W moim sterowniku mam również różnicę w
    WriteCommand(0xE6);
    WriteData(0x01);
    WriteData(0x33);
    WriteData(0x32);
    Spróbuj, może będzie działać ? :)

  • #4 13 Mar 2017 22:27
    maciej_zar
    Poziom 3  

    Problem udało się rozwiązać.
    Po sprawdzeniu dosłownie wszystkiego (łącznie z analizatorem logicznym na przesyle danych) i potwierdzeniu, że jest okej, zacząłem mieszać w ustawieniach samego panelu LCD.
    Okazało się, że chińczykowy panel bez specyfikacji ma w niektórych wersjach szynę danych 24 bit a nie 18 bit jak było ustawione (komunikacja SSD1963 <-> panel LCD).
    Trzeba było zmienić na:

    Lcd_Write_Command(0xB0);
    Lcd_Write_Data(0x20);

    I wszystko śmiga pięknie ;)

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Wyszukaj w ofercie 200 tys. produktów TME