[MBED] STM32 i SSD1306 – sterowanie dwukolorowym OLED [1]
W artykule przedstawiamy miniaturowy wyświetlacz OLED z dwukolorową matrycę i wbudowanym sterownikiem SSD1306 (druga część publikacji jest dostępna pod adresem). Ma on matrycę o przekątnej 0,96 cala o organizacji 128×64 piksele, z których 16 górnych linii świeci na kolor źółty, pozostałe na niebieski. Podstawowe właściwości sterownika pokazano w tabeli poniżej.
Podstawowe właściwości sterownika SSD1306
Rozdzielczość | Matryca 128×64 piksele |
Napięcie zasilania | Układy logiczne od +1,65V do +3,3V |
Drivery panelu matrycy od +7V do +15V | |
Maksymalny prąd segmentu | 100µA |
Maksymalny całkowity prąd matrycy | 15mA |
Kontrast matrycy | 256 poziomów (programowany) |
Wbudowana pamięć obrazu | SRAM 128×64 bity |
Interfejsy komunikacyjne | Równoległy 8-bitowy 8080/6800 |
Szeregowy SPI 3- lub 4-liniowy | |
Szeregowy I2C | |
Funkcje akceleratora graficznego | Skrolowanie w poziomie |
Skrolowanie w pionie | |
Remapowanie | Kolumn i wierszy |
Oscylator | Wbudowany w układ |
Zakres temperatur pracy | -40 ˚V do +85˚C |
Schemat blokowy sterownika pokazano na rysunku 1.
Aktywny interfejs jest wybierany sprzętowo przez wymuszenie stanów logicznych na wyprowadzeniach konfiguracyjnych BS0, BS1 i BS2 – tabela poniżej.
Możliwe konfiguracje interfejsu komunikacyjnego
I2C | Motorola 6800 | Intel 8080 | SPI 4-wire | SPI 3-wire | |
BS0 | 0 | 0 | 0 | 0 | 1 |
BS1 | 1 | 0 | 1 | 0 | 0 |
BS2 | 0 | 1 | 1 | 0 | 0 |
Wyprowadzenie BS2 określa, czy będzie użyty interfejs szeregowy (BS2=0) czy równoległy (BS2=1). W naszym wyświetlaczu BS2 jest na stałe dołączony do masy i mamy możliwość wyboru tylko jednego z trzech interfejsów szeregowych. Na płytce drukowanej wyświetlacza są umieszczone dwa pola lutownicze umożliwiające ustawianie stanów na BS0 i BS1 – fotografia 2. Fabrycznie są tam wymuszone stany BS0=0 i BS1=0, czyli 4-przewodowy interfejs SPI. Zgodnie z tym ustawieniem są opisane wyprowadzenia płytki wyświetlacza.
Ponieważ nie przewidziano odczytywania jakichkolwiek danych ze sterownika, interfejs SPI ma jedną linię danych DIN (MOSI z punktu widzenia hosta), oraz linię zegarową CLK. Oprócz tych linii do przesyłania danych wykorzystywana jest linia CS i D/C. CS jest standardowym sygnałem SPI uaktywniającym układ, do którego są wysyłane dane. Wykorzystując CS można do jednej magistrali dołączyć kilka wyświetlaczy – każdy ze swoją linią CS. Linia D/C jest wykorzystywana do kierowania danych albo do rejestru komend (D/C=0) albo do pamięci obrazu (D/C=1). Przy 3-przewodowym interfejsie SPI brak jest sygnału D/C i konieczne jest przesłanie dodatkowego bitu informującego sterownik gdzie dane z magistrali maja trafić. Komplikuje to obsługę transmisji, bo dane są 9–bitowe i nie można wykorzystać standardowych sprzętowych interfejsów SPI. W przypadku interfejsu I2C trzeba dodatkowo wysłać po adresie slave bajt kontrolny. Z jednej strony dodatkowa linia D/C wymaga linii portu sterownika, a z drugiej strony jej użycie przyspiesza i upraszcza transfer danych.
Pamięć obrazu GDDRAM (Graphic Dispaly Data)
Pamięć obrazu jest statyczną pamięcią RAM o rozmiarze 128×64 bity. Każdy bit odpowiada jednemu pikselowi na matrycy OLED. Pamięć o takiej organizacji nie może być bezpośrednio zapisywana przez mikrokontroler dlatego została logicznie podzielona na 8 stron Page0….Page 7 – rysunek 3.