M24M01 Adressieren

Gast #4479957
Lesenswert?
• ▲
▼
Hallo,

ich arbeite zum erstem Mal mit einem 1Mbit Eeprom und bin ehrlich gesagt 
gerade etwas verwirrt.

Wie kann ich die Daten im zweitem Bereich des EEproms lesen bzw. 
schreiben?

Wenn ich das richtig verstehe muss dem eigentlichen Sendungspaket das 
Device Select vorran gestellt werden. Erst dann darf R/W aktiviert 
werden, oder? Mit dem Adressbit A16 im Device Select Adressiere ich dann 
ob ich im oberen oder unteren Bereich schreibe, oder?

Also muss die Reihenfolge dann:
Stadt anfordern
Device Select schreiben
R/W Schreiben
Adresse
Daten

sein?

Grüße

Jens
#4479980
Lesenswert?
• ▲
▼
Eigentlich nichts besonderes.

Schreiben: A16 ist im Device-select enthalten, wie du richtig erkannt 
hast.
Für den Master stellet sich das dar wie 2 getrennte ICs am Bus, der eine 
hat die I2C-Adresse A0, der andere A2 (wenn beide Hardware-Adresspins 
auf Masse liegen).
Ansonsten ist das wie bei kleineren Eeproms.
Gast #4479989
Lesenswert?
• ▲
▼
Hallo Joachim,

danke für die Antwort,

Hallo Pete,

ich habe das Datenblatt gelesen - und an manchen Stellen nicht 
verstanden - bzw. ich bin da gerade nicht sicher ob ich es richtig 
verstanden habe. Sowohl von ON als auch von ST. Deswegen frage ich doch.

Hallo alle Anderen:

Gut - ich schicke also das Device Select vorran. Muss ich das beim 
Senden irgendwie besonders Adresserieren?

Grüße

Jens
#4480005
Lesenswert?
• ▲
▼
Schreiben, hier solltest du sinnvollerweise noch einen Parameter für 
obere oder untere Hälfte mitgeben oder direkt die Byteadresse als long 
übergeben und daraus die Device-Adresse ermitteln:

void write_uchar_eeprom (unsigned int byte_adress, unsigned char data)
{i2c_start();
i2c_write (0xA0);   //für obere Hälfte 0xA2
i2c_write (byte_adress/256);
i2c_write (byte_adress%256);
i2c_write (data);
i2c_stop();
}

Und beim Lesen analog:
unsigned char read_uchar_eeprom (unsigned int byte_adress)
{i2c_start();
i2c_write (0xA0);
i2c_write (byte_adress/256);
i2c_write (byte_adress%256);
i2c_start();
i2c_write (0xA0|1);     //read byte
return i2c_read(NO_ACK);
}
Gast #4480024
Lesenswert?
• ▲
▼
Hallo Joachim,

danke :) Das hilft mir jetzt sehr. So hab ich mir das fast auch schon 
gedacht.

Noch eine Frage zum Abschluss - muss nicht passend das R/W bit mit 
gesetzt werden?

Grüße

Jens

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.