M24M01 Adressieren

Gast #4479957
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.