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

Rys. 3. Podział pamięci obrazu na strony
Rys. 3. Podział pamięci obrazu na strony

Z rysunku 3 wynika, że jedna strona to 128 bajtów pamięci. Zapisanie bajtu do pamięci odpowiada pionowej linijce o długości 8 pikseli – rysunek 4.

Rys. 4. Organizacja strony pamięci RAM
Rys. 4. Organizacja strony pamięci RAM

Żeby zapewnić elastyczność przy mechanicznym mocowaniu wyświetlacza możliwe jest remapowanie segmentów: segmenty są wybierane licząc od lewej do prawej od 127 do 0. Podobnie są remapowane linie matrycy – tak jak to zostało pokazane na rysunku 3.

Remapowaniem sterują dwie komendy: Set Segment Re-map (A0/A1) i Set COM Output Scan Direction (C0/C8).

Zapisywanie danych do pamięci RAM jest adresowane przez dwa liczniki adresowe: licznik kolumn zmieniający się w zakresie 0…127 i licznik stron zmieniający się w zakresie 0…7.

Dostęp do pamięci RAM powoduje automatyczną inkrementacje licznika kolumn i/lub inkrementację licznika stron. Zakres zmian adresów i sposób inkrementacji jest określany przez tryb adresowania ustawiany komendą Set Memory Addressing (20h).

Pierwszym z tych trybów jest Page Addresing Mode. Zasada adresowania jest w tym trybie jest pokazana na rysunku 5.

Rys. 5. Adresowanie w trybie Page Addressing Mode
Rys. 5. Adresowanie w trybie Page Addressing Mode

Początkowy adres w pamięci jest ustalany przez komendy:

  • Set Lower Column Start Address for Page Addressing Mode (00h…0Fh). Ta komenda zapisuje 4 młodsze bity licznika startowego adresu w pamięci RAM dla trybu adresowania stron.
  • Set Higer Column Start Address for Page Addressing Mode (10h…1Fh). Ta komenda zapisuje 4 starsze bity licznika startowego adresu w pamięci RAM dla trybu adresowania stron.
  • Set Page Address for Page Addressing Mode (B0h….B7h). Ta komenda zapisuje licznika adresu stron w pamięci RAM dla trybu adresowania stron.

Po zapisaniu liczników każdy dostęp do pamięci RAM powoduje inkrementację licznika kolumn. Jeżeli licznik osiągnie wartość 127, to następny dostęp (zapis) do pamięci RAM powoduje wyzerowanie licznika kolumn, a licznik stron pozostanie bez zmian. Żeby go zmienić trzeba użyć komendy Set Page Address for Page Addressing Mode.

Kolejnym trybem jest tryb adresowania horyzontalnego – Horizontal addressing mode pokazany na rysunku 6.

Rys. 6. Tryb adresowania horyzontalnego
Rys. 6. Tryb adresowania horyzontalnego

Po każdym zapisaniu danej do pamięci RAM jest inkrementowany licznik kolumn. Jeżeli licznik osiągnie wartość końcową to jest ustawiany na wartość początkową i jednocześnie licznik stron jest automatycznie inkrementowany. Jeżeli licznik stron i licznik kolumn osiągnie wartość końcową, to są one automatycznie ustawiane na wartość początkową.

Ostatni tryb, to tryb adresowania wertykalnego – Vertical addresing mode – rysunek 7.

Rys. 7. Tryb adresowania wertykalnego
Rys. 7. Tryb adresowania wertykalnego

Po każdym zapisaniu danej do pamięci RAM jest inkrementowany licznik stron. Jeżeli licznik osiągnie wartość końcową to jest ustawiany na wartość początkową i jednocześnie jest automatycznie inkrementowany licznik kolumn. Jeżeli licznik kolumn i licznik stron osiągnie wartość końcową, to są one automatycznie ustawiane na wartość początkową.

Wartości początkowe i końcowe liczników kolumn i stron nie muszą mieć wartości maksymalnych adresujących całą pamięć wyświetlacza tak jak to zostało pokazane na rysunkach 6 i 7. Zakresy adresowania dla trybu horyzontalnego i wertykalnego są ustawiane przez dwie komendy:

  • Set Column Address (21h)- komenda z dwoma argumentami z zakresu 0…127 określającymi adres kolumny początkowej i adres kolumny końcowej dla trybów adresowania horyzontalnego i wertykalnego.
  • Set Page Address (22h)- komenda z dwoma argumentami z zakresu 0…7 określającymi adres strony początkowej i adres strony końcowej dla trybów adresowania horyzontalnego i wertykalnego.

Oba te tryby a połączeniu z komendami ustawiania adresów początku i końca obszaru umożliwiają łatwe wyświetlanie fontów mających wysokość większą nić 8 pikseli, oraz małych bitmap (ikonek). Przykład takiego adresowania został pokazany na rysunku 8.

O autorze