[MBED] STM32 i SSD1306 – sterowanie dwukolorowym OLED [1]

 

image001

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.

Rys. 1. Schemat blokowy sterownika SSD1306
Rys. 1. Schemat blokowy sterownika SSD1306

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.

Fot. 2. Widok płytki modułu wyświetlacza ze zworkami konfigurującymi interfejs
Fot. 2. Widok płytki modułu wyświetlacza ze zworkami konfigurującymi interfejs

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.

O autorze