LinkedIn YouTube Facebook
Szukaj

Newsletter

Proszę czekać.

Dziękujemy za zgłoszenie!

Wstecz
Artykuły

Aris Edge S3A3 – nakładka z wyświetlaczem TFT Aris Edge LCD

Po skonfigurowaniu interfejsu SPI przystępujemy do dodania i konfigurowania frameworka I2C, który będzie obsługiwał komunikację ze sterownikiem panelu dotykowego. Wykonuje się to analogicznie jak dla SPI. Na rysunku 10 pokazano dodawanie do stosu, a na rysunku 11 jego konfigurację.

Rysunek 10. Dodawanie frameworka I2C

Rysunek 11. Konfiguracja frameworka I2C

W konfiguracji podajemy adres slave układu sterownika panelu dotykowego (0x48), długość słowa adresowego (7 bitów), kanał modułu komunikacyjnego oraz tryb prędkości transmisji (Fast mode).

Podobnie jak w przypadku interfejsu SPI, tu również trzeba samodzielnie napisać procedury wysyłania i odbierania sekwencji bajtów na magistrali I2C. – listingi 4 i 5.

static ssp_err_t SX8676_i2c_read ( sf_i2c_api_t const * const p_i2c_api,
                                   sf_i2c_ctrl_t * const p_i2c_ctrl,
                                   uint8_t * const p_dest,
                                   uint32_t const bytes )
{
    ssp_err_t err;

    /*w przypadku niepowodzenia odczytu operacja jest powtarzana SX8676_I2C_RETRY_TIMES razy  */
    for (int i = 0; i < SX8676_I2C_RETRY_TIMES; i++)
    {
        err = p_i2c_api->read(p_i2c_ctrl, p_dest, bytes, false, SX8676_I2C_TIMEOUT_TICKS);
        if (SSP_SUCCESS == err)
        {
            break;
        }
    }
    return err;
}

Listing 4. Czytanie sekwencji danych z magistrali I2C

static ssp_err_t SX8676_i2c_write ( sf_i2c_api_t const * const p_i2c_api,
                                    sf_i2c_ctrl_t * const p_i2c_ctrl,
                                    uint8_t * const p_src,
                                    uint32_t const bytes,
                                    bool const restart)
{
    ssp_err_t err;

   /*w przypadku niepowodzenia zapisu operacja jest powtarzana SX8676_I2C_RETRY_TIMES razy  */
    for (int i = 0; i < SX8676_I2C_RETRY_TIMES; i++)
    {
        err = p_i2c_api->write(p_i2c_ctrl, p_src, bytes, restart, SX8676_I2C_TIMEOUT_TICKS);
        if (SSP_SUCCESS == err)
        {
            break;
        }
    }
    return err;
}

Listing 5. Wysłanie sekwencji danych przez magistralę I2C

Same operacje zapisywania i odczytywania w przypadku niepowodzenia są powtarzane definiowaną ilość razy. Jeżeli ta ilość prób zakończy się niepowodzeniem, to funkcje zwracają kod błędu zapisany w zmiennej err. W przeciwnym przypadku jest zwracany kod SSP_SUCCESS.

Opisywane funkcje są głównie związane z obsługą magistral komunikacyjnych SPI i I2C oraz inicjowaniem sterownika wyświetlacza. Kompleksowa obsługa wyświetlacza będzie wymagała zaimplementowania mechanizmów obsługi zdarzeń zgłaszanych przez sterownik panelu dotykowego oraz wygenerowania ekranów z umieszczonym na nich elementami graficznymi: grafikami, polami tekstowymi, widżetami, itp. Proces projektowania ekranów można znacznie uprościć stosując do tego celu aplikację GUIX Studio. Kod generowany przez GUIX Studio można łatwo zintegrować z projektem środowiska e2studio.

Dokładne opisywanie działania programu demonstracyjnego, nawet tylko w obszarze wykorzystywania wyświetlacza LCD, wykracza znacznie poza ramy tego artykułu. Dociekliwy czytelnik może pozyskać dodatkowe informacje analizując kod źródłowy i konfigurację programu demonstracyjnego.

Interfejs użytkownika jest starannie zaprojektowany w środowisku GUIX Studio. Podzielono go na kilka ekranów z możliwością nawigowania pomiędzy nimi.

Na pierwszym, powitalnym ekranie wyświetlanym po włączeniu zasilania jest wyświetlane zdjęcie modułu Aris Edge S3A3 – rysunek 12.

Żółty pasek na dole ekranu z symbolami „<” i „>” jest przeznaczony do sekwencyjnego przełączania ekranów. Naciśniecie symbolu powoduje wyświetlenie poprzedniego lub kolejnego ekranu. Taki sam pasek jest umieszczany w każdym z ekranów programu demonstracyjnego.

Rysunek 12. Ekran powitalny

Kolejny ekran jest przeznaczony do wyświetlania danych z czujnika położenia tak, jak to zostało pokazane na rysunku 13.

Rysunek 13. Ekran z danymi odczytanymi z czujnika położenia

Najbardziej rozbudowany i chyba najbardziej atrakcyjny jest kolejny ekran (rysunek 14) wyświetlający dane z czujników temperatury, ciśnienia, wilgotności i natężenia oświetlenia. Można go użyć jako użytecznej stacji pogodowej. Brakuje tylko czujnika temperatury zewnętrznej.

Rysunek 14. Ekran z danymi z czujników temperatury, ciśnienia, wilgotności i natężenia oświetlenia

Ostatni ekran pokazuje dane odczytywane z magnetometru – rysunek 15.

Rysunek 15. Ekran wyświetlający dane z magnetometru

Jak już wspomniałem, wyświetlacz LCD z ekranem dotykowym jest bardzo dobrym elementem do zbudowania lokalnego interfejsu użytkownika. Aplikacja demonstracyjna wyświetla lokalnie dane odczytywane z czujnika i równolegle przesyła je przez łącze Bluetooth aplikacji uruchomionej na smartfonie. Na rysunku 16 pokazano równoległa pracę obu interfejsów: lokalnego z wyświetlaczem LCD i zdalnego uruchamianego na smartfonie.

Rysunek 16. Równoległa praca interfejsów użytkownika

Podsumowanie

Prezentowany moduł mikrokontrolera łączy w sobie kompaktowe wymiary z bogatą ofertą zabudowanych czujników. Użyty mikrokontroler z rodziny S3 Renesas Synergy z wydajnym rdzeniem ARM Cortex M4, sporą pamięcią programu i danych, oraz wieloma układami peryferyjnymi daje możliwość uruchamiania nawet zaawansowanych programów, w tym wymagających aplikacji IoT. Wyprowadzenia w standardzie Arduino powalają na proste dołączenie bardzo wielu modułów rozszerzeń. Ciekawym uzupełnieniem modułu mikrokontrolera jest moduł wyświetlacza LCD elektrycznie zgodnego z Arduino. Wyświetlacz mimo relatywnie małej rozdzielczości jest dobrze dobrany i razem z modułem mikrokontrolera stanowi solidną bazę sprzętową do budowy własnych aplikacji. Jednym z przykładów możliwości mikrokontrolera i zewnętrznych układów peryferyjnych jest opisywany wyżej program demonstracyjny.

Na pochwałę zasługuje też bardzo dobre wsparcie w postaci firmowej biblioteki SSP i bezpłatnych narzędzi e2studio, a także bardzo popularnego środowiska IAR Embedded Workbench.

Firma Arrow Electronics przygotowała 10 zestawów, w skład których wchodzą Aris Edge S3A3 oraz nakładka z ekranem LCD Aris Edge LCD. Będą one nagrodami w konkursie, w którym pytania oparte będą na treści artykułów o zestawie. Zadania konkursowe ogłoszone zostaną we wrześniu. Serdecznie zapraszamy do udziału już teraz!
Absolwent Wydziału Elektroniki Politechniki Wrocławskiej, współpracownik miesięcznika Elektronika Praktyczna, autor książek o mikrokontrolerach Microchip i wyświetlaczach graficznych, wydanych nakładem Wydawnictwa BTC. Zawodowo zajmuje się projektowaniem zaawansowanych systemów mikroprocesorowych.