K U R S
Obsługa kart pamięci Flash
za pomocą mikrokontrolerów,
część 6
Karty MultiMedia Card (MMC)
Potwierdzenia W przedostatniej części cyklu autor przedstawia ostatnie
Karty MMC w trybie SPI wysyłają
zagadnienia teoretyczne, których poznanie jest niezbędne do
dwa rodzaje potwierdzeń. Pierwszy z nich,
prawidłowego posługiwania się kartami pamięci MMC.
to potwierdzenia odsyłane po przyjęciu
komendy. Występuje ono w 3 wariantach wystawiony bezpośrednio po wysłaniu po
oznaczonych jako R1, R1b i R2. Potwier- potwierdzeń typu R1b oraz Data Respon-
dzenie R1 jest podstawowym rodzajem se. Sygnał BUSY to permanentne ściągnię-
potwierdzeń wysyłanych po większości cie linii DataOut do masy, odczytywane
komend. R1b jest to potwierdzenie typu przez mikrokontroler jako bajt o wartości
R1 uzupełnione o sygnał BUSY. Potwier- 0x00. W przypadku zajętości karty można
dzenie R2 jest wysyłane w odpowiedzi zatrzymać sygnał CLK a nawet zdezakty-
na komendę żądania statusu karty i ono wować sygnał CS, co spowoduje przejście jeden bajt zwany Data Error Token. Oznacza
jest właśnie dwubajtowym statusem karty. linii DataOut w stan wysokiej impedancji. to, że zamiast spodziewanego bajtu o war-
Pierwszy bajt potwierdzenia R2 jest taki Karta będzie kontynuowała wewnętrzny tości 0xFE oznaczającego początek bloku
sam jak w potwierdzeniu R1. Dokładny proces zapisu danych. Po ponownym danych (bajt startu) otrzymamy bajt którego
format potwierdzeń po otrzymaniu ko- wybraniu karty niskim poziomem na linii 4 najstarsze bity są równe zeru, a pozostałe
mendy pokazano na rys. 7 i 8. Zgodnie CS, jeśli karta jest nadal w stanie BUSY, zawierają przyczynę błędu. Strukturę tego
ze specyfikacją MMC nie muszą być one to pojawi się on na linii DataOut po bajtu pokazano na rys. 10, a znaczenie po-
wysyłane natychmiast po otrzymaniu ko- otrzymaniu pierwszego impulsu na linii szczególnych bitów jest takie samo jak przy
mendy. Pomiędzy jej wysłaniem, a zwróce- CLK. Najprostszym sposobem sprawdza- opisie potwierdzenia typu R2.
niem potwierdzenia należy wysłać na linie nia zajętości karty jest
CLK od 8 do 64 impulsów zegarowych odczytywanie jej w pętli
co oznacza, że musimy odebrać od 1 do to czasu otrzymania baj-
8 bajtów z magistrali SPI. Na szczęście tu o wartości różnej od
najstarszy bit w bajcie potwierdzenia ma 0. Jednakże nie można
zawsze wartość 0 , a w trakcie oczekiwa- robić tego w nieskończo-
nia na potwierdzenie karta zwraca wartość ność, ponieważ fizyczne
0xFF, wiec po prostu w pętli odbieramy zwarcie linii DataOut
dane z karty do czasu aż najstarszy bit do masy spowoduje, że
odebranego bajtu będzie równy 0, co ozna- program utknie na oczeki-
cza że właśnie odebraliśmy bajt potwier- waniu na koniec zajętości
dzenia. W trybie SPI karta zawsze musi karty. Specyfikacja MMC
odebrać i potwierdzić komendę, nawet jeśli podaje, że po 10-krotnym
Rys. 7. Potwierdzenie typu R1
jest w trybie BUSY. przekroczeniu wartości
Drugim rodzajem potwierdzeń jest typowego czasu zapisu
potwierdzenie Data Response, wysyła- można uznać że nastąpił
ne przez kartę po przesłaniu do niej jakiś nieoczekiwany błąd
każdego bloku danych, który ma być i należy podjąć próbę
zapisany na karcie. Jest to jednobajto- odzyskania kontroli nad
we potwierdzenie wysyłane natychmiast kartą poprzez próbę po-
po otrzymaniu przez kartę kompletnego nownej inicjalizacji karty,
bloku danych, a jego format pokazano lub chwilowego odłącze-
na rys. 9. nia zasilania karty (jeśli
przewidziano taką moż-
Sygnał BUSY czyli zajętość karty liwość).
Po każdej operacji zapisu lub ka-
sowania danych, wewnętrzny kontroler Data Error Token
karty rozpoczyna wewnętrzny proces W przypadku wystą-
zapisywania danych do pamięci Flash. pienia błędu podczas od-
W tym czasie karta nie może wykony- czytu karty, zamiast bloku
wać żadnych nowych komend. Zostaje on danych, karta zwróci nam Rys. 8. Potwierdzenie typu R2
Elektronika Praktyczna 8/2004
87
K U R S
Inicjalizacja karty jest wysyłana do karty w czasie gdy jest
Przed rozpoczęciem jakiejkolwiek ko- ona w trybie MMC, w którym to trybie
munikacji z kartą, po załączeniu zasilania karta ma standardowo załączony tryb
karty musi ona otrzymać co najmniej 74 sprawdzania sumy CRC, musi ona zostać
cykle zegarowe na linii CLK. Oznacza to wysłana wraz z prawidłową sumą kon-
Rys. 9. Potwierdzenie Data Response
wysłanie co najmniej 8 bajtów o warto- trolną dla tej komendy. Na szczęście jest
ści 0xFF zanim rozpoczniemy właściwą to komenda statyczna i zawsze posiada
procedurę inicjalizacji karty. Opisane 8 takie samo CRC, więc nie ma potrzeby
bajtów powinno być wysłane przy wyso- jego wyliczania. Kompletna, 6-bajtowa
kim stanie na linii CS. W tym momencie komenda przełączająca kartę w tryb SPI
interfejs karty zaczyna pracować w trybie wygląda tak: 0x40, 0x00, 0x00, 0x00,
Rys. 10. Data Error Token
MMC. Aby przełączyć się w tryb SPI 0x00, 0x95. Po przełączeniu karty w tryb
należy wysłać do karty komendę CMD0 SPI sprawdzanie sumy kontrolnej zostaje
Tab. 5. Definicje czasów jednostką
przy niskim stanie sygnału CS. W tym automatycznie wyłączone, więc pisząc
jest 8 cykli zegarowych
momencie karta przełącza się w tryb procedurę wysyłającą komendy do karty,
Symbol Minimum Maksimum
SPI i potwierdza ten fakt odpowiedzią można jako bajt CRC wysyłać zawsze
NCS 0
R1 zgodną z trybem SPI, oraz pozostaje wartość 0x95, która będzie prawidłowym
NCR 1 8
w stanie IDLE. Ponieważ komenda CMD0 CRC dla CMD0 w momencie inicjaliza-
NRC 1
cji karty i będzie
NAC 1 10*(TAAC+NSAC)
ignorowany przy
NWR 1
pozostałych komen-
NEC 0
dach (o ile nie
NDS 0
zamierzamy włą-
czyć obsługi CRC).
Jedyną dozwoloną wania i jest gotowa na przyjęcie następ-
komendą w stanie nej komendy. W tym momencie proces
IDLE, w którym to inicjalizacji dobiegł końca i karta jest
karta pozostaje po gotowa do pracy.
wykonaniu CMD0,
jest komenda CMD1. Zależności czasowe
Mikrokontroler po- Na koniec tej części artykułu przed-
winien sukcesywnie stawiam zależności czasowe występują-
wysyłać tą komen- ce podczas komunikacji z kartą MMC
dę do czasu kiedy z wykorzystaniem protokołu SPI. Po-
w otrzymanym baj- chodzą one z specyfikacji dostarczonej
cie odpowiedzi bit przez firmę SanDisk, którą mogą czytel-
0 oznaczający stan nicy znalezć na CD-EP8/2004B.
IDLE nie zostanie W kolejnej ostatniej części kursu
wyzerowany. W tym zajmiemy się praktycznymi przykładami
momencie karta za- procedur obsługi kart MMC napisanymi
kończyła procedurę w języku C dla mikrokontrolerów AVR.
wewnętrznego zero- Romuald Biały
Odpowiedz karty na komendę karta jest gotowa.
Odpowiedz karty na komendę karta jest zajęta.
Odczyt danych.
Zapis danych.
Elektronika Praktyczna 8/2004
88
Wyszukiwarka
Podobne podstrony:
Obsługa kart pamięci Flash, część 2Obsługa kart pamięci Flash, część 7Obsługa kart pamięci Flash, część 4Obsługa kart pamięci Flash, część 3Obsługa kart pamięci Flash, część 5Obsługa kart pamięci Flash, część 1Obsługa kart pamięciowych SD, cz 2PAMIECI FLASHDigital Image Recovery do odzyskiwania danych z kart pamięci fotograficznychOdczytanie identyfikatorów VID i PID pendrive i pamięci flashOdczytanie identyfikatorów VID i PID pendrive i pamięci flashutk2 pamieci flashMikrokontrolery STM32 Obsługa kart SD i FatFsProgramowanie pamięci FLASH ROM Jak uruchomić programator FLASHInstalacja Windows XP z USB, pendrive a lub karty pamięci flashProgramowanie pamięci Flash mikrokontrolerów STM32 – Flash Loaderwięcej podobnych podstron