Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32F4][SSD1963] - Dziwne zachowanie przy zapisie do LCD

04 Sie 2013 21:00 1782 2
  • Poziom 2  
    Witam

    Próbuję oprogramować taki wyświetlacz:

    Link do wyświetlacza

    Wyświetlacz podłączony do FSMC w typowy sposób. Szyna danych D0-D15. Sterowanie wyborem rejestr kontrolny/dane szyna A16 i sygnały WR, RD.
    Procesor STM32F407VET6.

    Kod konfiguracji FSMC i portów:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kod konfiguracji kontrolera SSD1963:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    W funkcji konfiguracji wyświetlacza w pozycji 12. Set Address Mode zapisałem na czym polega problem. Otóż przy ustawieniu SET ADDRESS MODE na wartości:

    // 00000000 od lewej do prawej / od gory do dolu / 2 piksele
    // 01000000 od prawej do lewej / od gory do dolu / 2 piksele
    // 10000000 od lewej do prawej / od dolu do gory / 2 piksele
    // 11000000 od prawej do lewej / od dolu do gory / 2 piksele

    i wykonaniu zapisu do wyświetlacza jego aktualizacja następuje co dwa zapisy.

    Wykonuję następującą sekwencję wpisów:

    __nop();
    LCD_WrDt(LCD_COLOR_RED);
    __nop();
    LCD_WrDt(LCD_COLOR_GREEN);
    __nop();
    LCD_WrDt(LCD_COLOR_RED);
    __nop();
    LCD_WrDt(LCD_COLOR_BLUE);
    __nop();

    __nop();
    LCD_WrDt(LCD_COLOR_GREEN);
    __nop();
    LCD_WrDt(LCD_COLOR_GREEN);
    __nop();
    LCD_WrDt(LCD_COLOR_GREEN);
    __nop();
    LCD_WrDt(LCD_COLOR_GREEN);
    __nop();

    i dopiero po wykonaniu dwóch pierwszych RED i GREEN pokazują się dwa piksele.
    Kolory są właściwe i tak się dzieje co dwa kolejne wpisy.

    Ciekawostką jest to, że przy ustawieniu SET ADDRESS MODE na PORTRAIT jest dobrze a źle jest tylko przy LANDSCAPE.

    Oczywiście wcześniej ustawiam obszar zapisu na cały wyświetlacz poleceniami
    SET_COLUMN i CMD_SET_PAGE. Zakładam, że komunikacja z wyświetlaczem jest
    właściwa bo funkcje ustawiania współrzędnych działają prawidłowo.

    Pierwszy raz mam do czynienia z tym kontrolerem i nie mam już pomysłu co z tym zrobić. Chyba, że to taka przypadłość tego kontrolera.

    Może macie koledzy jakieś pomysły co sprawdzić. nie mam też do końca pewności czy parametry dla samego panelu są właściwe ale takiego dostałem PDFa.
  • Poziom 1  
  • Poziom 2  
    Używam formatu 565. Punkt 13 funkcji konfiguracji.


    ///////////////////////////////////////////////////////////////////////////
    // 13. Setup the MCU interface for 16-bit data write
    //
    // set the pixel data format to 8-bit / 9-bit /
    // 12-bit / 16-bit / 16-bit(565) / 18-bit / 24-bit in the parallel host processor
    // interface

    LCD_WrCm(0xF0);
    LCD_WrDt(0x03); // 16-bit(565 format) data for 16bpp


    To co piszesz jest słuszne i zgodne z tabelą podaną w dokumentacji. Jednak nie rozumiem dlaczego liczba transferów musi być parzysta. Z tabeli "7-1: Pixel Data Format" wynika, że nie musi i tutaj jest cały problem. To co piszesz odnosi się do jednego piksela. Dopóki kontroler nie otrzyma określonej liczby wpisów dotąd piksel nie zostanie wyświetlony.

    U mnie jest natomiast taki problem, że używam formatu 565 i po dwóch wpisach pojawiają się dwa piksele a ich kolory są właściwe. Tak się dzieje tylko przy ustawieniu w pozycji LANDSCAPE. Przy PORTRAIT jest dobrze.

    Może jednak jest problem w konfiguracji kontrolera dla danego typu panela TFT.