Ostale teme

Autor: Velimir Cvetković

E-mail: cveve@eunet.yu

 

SERIJSKI EEPROM, ŠTA I KAKO ...

Evo još jedne aplikacije u seriji o mikrokontroleru 68HC11. Ovog puta ću pokušati da objasnim kako da u serijski EEPROM upišemo određeni sadržaj ili da sadržaj iz njega isčitamo.

Serijski EEPROM-i su danas sve pristupačniji za korišćenje. Tome doprinose njegove male dimenzije (DIP 8), niska cena i mali broj potrebnih linija za njegovo povezivanje sa mikrokontrolerom. Aplikacija u ovom broju je realizovana sa serijskim EEPROM-om ST 24C04 proizvodnje SGS-THOMSON. To je Serijski EEPROM od 4Kbit-a, a organizovan je u dva bloka od 256 x 8 bita. Protokol komunikacije je I2C (Inter Integrated Circuit ). Uz male izmene u programu mogu da se koriste i drugi serijski EEPROM-i sa istim komunikacionim protokolom. Tipične primene ovog memorijskog medijuma su u televizorima, satelitskim prijemnicima i video-rekorderima gde služe za memorisanje trenutnih podešenja odabranih kanala, osobina slike i dr. Takođe se primenjuju za čuvanje koda programa nekih mikrokontrolera koji imaju hardverski rešenu komunikaciju sa EEPROM-om, kao što su Microchip-ovi mikrokontroleri serije PIC 15/16/17... .

Opis EEPROM-a

U tabeli su navedene brojevi pinova i njihovi nazivi.

Broj pina Oznaka Naziv
1 PRE Write Protect Enable
2 E1 Chip Enable Input
3 E2 Chip Enable Input
4 Vss Ground
5 SDA Serial Data Address I/O
6 SCL Serial Clock
7 MODE Multibyte/Page Write Mode
8 Vcc Supply Voltage

Što se tiče vremena očuvanja podataka, proizvođač garantuje da će po nestanku napajanja podaci biti sačuvani četrdeset godina. Opseg radnog napona je u intervalu od 3V do 5.5V. Sam čip ima ugrađen Power On Reset tako da su pri uključenju sve operacije zabranjene, a sam EEPROM ne reaguje ni na kakve komande, sve dok napon ne dostigne nominalnu vrednost. Slično važi i pri isključenju. Po izlasku iz fabrike serijski EEPROM-i imaju isti sadržaj svih ćelija ($FF).

Opis signala

Serial Clock (SCL) je ulazni pin i služi da sinhronizuje sve podatke koji ulaze u EEPROM i izlaze iz njega. Potrebno je priključiti Pull up otpornik ako ga već nemate na portu mikrokontrolera koji želite da koristite za tu namenu.Serial Data (SDA) je bidirekcioni pin i koristi se za transfer podataka u i iz EEPROM-a. Pošto je izveden kao Open Drain potrebno je i na njega priključiti Pull up otpornik.Chip Enable (E1-E2). Ovi ulazi služe za kontrolu dva najmanje značajna bita (b2, b3) sedmobitnog koda selekcije. Mogu biti kontrolisani softverski ako imamo više čipova na I2C BUS-u ili da budu priključeni na Vss ili Vcc.Protect Enable(PRE) ulaz zajedno sa statusom Block Address Pointer bita, aktivira zaštitu od upisivanjaMode (MODE) ulaz je na pinu 7, kao i WC . Može se kontrolisati dinamički. Kada nije priključen, tretira se da je na visokom potencijalu, što predstavlja Multibyte Write mod. Za upisivanje pojedinačnih bajtova logičko stanje na ovom pinu nije bitno.

Način rada

START. Prepoznaje se promenom logičkog nivoa na liniji SDA sa ‘1’ na ‘0’ kada je SCL na visokom logičkom nivou. Komanda START mora prethoditi bilo kojoj komandi za transfer podataka. STOP. Prepoznaje se promenom nivoa na liniji SDA sa ‘0’ na ‘1’ dok je linija SCL na visokom logičkom nivou. Naredba STOP prekida komunikaciju između master i slave čipa ( čip koji kontroliše protok podataka se zove master a onaj drugi slave). Ova komanda posle READ komande prevodi EEPROM u Stand by režim a posle WRITE komande inicira ciklus internog upisivanje u EEPROM.Acknowledge(ACK) bit služi da potvrdi uspešno izveden prenos podataka. Predajnik na BUS-u, bilo da je master ili slave će osloboditi SDA liniju čim pošalje osam bita podataka. U toku devetog impulsa na liniji SCL, prijemnik će SDA liniju “povući” na nizak logi-čki nivo kako bi potvrdio da je primio osam bita podataka.Unos podataka. Stanje na liniji SDA mora biti stabilno pri promeni stanja na liniji SCL, i sme se menjati samo kada je logičko stanje na liniji SCL ’0’.Adresiranje memorije. Da bi otpočela komunikacija između master i slave čipa, master mora da inicira START stanje. Iza toga, master šalje osam bita preko linije SDA i to device select kod (7 bita) i READ ili START bit. Četiri najznačajnija bita u device select kodu su identifikatori tipa. Za ovu memoriju su fiksni (1010 binarno). Sledeća dva bita zavise od stanja na pinovima E1, E2, pa se na isti BUS može priključiti maksimalno četiri ovakve memorije. U ovoj aplikaciji su oba pina vezana na Vcc. Sedmi bit određuje broj bloka (‘0’ - prvi blok, ‘1’ - drugi blok). Osmi bit je bit čitanja ili upisivanja i za čitanje je ‘1’ a za upisivanje ‘0’. Ako je sve u redu, na liniji SDA će se pojaviti bit potvrde u toku devetog impulsa CLOCK-a.

Upisivanje

Za upisivanje sam odabrao režim upisivanja pojedinačnih bajtova. Proces upisivanja je sledeći: prvo se šalje START bit. Iza njega sledi device select kod, koji završava bitom ‘0’ što znači da sledi upisivanje. Iza ovog bita bi trebao da se javi bit potvrde. Sada memorija čeka na osmobitnu adresu, kojom se određuje u koju od 256 lokacija, u jednom od odabranih blokova, treba da upiše bajt podataka. Po prijemu adresnog bajta memorija opet odgovara bitom potvrde. Zatim master šalje osam bita podataka a slave posle osmog bita odgovara bitom potvrde. Master završava upisivanje slanjem STOP bita. Da bi se što više skratilo vreme potrebno za upisivanje vrši se ciklično ispitivanje bita potvrde. Naime, po prijemu bajta adrese i bajta podatka, memorija se “isključuje” sa BUS-a da bi izvršila interno upisivanje tj. prebacila podatke iz internih latch-eva u memorijske ćelije. To vreme iznosi maksimalno 10ms za režim upisivanja pojedinačnih bajtova. U stvarnosti je to vreme znatno kraće, pa se zato vrši ciklično ispitivanje bita potvrde.

2b31.gif (3831 bytes)

Čitanje

Postoji tri načina isčitavanja sadržaja serijskih EEPROM-a a to su: čitanje na tekućoj adresi, čitanje sa proizvoljne adrese i sekvencijalno čitanje. U ovoj aplikaciji je primenjeno čitanje sa proizvoljne adrese. Čitanje se odvija tako što se prvo pošalje START bit i device select kod koji prati R/W bit ‘0’. Posle bita potvrde, master šalje bajt adrese. Posle tog bajta, slave odgovara bitom potvrde. Sledi START bit. Sada master šalje device select bajt koji mora da bude identičan sa prvim bajtom, s tim što njega prati R/W bit sa stanjem ‘1’. Slave odgovara bitom potvrde i počinje slanje bajta podataka. Po slanju zadnjeg bita nema bita potvrde. Čitanje se završava STOP bitom.

Program

Listing programa koji je dat počinje od adrese $100. Pre startovanja programa treba u adrese mikrokontrolera $350 upiše ‘1’ ako se želi isčitavanje ili ‘0’ ako se želi upis u EEPROM. U lokaciji $350 treba upisati takođe ‘1’ ili ‘0’ u zavisnosti koji se blok koristi. LE dioda priključena PB4 indicira stanje “BUSY” . Pri pisanju programa sam imao u vidu eventualno povezivanje sa drugim sistemima, prvenstveno sa PC-jem, kako bi se postiglo okruženje prijatnije za rad i koje bi se lako moglo proširivati za druge tipove serijskih EEPROM-a. Isčitani podaci se smeštaju od lokacije $250 do lokacije $350.


Pročitajte više o ovoj temi
Bit po bit
Povezivanje ADC-a sa 68HC11
Kako upaliti sijalicu?
Konverzija 
Pokrenimo štampač 
Množenje celog i realnog broja
Povezivanje male tastature 
AD konverzija

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji