Czytnik plików na kartach SD

Czytnik bazuje na mikrokontrolerze STM32 F103RB - powstał przy użyciu płytki deweloperskiej Nucleo F103RBT, wyświetlacza opartego o sterownik KS0108 (8 lini tekstu) i czytnika kart SD LC studio. Aplikacja jest obsługiwana za pomocą dwóch przycisków.

stm32 jak zacząć stm32 tutorial SD fatfs stm32 poradnik stm32 freertos porady Freertos + fatfs
Galeria zdjęć czytnika kart SD - kliknij by powiększyć

Aplikacja działa w dwóch trybach - wyboru pliku i przeglądania jego zawartości. Po starcie uruchamiany jest oczywiście ten pierwszy. Pierwsza linia wyświetlacza pokazuje czas działania systemu w formacie GG:MM:SS. W poniższych liniach wyświetlane są nazwy plików wraz z rozszerzeniami.

Wskaźnik >> oznacza aktualnie wybrany plik. Wciśnięcie klawisza [Enter/Scroll] powoduje przejście do ekranu z zawartością pliku, a każde następne wciśnięcie wyświetlnie kolejnych 128 znaków z pliku. Klawisz [Exit/Select] powoduje powrót do głównego menu, a jego przyciskanie powoduje przesunięcie wskaźnika aktualnego wyboru na kolejny plik.

Całość działania systemu zostałą oparta o system czasu rzeczywistego FreeRTOS i bibliotekę FatFs.

Użycie FreeRTOSa ułatwia koordynację niezależnych zadań. Można śmiało traktować każdą z części systemu jako niezależny i nieświadomy innych moduł.

Pisząc daną procedurę nie trzeba implementować własnej synchrnizacji zadań, wystarczy skorzystać z gotowych mechanizmów semaforów, muteksów lub kolejek. Przy takim podejści obsługa wyświetlacza LCD można działać jako procedura czekająca na dane w kolejce i wyświetlające je w momencie pojawienia się, bez blokowania innych zadań.

FatFs to wygodny w użyciu system plików, zgodny z FAT16, udostępniający standardowy interface POSIX - procedury operacji na plikach są bardzo zbliżone do tych znanych z systemów UNIKSowych.

Funkcja main - tworzenie zadań, semaforów, kolejki i start schedulera

Funkcja obsługi wyświetlacza KS0108

Podsumowując - aplikacja w prosty sposób prezentuje możliwości systemu FreeRtos. Mamy tu możliwość dokładnej synchronizacji zadań, bez konieczności angażowania dodatkowych flag czy zmiennych.

Takie podejście pozwala inaczej myśleć o tworzonych aplikacjach - funkcje w nich zawarte mogą być traktowane jako niezależne procedury.

Prezentowany przeze mnie czytnik samodzielnie nie ma żadnej racji bytu (poza walorami edukacyjnymi), może jednak stanowić część większego systemu lub stanowić podstawę do stworzenia większego systemu. Standardowo pliki projektu można znaleźć w moim repozytorium git .

TAGS: DMA, FreeRTOS, rtos, SD, fatft