Obsługa kart pamięci Flash, część 6


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ęść 2
Obsługa kart pamięci Flash, część 7
Obsługa kart pamięci Flash, część 4
Obsługa kart pamięci Flash, część 3
Obsługa kart pamięci Flash, część 5
Obsługa kart pamięci Flash, część 1
Obsługa kart pamięciowych SD, cz 2
PAMIECI FLASH
Digital Image Recovery do odzyskiwania danych z kart pamięci fotograficznych
Odczytanie identyfikatorów VID i PID pendrive i pamięci flash
Odczytanie identyfikatorów VID i PID pendrive i pamięci flash
utk2 pamieci flash
Mikrokontrolery STM32 Obsługa kart SD i FatFs
Programowanie pamięci FLASH ROM Jak uruchomić programator FLASH
Instalacja Windows XP z USB, pendrive a lub karty pamięci flash
Programowanie pamięci Flash mikrokontrolerów STM32 – Flash Loader

więcej podobnych podstron