I2C cu Arduino (AT24C64)

Am gasit printr-o cutie mai veche niste componente, printre care si un EEPROM serial AT24C64 pe care m-am gandit sa-l leg la Arduino (bineinteles). Scopul principal e sa folosesc montajul pentru a testa un OpenBench Logic Sniffer. Memoria foloseste pentru comunicatie bus-ul I2C (two-wire).

Pinii memoriei seriale sunt dispusi astfel:
AT24C64 Pinout

Semnificatia pinilor este urmatoarea:
AT24C64 Pin Functions
Pinii A2, A1 si A0 sunt folositi pentru a seta adresa dispozitivului, permitand conectarea a pana la opt memorii simultan, pe cele doua fire ale bus-ului I2C (SDA si SCL). Modul de stabilire a adresei este redat mai jos:
AT24C64 Device Address
Astfel, daca am conecta pinii A0, A1 si A2 la VCC, adresa ar fi 1010111 (binar), adica 57 (hexazecimal) sau 87 (zecimal). Daca am conecta numai pinul A2 la VCC si pinii A0 si A1 la GND, am obtine 1010100b, adica 0x54 (hexa) sau 84 (zecimal). Toti cei trei pini pot fi de asemenea lasati neconectati si asa voi proceda in continuare, pentru simplitate. In acest caz, A0, A1 si A2 au valoarea 0, iar adresa memoriei este 0x50.

Pinul WP (7), atunci cand este legat la GND, permite operatiile de scriere, in timp ce atunci cand este legat la VCC blocheaza operatiile de scriere. Cand este lasat neconectat, operatiile de scriere sunt permise, prin urmare il vom lasa neconectat.

Avem nevoie astfel de:

  • o memorie AT24C64 (sau mai mica AT24C32, sau mai mare AT24C128, AT24C256 etc.)
  • doua rezistoare (eu am ales 4k7, probabil ar fi mers si alte valori apropiate)
  • un breadboard mic
  • cateva fire (“jumper wires”)
  • bineinteles, un Arduino

Arduino AT24C64
Pregatim mai intai alimentarea, conectand un fir rosu la pinul 8 si un fir negru la pinul 4.
AT24C64 I2C
Adaugam rezistoarele de pull-up, de la pinii SDA (5) si SCL (6) la VCC (catre pinul 8).
AT24C64 Arduino
Legam firele pentru bus-ul de comunicatie, verde la SDA si alb la SCL.
AT24C64 ATmega
Legam pinul SDA (firul verde) la pinul SDA de la Arduino (analog 4) si pinul SCL (firul alb) la pinul SCL de la Arduino (analog 5). Am folosit un montaj pe care l-am prezentat pe aici, cu o clona Arduino produsa de DFRobot si un ecran LCD 2×16. Alimentarea memoriei se face de pe breadboard-ul cu LCD-ul.
Arduino I2C
Pentru partea de soft gasiti un exemplu aici. Sau puteti downloada varianta modificata de mine, care scrie un string in memorie si apoi il citeste caracter cu caracter si il afiseaza pe LCD, cu o mica pauza dupa fiecare caracter.
ATmega I2C
Mai jos am pus un clip care arata cum functioneaza programul.




Download: EEPROM LCD Sketch

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>