Obsługa kart pamięci Flash za pomocą mikrokontrolerów, cz.1.pdf

(422 KB) Pobierz
Obsługa kart pamięci Flash za pomocą mikrokontrolerów, część 1
K U  R S
Obsługa kart pamięci Flash
za pomocą mikrokontrolerów,
część 1
Karty pamiÍci Flash znajduj¹ coraz szersze zastosowanie
w†elektronice uøytkowej. Cyfrowe aparaty fotograficzne,
odtwarzacze MP3, organizery czy palmtopy to urz¹dzenia,
w†ktÛrych zastosowanie kart pamiÍci sta³o siÍ wrÍcz
niezbÍdne. Spowodowa³o to znaczny spadek ich cen, a†szybki
rozwÛj przemys³u elektronicznego umoøliwi³ wzrost pojemnoúci
kart do ponad 1†GB!
Coraz czÍúciej ulegamy wiÍc pokusie zastosowania kart pamiÍci
we w³asnych projektach. W†artykule chcia³bym przybliøyÊ
Czytelnikom budowÍ, sposÛb pod³¹czenia oraz wymagane
protoko³y komunikacji dwÛch najbardziej popularnych
i†jednoczeúnie dobrze udokumentowanych typÛw kart pamiÍci:
Compact Flash (CF) oraz Multimedia Card (MMC).
Wraz ze wzrostem zapotrzebo-
wania na tanie i†pojemne noúniki
danych niezawieraj¹cych elementÛw
ruchomych, kilka firm specjalizuj¹-
cych siÍ w elektronice uøytkowej
rozpoczͳo produkcjÍ kart pamiÍcio-
wych opartych na technologii pa-
miÍci FLASH. Powsta³o kilka od-
miennych rodzajÛw kart, rÛøni¹cych
siÍ konstrukcj¹ mechaniczn¹, inter-
fejsem i†sposobem komunikacji. Na
rynku pojawi³y siÍ karty: Compact
Flash, Multimedia Card, Smart Me-
dia, Secure Digital, Memory Stick
i†kilka innych mniej znanych ro-
dzajÛw.
Tab. 1. Opis styków kart CF
Numer Typ Nazwa sygna³u Nazwa sygna³u Nazwa sygna³u
styku w trybie w trybie w trybie
PC Card Memory PC Card I/O True IDE
1 P GND GND GND
2... 6 I/O D03...D07 D03...D07 D03...D07
7 I -CE1 -CE1 -CS0
8 I A10 A10 A10 *GND
9 I -OE -OE -ATA SEL
10 - 12 I A09...A07 A09...A07 A09...A07 *GND
13 P VCC VCC VCC
14 - 17 I A06...A03 A06...A03 A06...A03 *GND
18- 20 I A02...A00 A02...A00 A02...A00
21 - 23 I/O D00...D02 D00...D02 D00...D02
24 O WP -IOS16 -IOS16
25 O -CD1 -CD1 -CD1
26 O -CD2 -CD2 -CD2
27 - 31 I/O D11...D15 D11...D15 D11...D15
32 I -CE2 -CE2 -CS1
33 O -VS1 -VS1 -VS1
34 I -IORD -IORD -IORD
35 I -IOWR -IOWR -IOWR
36 I -WE -WE -WE *VCC
37 O RDY/-BSY -IREQ INTRQ
38 P VCC VCC VCC
39 I -CSEL -CSEL -CSEL
40 O -VS2 -VS2 -VS2
41 I RESET RESET -RESET
42 O -WAIT -WAIT IORDY
43 O -INPACK -INPACK -INPACK
44 I -REG -REG -REG *VCC
45 I/O BVD2 -SPKR -DASP
46 I/O BVD1 -STSCHG -PDIAG
47 - 49 I/O D08...D10 D08...D10 D08...D10
50 P GND GND GND
Legenda: I - wejœcie; O - wyjœcie; I/O - linia dwukierunkowa (wejœcie-wyjœcie); P - zasilanie;
*GND - w tym trybie pod³¹czyæ do GND; *VCC - w tym trybie pod³¹czyæ do VCC
Kaøda karta pamiÍci sk³ada siÍ
z†pamiÍci, najczÍúciej typu NAND
Flash oraz specjalizowanego kontro-
lera zarz¹dzaj¹cego ni¹ i†bÍd¹cego
jednoczeúnie interfejsem wejúciowo-
wyjúciowym karty ( rys. 1 ).
W†zaleønoúci od rodzaju karty,
interfejs moøe byÊ typu rÛwnoleg³e-
go lub szeregowego. Karty typu
Compact Flash s¹ kartami z†inter-
fejsem rÛwnoleg³ym, mog¹cym ko-
munikowaÊ siÍ z†mikrokontrolerem
za pomoc¹ 8- lub 16-bitowej magis-
trali danych oraz kilku linii adre-
sowych i†steruj¹cych. Karty typu
Rys. 1. Schemat blokowy kart
pamięci FLASH
Fot. 2. Wygląd karty
Compact Flash
Elektronika Praktyczna 2/2004
85
32667375.046.png 32667375.047.png
K U  R S
Rys. 3. Schemat przejściówki z karty CF na złącze IDE
Rys. 4. Podłączenie karty CF do mikrokontrolera AVR
86
Elektronika Praktyczna 2/2004
32667375.048.png 32667375.049.png 32667375.001.png 32667375.002.png 32667375.003.png 32667375.004.png 32667375.005.png 32667375.006.png 32667375.007.png 32667375.008.png 32667375.009.png 32667375.010.png 32667375.011.png 32667375.012.png 32667375.013.png 32667375.014.png 32667375.015.png 32667375.016.png 32667375.017.png 32667375.018.png 32667375.019.png 32667375.020.png 32667375.021.png 32667375.022.png 32667375.023.png 32667375.024.png 32667375.025.png 32667375.026.png 32667375.027.png 32667375.028.png 32667375.029.png 32667375.030.png 32667375.031.png
K U  R S
Rys. 5. Podłączenie karty CF wraz z dodatkową pamięcią RAM do mikrokontrolera AVR
MMC s¹ wyposaøone w†interfejs
szeregowy, w ktÛrym zastosowano
do komunikacji zaledwie 3†linie. Ze
wzglÍdu na znaczne rÛønice pomiÍ-
dzy oboma rodzajami kart opiszÍ je
oddzielnie.
nych. Kolejn¹ zalet¹ tych kart jest
wbudowany uk³ad korekcji b³ÍdÛw
oraz wykrywania i†omijania ewentu-
alnych defektÛw pamiÍci. Ze wzglÍ-
du na 16-bitowy, rÛwnoleg³y inter-
fejs, karty te osi¹gaj¹ transfer da-
nych o†szybkoúci do 16 MB/s. Øy-
wotnoúÊ kart CF okreúla si͆na po-
ziomie 1†miliona zapisÛw lub 1†mi-
liona godzin pracy, a†czas przecho-
wywania danych - na poziomie 100
lat. Sama karta ma wymiary
42,8x36,4x3,3 mm i†waøy oko³o 11
gramÛw.
bÛw czÍúÊ sygna³Ûw wystÍpuj¹cych
na z³¹czu karty ma odmienne fun-
kcje. W† tab. 1 opisano nazwy syg-
na³Ûw wyprowadzanych na poszcze-
gÛlne styki z³¹cza CF we wszyst-
kich trzech trybach pracy, a†w† tab.
2 funkcje poszczegÛlnych sygna³Ûw.
W†trybach Memory oraz I/O, do-
stÍp do karty moøe byÊ realizowa-
ny w†trybie 8-bitowym - przy
wspÛ³pracy z†8-bitowymi mikropro-
cesorami lub w†celu przyspieszenia
komunikacji z†mikroprocesorami 16-
bitowymi, karta moøe pracowaÊ wy-
korzystuj¹c pe³n¹, 16-bitow¹ magis-
tralÍ danych. W†celu wykorzystania
16-bitowego trybu wejúcia -CE1 i†-
CE2 ³¹czymy razem i†wykorzystuje-
my jako pojedynczy sygna³ Chip
Select . W†trybie True IDE komuni-
kacja odbywa†siÍ wy³¹cznie za po-
moc¹ interfejsu 16-bitowego.
Karty Compact Flash
Compact Flash jest najstarszym
typem karty. Po raz pierwszy zo-
sta³a ona zaprezentowana w†1994
roku przez firmÍ SanDisk. Od tego
czasu karty te zyska³y duø¹ popu-
larnoúÊ ze wzglÍdu na najwiÍksze
osi¹gane pojemnoúci, najlepszy sto-
sunek pojemnoúci do ceny oraz
moøliwoúÊ prawie bezpoúredniego
pod³¹czenia do komputera PC -
szczegÛlnie typu notebook. Potrzeb-
na jest jedynie pasywna przejúciÛw-
ka z†50-stykowego z³¹cza karty na
68-stykowe z³¹cze PCMCIA.
Karty CF maj¹ obecnie najwiÍk-
sze pojemnoúci - do 1†GB, chociaø
s¹ juø dostÍpne pierwsze karty
o†pojemnoúci 4†GB ( fot. 2 ). Karty te
mog¹ byÊ zasilane zarÛwno napiÍ-
ciem 3,3†V, jak i†5†V, co czyni je
idealnymi do zastosowania w bar-
dzo wielu urz¹dzeniach przenoú-
Interfejs
Interfejs kart CF jest elektrycz-
nie zgodny z†interfejsem PCMCIA,
powszechnie stosowanym w†przenoú-
nych komputerach typu notebook.
Jest to dwurzÍdowe, 50-stykowe z³¹-
cze szpilkowe z†rastrem 1,27 mm,
podobne do 68-stykowego z³¹cza
PCMCIA. W†zaleønoúci od potrzeb,
karty CF mog¹ pracowaÊ w†jednym
z†trzech trybÛw komunikacji: PC
Card w†trybie Memory , PC Card
w†trybie I/O oraz True IDE -
zgodnym ze standardowymi dyska-
mi twardymi IDE. W†kaødym z†try-
WybÛr trybu pracy
Bezpoúrednio po za³¹czeniu zasi-
lania karta moøe siÍ uruchomiÊ
w†jednym z†dwÛch trybÛw. Jeúli
w†tym czasie na wejúciu -OE bÍ-
dzie wystÍpowa³ poziom wysoki, to
karta zostanie skonfigurowana do
Elektronika Praktyczna 2/2004
87
32667375.032.png 32667375.033.png 32667375.034.png 32667375.035.png 32667375.036.png 32667375.037.png 32667375.038.png 32667375.039.png 32667375.040.png 32667375.041.png 32667375.042.png 32667375.043.png
K U  R S
pracy w†trybie PC Card Memory .
Aby zmieniÊ tryb na I/O, naleøy
dokonaÊ odpowiedniego wpisu do
rejestru Configuration Option Regis-
ter pod adresem 0†w†obszarze rejes-
trÛw konfiguracyjnych (dostÍp przy
niskim poziomie sygna³u -REG).
Aby wymusiÊ pracÍ w†trybie
True IDE, naleøy za³¹czyÊ zasilanie
karty przy niskim poziomie na wej-
úciu -OE (ktÛre w†tym trybie ma
nazwÍ -ATA SEL). W†tym przypad-
ku nie ma dostÍpu do rejestrÛw
konfiguracyjnych karty, a†kontroler
karty zachowuje siÍ jak standardo-
wy dysk twardy IDE. Ten tryb pra-
cy wykorzystuje siÍ jedynie w†przy-
padku pod³¹czenia karty CF do ma-
gistrali IDE komputera PC. W†tym
celu niezbÍdna jest odpowiednia
przejúciÛwka, ktÛrej schemat poka-
zano na rys. 3 .
Tab. 2. Funkcje poszczególnych sygnałów występujących na złączu karty CF
Nazwa sygna³u Tryb
Opis
A10...A00
MEM , I/O
W trybach PC Card linie adresowe wykorzystywane wraz z sygna³em
-REG do adresowania wewnêtrznych rejestrów kontrolera
A02...A00
IDE
W trybie True IDE wykorzystuje siê tylko linie A02...A00 do adreso-
wania jednego z oœmiu rejestrów IDE, a pozosta³e linie adresowe
powinny byæ po³¹czone z GND
BVD1
MEM
Nieu¿ywany w tym trybie
-STSCHG
I/O
Zmienia stan na niski w celu poinformowania o zmianie statusu
(RDY/-BSY, WP)
PDIAG
IDE
Wejœcie/Wyjœcie sygna³u informuj¹cego o poprawnej diagnostyce
dla wspó³pracy 2 urz¹dzeñ IDE
BVD2
MEM
Nieu¿ywany w tym trybie
-SPKR
I/O
Cyfrowe wyjœcie dŸwiêku, je¿eli karta posiada tak¹ funkcjê
-DASP
IDE
Wejœcie/Wyjœcie sygna³u informuj¹cego o aktywnoœci karty lub obec-
noœci urz¹dzenia Slave dla wspó³pracy 2 urz¹dzeñ IDE
-CD1, -CD2
MEM, I/O, IDE
Detekcja w³o¿enia karty. Styki pod³¹czone wewn¹trz karty z GND.
Te styki z³¹cza CF s¹ krótsze ni¿ pozosta³e
-CE1, -CE2
MEM, I/O
Oba sygna³y pe³ni¹ rolê sygna³ów wyboru karty ( Chip Select ) oraz
do wyboru trybu 8- lub 16-bitowego dostêpu do karty. -CE2 zawsze
wybiera starsze 8 bitów s³owa. -CE1 wybiera m³odszy lub starszy
bajt s³owa w zale¿noœci od stanu sygna³ów A0 i -CE2. Odpowiednia
kombinacja sygna³ów A0, -CE1 i -CE2 umo¿liwia dostêp do 16-bito-
wych danych jedynie poprzez 8 linii danych (D00...D07)
Pod³¹czenie karty CF do
mikrokontrolera
Pod³¹czaj¹c kartÍ CF do mikro-
kontrolera jednouk³adowego, najdo-
godniej jest wybraÊ tryb PC Card
Memory . Jeúli ma to byÊ 8-bitowy
mikrokontroler, to naleøy uøywaÊ 8-
bitowego trybu dostÍpu. W†wiÍk-
szoúci przypadkÛw nie ma potrzeby
dokonywania jakichkolwiek zmian
w†obszarze rejestrÛw konfiguracyj-
nych karty, co znacznie upraszcza
uk³ad i†ogranicza liczbÍ pinÛw nie-
zbÍdnych do komunikacji mikrokon-
trolera z†kart¹. Jeúli uøyty mikro-
kontroler ma wbudowany interfejs
do obs³ugi zewnÍtrznej pamiÍci
RAM, to moøemy go wykorzystaÊ,
co znacznie upraszcza i przyúpiesza
dzia³anie procedur komunikacyjnych.
Oczywiúcie w†przypadku braku ta-
kiego interfejsu nic nie stoi na
przeszkodzie, aby do komunikacji
uøyÊ standardowych linii portÛw
wejúcia-wyjúcia, a†odpowiednie kom-
binacje sygna³Ûw steruj¹cych gene-
rowaÊ programowo.
Na rys. 4 i† rys. 5 pokazano
przyk³adowe sposoby pod³¹czenia
karty CF, skonfigurowanej do pracy
w†trybie PC Card Memory, do mik-
rokontrolera Atmega161 firmy At-
mel. Mikrokontroler ma wbudowany
interfejs do zewnÍtrznej pamiÍci
RAM, a†wiÍc zosta³ on uøyty. Do
pe³nej obs³ugi rejestrÛw karty odpo-
wiadaj¹cych za adresowanie, zapis
i†odczyt ca³ego dostÍpnego obszaru
pamiÍci Flash na karcie wystarczy
uøycie tylko jej 4†linii adresowych
(adresy od A00 do A03). Pozosta³e
linie adresowe ³¹czymy po prostu
z†mas¹.
-CS0, -CS1
IDE
Linia -CS1 jest u¿ywana do wyboru dostêpu do Alternatywnego
Rejestru Statusu oraz Rejestru Kontrolnego , linia -CS0 do wyboru
pozosta³ych rejestrów IDE
-CSEL
MEM, I/O
Nieu¿ywany w tych trybach
IDE
Wybór trybu IDE Master/Slave. Pod³¹czenie tej linii do masy powodu-
je skonfigurowanie karty jako dysku Slave. Aby karta zg³asza³a siê
jako dysk Master, linia ta powinna pozostaæ niepod³¹czona
D15 - D00
MEM, I/O, IDE
16 dwukierunkowych linii danych s³u¿¹cych do zapisu/odczytu
danych oraz rejestrów konfiguracyjnych. W przypadku wykorzystania
8-bitowego dostêpu, u¿ywane s¹ linie D00...D07. Tryb IDE zawsze
wykorzystuje 16-bitowy tryb dostêpu
-INPACK
I/O
Sygna³ wystawiany przez kartê w momencie potwierdzenia przyjêcia
danych przez kartê. Mo¿e byæ wykorzystany przez system do stero-
wania buforów magistrali danych
MEM, IDE
Nieu¿ywany w tych trybach
-IORD
MEM
Nieu¿ywany w tym trybie
I/O, IDE
Sygna³ zezwolenia na odczyt z karty
-IOWR
MEM
Nieu¿ywany w tym trybie
I/O, IDE
Sygna³ zezwolenia na zapis do karty. Dane s¹ zatrzaskiwane na
narastaj¹cym zboczu
-OE
MEM
Sygna³ zezwolenia na odczyt z karty w trybie Memory
I/O
W tym trybie sygna³ ten jest u¿ywany do odczytu rejestru CIS oraz
rejestru konfiguracji
-ATA SEL
IDE
Aby karta CF pracowa³a w trybie True IDE , linia ta musi zostaæ
po³¹czona z GND
RDY/-BSY
MEM
Sygna³ gotowoœci karty do przyjêcia nowych danych. Stan niski
oznacza zajêtoœæ karty. W trakcie resetu karty sygna³ ten utrzymywa-
ny jest w stanie niskim a¿ do zakoñczenia wewnêtrznego zerowania
-IREQ
I/O
Wyjœcie ¿¹dania przerwania do mikrokontrolera. Aktywne w stanie
niskim lub przy opadaj¹cym zboczu
INTRQ
IDE
Wyjœcie ¿¹dania przerwania dla interfejsu IDE. Aktywne w stanie wy-
sokim
-REG
MEM
Sygna³ wyboru dostêpu do rejestrów konfiguracyjnych karty lub
do rejestrów komunikacji (ATA). Niski dla dostêpu do rejestrów
konfiguracyjnych
I/O
Musi byæ w stanie niskim w czasie wystawiania adresu na magistralê
IDE
Nieu¿ywany w tym trybie. Powinien byæ pod³¹czony do VCC
RESET
MEM, I/O
Sygna³ zeruj¹cy kontroler karty CF. Aktywny w stanie wysokim
-RESET
IDE
Sygna³ zeruj¹cy kontroler karty CF. Aktywny w stanie niskim
88
Elektronika Praktyczna 2/2004
32667375.044.png
K U  R S
Tab. 2 − cd.
Nazwa sygna³u Tryb
Opis
na do linii -CE1 karty CF i†pozwala
na dostÍp do niej w†8-bitowym try-
bie. W†tym przypadku rejestry karty
s¹ ulokowane w†obszarze pamiÍci ze-
wnÍtrznej o†adresach poniøej 0x8000.
W†uk³adzie z† rys. 5 , oprÛcz kar-
ty CF, do mikrokontrolera pod³¹czo-
no dodatkow¹ pamiÍÊ RAM o po-
jemnoúci 32 kB, ulokowan¹ w†ob-
szarze poniøej 0x8000. Adresy kar-
ty CF musz¹ siÍ wiÍc znajdowaÊ
powyøej tego obszaru. W†tym celu
linia A15 mikrokontrolera doprowa-
dzona jest do inwertera i†po zane-
gowaniu jej sygna³u powoduje wy-
bieranie karty CF za pomoc¹ syg-
na³u -CE1. W†tym przypadku jest
niezbÍdny zatrzask adresowy, wiÍc
linie A00...A03 karty mog¹ byʆpod-
³¹czone do linii adresowych A0...A3
i†karta CF zajmuje obszar pamiÍci
o†adresach od 0x8000 do 0x800F.
Jeúli mamy juø odpowiednio
pod³¹czon¹ kartÍ CF, musimy napi-
saÊ odpowiednie oprogramowanie
umoøliwiaj¹ce zapis i†odczyt zawar-
toúci karty. Ale o†tym napiszÍ
w†drugiej czÍúci kursu.
Romuald Bia³y
-VS1, -VS2
MEM, I/O, IDE
Sygna³ -VS1 jest pod³¹czony wewn¹trz karty CF do GND w celu
poinformowania interfejsu PCMCIA o mo¿liwoœci pracy przy napiêciu
3,3 V. -VS2 jest zarezerwowany przez PCMCIA dla drugiego zasilania
-WAIT
MEM, I/O
Sygna³ generowany przez kartê w celu przed³u¿enia cyklu dostêpu do
IORDY
karty. Aktywny w stanie niskim
IDE
Mo¿e byæ wykorzystany do sygnalizacji gotowoœci interfejsu ATA
-WE
MEM
Sygna³ zezwolenia na zapis rejestrów karty w trybie Memory .
U¿ywany tak¿e do zapisu rejestrów konfiguracyjnych
I/O
U¿ywany do zapisu rejestrów konfiguracyjnych karty
IDE
Nieu¿ywany w tym trybie. Powinien byæ pod³¹czony do VCC
WP
MEM
Karty CF nie posiadaj¹ prze³¹cznika blokady zapisu, któr¹ udostêpnia
specyfikacja PCMCIA, wiêc po zakoñczeniu sekwencji inicjalizacji
wyjœcie to przyjmuje stan niski
-IOS16
I/O, IDE
Przyjmuje stan niski, kiedy wykorzystywany jest 16-bitowy tryb
dostêpu do danych
GND
Masa zasilania i sygna³ów I/O
VCC
Zasilanie karty CF (+5 lub +3,3 V)
W†uk³adzie z† rys. 4 nie przewi-
dziano pod³¹czenia dodatkowej, ze-
wnÍtrznej pamiÍci statycznej RAM,
wiÍc moøe on byÊ maksymalnie
uproszczony, a†karta CF moøe byÊ
umieszczona w†dowolnym obszarze
zewnÍtrznej pamiÍci RAM mikrokon-
trolera. Dlatego teø zbÍdny jest za-
trzask adresowy na liniach
AD0...AD7 mikrokontrolera, a†linie
A00...A03 karty CF s¹ po³¹czone z†li-
niami A8...A11 mikrokontrolera. Kar-
ta jest wybierana niskim poziomem
na linii A15, ktÛra jest doprowadzo-
Elektronika Praktyczna 2/2004
89
32667375.045.png
Zgłoś jeśli naruszono regulamin