eeprom i dataflash bascom cz2(1).pdf

(1348 KB) Pobierz
K U R S
Obsługa pamięci szeregowych
EEPROM i DataFlash
w Bascom
, część 2
W wielu systemach cyfrowych,
które mają zbierać dane
z zewnątrz, powinny być
one zapisywane w pamięci
nieulotnej o właściwie
dobranej pojemności.
Pamięci nieulotne są
także wykorzystywane do
zapamiętywania ustawianych
parametrów systemu. W tego
rodzaju zastosowaniach ich
pojemność może być niewielka
– zazwyczaj do 1 kB.
Wiele mikrokontrolerów ma
wbudowaną pamięć nieulotną,
której zazwyczaj niewielka
pojemność umożliwia tylko
zapamiętanie konfiguracji
urządzenia. W przypadku
mikrokontrolerów bez
wewnętrznej pamięci EEPROM
można bez problemu dołączyć
pamięć zewnętrzną. Do tego
celu nadają się pamięci
szeregowe, gdyż do ich
dołączenia zazwyczaj nie
jest potrzebnych wiele linii
mikrokontrolera.
Gdy w systemie należy zapa-
miętać duże ilości danych, na
przykład wyniki pomiarów zebra-
nych przez czujniki, to potrzebne
są pamięci o dużej pojemności,
najlepiej nieulotne. Z dostępnych
pamięci nieulotnych można wyko-
rzystać do tego celu pamięci Data-
Flash, które mają pojemność nawet
do kilu MB. Pamięci DataFlash
mają wbudowany interfejs kompa-
tybilny z SPI, w którym często-
tliwość sygnału zegarowego może
wynosić nawet 20 MHz. Obsługę
pamięci zilustrujemy na przykła-
dzie AT45DB011B o pojemności
135168 kB. Na
rys. 15
przedsta-
wiono schemat dołączenia pamięci
DataFlash do mikrokontrolera. Linia
Pamięci szeregowe DataFlash
SI jest liną wejściową danych, li-
nia SCK to linia zegarowa, a linia
SO jest liną wyjściową danych. Pa-
mięć wykorzystana w przykładzie
ma także linię zerowania RESET,
linię wyboru układu CS oraz li-
nie WP, która umożliwia włącze-
nie blokady zapisu do pamięci.
Układ testowy jest zasilany na-
pięciem 3,3 V, gdyż takie jest na-
pięie zasilania pamięci DataFlash.
Na
rys. 16
został przedstawiony
schemat blokowy pamięci AT45D-
B011B. Posiada ona 512 stron po
264 bajty. Pamięć ma także bufor
o pojemności jednej strony. W pa-
mięciach DataFlash zapis danych
następuje stronami, do czego jest
wykorzystywany wspomniany bu-
for. Po zapełnieniu całego bufora
danych, należy do pamięci wysłać
rozkaz zapisu z adresem strony, do
której ma nastąpić zapis. Dostęp-
ne pamięci DataFlash mają różne
Kod komendy
52H
54H
53H
60H
84H
83H
88H
81H
50H
82H
58H
57H
Tab. 3. Komendy wykorzystywane w pamięci AT45DB011B
Komenda
Main memory page read
Buffer read
Main memory page to buffer transfer
Main memory page to buffer compare
Buffer write
Buffer to main memory page program with built-in erase
Buffer to main memory page program without built-in erase
Page erase
Block erase
Main memory page program throught buffer
Auto page rewrite throught buffer
Status register
Listingi do tego artykułu będą umieszczone na płycie CD EP1/2006 oraz na stronie http://download.ep.com.pl
Elektronika Praktyczna 12/2005
103
K U R S
Rys. 15. Schemat połączenia pamięci DataFlash do mikrokontrolera
Rys. 16. Schemat blokowy pamięci AT45DB011B
Rys. 17. Organizacja pamięci AT45DB011B
Rys. 18. Przebiegi sygnałów podczas wykonywania komendy &H53
wielkości buforów. Są nawet takie,
które mają ich kilka. Zastosowany
w pamięciach DataFlash bufor zna-
cząco zwiększa szybkość zapisu do
niej danych. Zapis całej strony dla
wykorzystywanej pamięci trwa ok.
7 ms. W przypadku typowych pa-
mięci EEPROM zazwyczaj tyle cza-
su trwa zapis jednego bajta.
Na
rys. 17
przedstawiono orga-
nizację pamięci AT45DB011B. Moż-
na wyróżnić trzy sektory, w skład
których wchodzą bloki, bloki z ko-
lei dzielą się na strony – każda
z nich ma pojemność 264 baj-
ty. Gdyby pamięć DataFlash mia-
ła pracować podobnie jak pamięć
EEPROM, czyli z zapisem danej
z pominięciem bufora, to jest moż-
liwość zastosowania takiej emulacji
(emulacja pamięci EEPROM przez
pamięć DataFlash). Zostało to wy-
korzystane w przykładzie obsługi
pamięci AT45DB011.
Na
list. 5
został przedstawiony
przykład obsługi pamięci DtataFlash.
Jego działanie jest podobne do pro-
gramów z poprzednich listingów.
Program umożliwia zapisanie oraz
odczyt danej z pamięci DataFlash
spod wskazanego adresu o zakresie
0...135168. W programie do komó-
rek pamięci są wpisywane kolejno
wartości od 0 do 255. Po zapisaniu
całej pamięci następuje odczyt wraz
z weryfikacją. Ze względu na dosyć
sporą pojemność pamięci, zarówno
zapis jak i odczyt trwa dosyć dłu-
go. W programie zostały utworzone
dwie procedury. Jedna do zapisu
danych pod wskazany adres oraz
druga do odczytu danych spod
wskazanego adresu.
104
Elektronika Praktyczna 12/2005
K U R S
Rys. 19. Przebiegi sygnałów podczas wykonywania komendy &H82
Komunikacja z pamięcią Da-
taFlash, podobnie jak z pamięcią
93C46, odbywa się za pośrednic-
twem komend. W
tab. 3
przedsta-
wiono komendy dostępne w pamię-
ci AT45DB011B. Niektóre z nich
zostały wykorzystane w przykła-
dowym programie. W procedurze
zapisu danej do pamięci, po obli-
czeniu adresu zostaje wysłana ko-
menda mająca adres &H53 (Main
Memory Page to Buffer Transfer).
Komenda ta wczytuje wybraną
stronę do bufora pamięci.
Na
rys. 18
przedstawiono prze-
biegi sygnałów przy wysyłaniu
komendy &H53. Po wysłaniu ko-
mendy zostaje wysłany dwubaj-
towy adres strony. W procedurze
zapisu danej do pamięci jest wy-
syłana kolejna komenda o adresie
&H82 (Main
Menory Page Program
through Buffer),
która jest komen-
dą zapisu danej do bufora wraz
z późniejszym jego zapisaniem do
zaadresowanej strony. Po modyfi-
kacji zawartości bufora jest zapi-
sywana do zaadresowanej strony
pamięci. Na
rys. 19
przedstawiono
przebiegi sygnałów podczas wysy-
łania komendy o adresie &H82. Po
wysłaniu komendy wysyłany jest
adres strony oraz adres w bufo-
rze, pod którym będzie zapisywana
dana. Następnie, narastającym zbo-
czu sygnału na linii CS, zawartość
bufora zostaje przepisana do wy-
branej strony.
W procedurze odczytu danych
z pamięci, po obliczeniu adresu,
wykorzystano komendę o adresie
&H52 (Main
Menory Page Read).
Jest to komenda odczytu strony
pamięci z pominięciem bufora. Na
rys. 20
przedstawiono przebiegi
odnoszące się do komendy &H52.
Po wysłaniu komendy wysyłany
jest adres strony, po którym wy-
syłany jest adres słowa dla danej
strony. Czyli można za jej pomocą
zaadresować i odczytać dowolne
słowo pamięci DataFlash.
Wykorzystywanie pamięci Data-
Flash pracującej podobnie jak pa-
mięć EEPROM powoduje znaczne
spowolnienie zapisu danych. Za-
pis każdej komórki będzie trwał
kilkanaście ms. W przypadku wy-
magania szybkiego zapisu danych
należy więc wykorzystać zawarty
w niej bufor, a dane zapisywać
stronami (po zapełnieniu bufora).
Zaprezentowane w artykule pro-
cedury obsługi pamięci EEPROM
i DataFlash przygotowane w Basco-
mie, mogą być stosowane w pro-
gramach odwołujących się do tych
pamięci. Są bowiem często stoso-
wane w różnych systemach, gdyż
mają dużą trwałość, wystarczają-
cą do wieloletniej pracy. Dosyć
uniwersalne pamięci z rodziny
AT24Cxx mogą być stosowane za-
równo do zapamiętywania danych
konfiguracyjnych jak i w przypad-
ku zapamiętywania sporych ilości
danych. Pamięci 93Cxx są odpo-
wiednie do wykorzystania ich do
zapamiętywania danych konfigura-
cyjnych urządzenia.
Pamięci DataFlash będą idealne
dla zapamiętywania dużych ilości
danych. Specyficzny dla nich bu-
forowy zapis danych (stronami)
przyśpiesza operację zapisu.
Marcin Wiązania
marcin.wiazania@ep.com.pl
Podsumowanie
Rys. 20. Przebiegi sygnałów podczas wykonywania komendy &H52
Elektronika Praktyczna 12/2005
105
Zgłoś jeśli naruszono regulamin