Serial EEPROM

From EWIKI
Jump to navigation Jump to search

Das 24AA64/24LC64 EEPROM (64K) wird vom Mikrocontroller über den I2C Bus angesprochen und spart so einiges an Verkabelung.

EEPROM über I2C Bus an MCU

Beispiel mit dem ATmega32:

I2C-EEPORM.png

Die Pins A1, A2 und A3 definieren die I2C Adresse des ICs am Bus. WP ist der Schreibschutz, wenn auf Vcc gelegt.

Auf dem I2C Bus wird das EEPROM durch Control Byte "geweckt". Dieses besteht aus dem

  • Control Code 1010
  • der Chip Adresse A1/A2/A3
  • dem Read/Write Bit
    • 1 = Read
    • 0 = Write

Byte schreiben

Nach herstellen der Startbedingung wird das Control-Byte gesendet. Dann wird die Adresse als Hi-Byte und Lo-Byte übertragen, gefolgt vom abzuspeichernden Wert und der Stop-Sequenz:

Start Control Byte Adr Hi Adr Lo Data Stop
1 0 1 0 A1 A2 A3 0=W x x x A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 d7 d6 d5 d4 d3 d2 d1 d0
Ack Ack Ack Ack

(x = Ignore Bits)

Page schreiben

Wie Byte schreiben, allerdings werden bis zu 31 Bytes getrennt durch Ack gesendet, danach erst Ack+Stop.

Aktuelle Adresse lesen

Start Control Byte Data Stop
1 0 1 0 A1 A2 A3 1=R d7 d6 d5 d4 d3 d2 d1 d0
Ack NoAck

Nach dem Lesen wird der Adresse-Zeiger hochgezählt.

Ziel-Adresse lesen

Ablauf:

  • Wie Schreiben:
    • Start
    • Control Byte (w)
    • Adress Bytes
  • dann aber Schreiben abbrechen durch
    • Start
    • dann weiter wie bei "aktuelle Adresse lesen"

Sequentiell lesen

Wie Byte aus Zieladresse lesen, allerdings werden so lange Bytes gelesen, bis ein NoAck gesendet wird.