Wyświetlacz graficzny ST7565R – karta SD

Tym razem przyszła kolej na karty pamięci SD. Podczas pracy z mikrokontrolerami często zachodzi potrzeba skorzystania z tych niewielkich kart które pomimo swoich rozmiarów oferują naprawdę spore pojemności. Szczególnie kiedy pracujemy z wyświetlaczem LCD, karta pamięci przydaję się do przechowywania bitmap o dużych rozmiarach. Nie chciałbym opisywać tutaj szczegółowo obsługi kart SD ponieważ w Internecie jest sporo informacji na ten temat i nie ma sensu powielać czegoś, co ktoś już dawno temu bardzo dobrze opisał. Wszystkie przydatne informacje z których między innymi ja korzystałem znajdują się pod tym Karta SD i tym Podłączenie karty pamięci SD adresem. Chciałbym natomiast podzielić się moimi problemami na jakie się natknąłem oraz moim rozwiązaniem. Uważam, że im więcej gotowych przykładów w internecie tym lepiej. Początkującym łatwiej jest odnaleźć się wtedy w temacie. Sam bardzo cenie sobie gotowe przykłady które można spokojnie analizować i dużo się przy tym nauczyć.
Do podłączenia karty pamięci użyłem bufora HD74LS0, którego akurat miałem pod ręką. Zastosowanie bufora było niezbędne, ponieważ karta pamięci pracuje na napięciu 3,3V a mój mikrokontroler zasilam napięciem 5V. Schemat układu testowego jaki zmontowałem pokazany jest na rys.1 poniżej.

TestSD_schemat

Rys.1 Schemat

Mając zmontowany układ zacząłem pisać program, w którym do obsługi karty pamięci SD skorzystałem z popularnej biblioteki Petit FAT . Jest to okrojona wersja biblioteki FatFS przeznaczona specjalnie na małe 8 bitowe mikrokontrolery z małą ilością pamięci RAM. Do obsługi LCD skorzystałem z omówionej w poprzednich artykułach biblioteki U8glib . Założenia programu były proste. Zmontować kartę SD, sprawdzić i wyświetlić ewentualne błędy, otworzyć znajdujący się na niej plik, odczytać jego zawartość i wyświetlić na ekranie wyświetlacza LCD oraz dodać możliwość przewijania tekstu przy pomocy przycisków.
Już na samym początku pojawił się problem, ponieważ biblioteka Petit FAT jest stworzona tylko do obsługi systemu plików FAT i nie zawiera funkcji do obsługi mikrokontrolerów czy innych urządzeń fizycznych. Biblioteka wymaga do poprawnego działania następujących funkcji które użytkownik sam musi sobie napisać do swojego urządzenia

Na szczęście autor wraz z biblioteką dostarczył kilka przykładów implementacji biblioteki na różne urządzenia w tym znalazły się mikrokontrolery z rodziny AVR. Przykłady można pobrać TU. Wymienione wcześniej funkcje znajdują się w pliku mmc.c. Po przyjrzeniu się bliżej funkcją widać że korzystają one z innych funkcji:

Są to funkcje do obsługi interfejsu SPI przy pomocy którego komunikujemy się z kartą SD. Niestety w przykładzie funkcje te napisane są w Asemblerze którego w ogóle nie znam, przez co nie byłem w stanie przerobić ich dla mojego mikrokontrolera. Dlatego można samemu napisać sobie te funkcje do obsługi SPI w języku C. W pliku mmc.c znajdują się jeszcze takie oto makra:

Musimy je zmienić by zgadzały się z naszym mikrokontrolerem. Gdy już to zrobimy biblioteka jest gotowa do pracy. Konfigurację biblioteki U8glib dla wyświetlacza LCD opisałem w poprzednich wpisach. Można teraz spokojnie pisać program. Zamieszczam zawartość głównego pliku main.c natomiast cały projekt zamieszczę na końcu artykułu:

Sam program nie jest trudny i myślę, że nie powinno być problemów z jego zrozumieniem. Na kartę pamięci wgrałem plik tekstowy o nazwie “plik.txt” do którego wkleiłem fragment listu Zygmunta Krasińskiego do Delfiny Potockiej. Niestety czcionki dostarczone z biblioteką U8glib nie posiadają polskich znakó a nie chciało mi się już tego zmieniać, dlatego czasem widać na wyświetlaczu dziwne znaczki.

TestSD1

Przy pomocy funkcji

Możemy przesuwać kursor otwartego pliku dzięki czemu możemy przewijać tekst przy pomocy klawiszy. Jako argument przyjmuje po prostu liczbe bajtów, gdzie znajdzie się kursor licząc od początku pliku. Pozostałe funkcje opisane są na stronie Petit FAT.

TestSD2

TestSD3

TestSD4

Gdy odłączymy kartę pamięci wyświetli nam się błąd i nie zobaczymy zawartości pliku.

 

Oraz krótki filmik prezentujący działanie programu:

Pobierz:

Załączniki Wielkość
Projekt Atmel Studio 6.2 2,25MB
Wyświetlacz graficzny ST7565R – karta SD
Ocena: 4.7 (3 głosów)

0 Komentarzy

Dodaj komentarz

*

*

Ile jest * Time limit is exhausted. Please reload CAPTCHA.

banner

Korzystając z tej strony wyrażasz zgodę na korzystanie z plików cookie. Zobacz szczegóły

Wykorzystujemy pliki cookie do spersonalizowania treści i reklam, aby oferować funkcje społecznościowe i analizować ruch w naszej witrynie. Informacje o tym, jak korzystasz z naszej witryny, udostępniamy partnerom społecznościowym, reklamowym i analitycznym. Więcej informacji znajdziesz na Jak Google wykorzystuje dane gromadzone podczas korzystania z witryn i aplikacji naszych partnerów.

Zamknij