- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: Gibt es günstigen 32k i2c eeprom oder ram?

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    21.09.2004
    Ort
    Augsburg
    Beiträge
    49
    Anzeige

    Powerstation Test
    wo bekommt man denn ein 24c512 oder 24c1024 günstig? Besonders interessant wäre der 24c1024.
    gruß werner...

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2004
    Beiträge
    21
    nimm doch 4x 24c256, bzw. du kannst bis zu 8 der Chips parallel am I2C schalten. Man muß nur höllisch aufpassen das man I2C EEPROMs erwischt die auch wirklich die 3 Addresspins auswerten. Es gibt Chips die diese Einstellungen vollkommen ignorieren.

    Gruß Hagen

  3. #13
    Gast
    ja genau oder du nimmst einfach 8 x 24c128 oder 16 x 24 c 64

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2004
    Beiträge
    21
    16x wird nicht gehen. Die I2C EEPROMs haben nur 3 externe Address-PINs, ergo. max. 8 Stück am gleichen I2C Bus geht.

    Gruß Hagen

  5. #15
    Gast
    Hallo..
    ich habe mir eigene 24c64 eeproms zugelegt. Ich bin verzweifelt auf der Suche nach einer Antwort zu folgender Frage:
    Welchen Wert müssen die beiden Adressbytes (bit 15..8 und bit 7...0) haben? Ich weiss nur das bit 15...13 uninteressant sind.
    Wäre jemand so nett, und kann mir da weiterhelfen !!!
    Gruss Uwe

  6. #16
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2004
    Beiträge
    21
    Ähm? sie enthalten die Speicheradresse ab der die nachfolgenden Bytes gelesen oder gespeichert werden sollen. Sogesehen müssen sie den Wert der Addresse annehmen die DU lesen oder schreiben willst.

    Wichtig ist nur das du das Pageboundary beachtest. Das ist meisten 32 Bytes, d.h. schreibst du zb. ab Addresse 2 so kannst du nur 30 Bytes in einem Rutsch lesen oder schreiben, da nach diesen 30 Bytes der interne Addresszähler von 31 wieder auf 0 geht. Würdest du ab Address 2 zb. 32 Bytes schreiben dann würden die Bytes 30 und 31 eben an Addresse 0 und 1 gespeichert, wegen dem Überlauf des Pageboundary.

    Du solltest auch mal angeben welchen 24c64 du genau hast, den Hersteller und Link zum Datenblatt. Desweiteren ob du den Rest des I2C Protokolls richtig umgesetzt hast, bzw. ob der Rest auch schon getestet funktioniert.
    Es könnte nämlich sein das du die falsche Slaveaddresse sendest und deshalb der EEPROM nicht reagiert. Leider geht dies aus deinem Posting nicht hervor.

    Sollen mehrere solcher EERPOMs kaskadiert wie ein einziger großer EEPROM angesprochen werden so nimmt man zb. eine 16Bit Addressangabe. Im I2C Protokoll extrahiert man nun 3 Bits -> Bits 13 bis 15 und benutzt diese als A0-A2 in der Slaveaddresse. Natürlich müssen die EERPOMs auch ihre Pins A0-A2 entsprechend verbunden haben. In der verbleibenden 16Bit Addresse werden nun Bits 13-15 gelöscht und im weiteren Protokollverlauf gesendet.

    Nochmal genauer: Dein 24c64 hat 8Kb = 8192 Bytes = 0x2000 Bytes. Die Addresse kann von 0x0000 bis 0x1FFF gehen und benötigt somit maximal eine 13 Bit Addresse. Du kannst im Addressfeld des I2C Protokolls nun jede beliebige Speicheraddresse zum lesen oder schreiben angeben, und must also den EEPROM nicht Blockweise auslesen um an 1 Byte ranzukommen. Du must nur darauf achten das durch das 32 Bytes Pageboundary du maximal 32 Bytes in einem Rutsch lesen oder schreiben kannst, und das dann auch nur ab einer Addresse die durch 32 ohne Rest teilbar ist -> Address & 0x1F == 0. Willst du also mehr als 32 Bytes lesen oder schreiben oder willst du über diese Grenzen hinweg lesen oder schreiben so muss deine I2C Routine dies explizit berücksichtigen und die Speicherzugriffe zerstückeln.

    Du könntest natürlich auch vor jedem einzelnen Byte ein Device-Select durchführen und zu diesem Byte die benötigte Addresse senden. Aber dies wäre ziemlich ineffizient. Deshalb haben die EEPROMs internen einen 32 Bytes große Buffer und einen eigenen Addresszähler der von 0 bis 31 gehen kann. Man muß also im besten Falle für 32 Bytes am Stück nur einmal einen Deviceselect durchführen. Dieser Modus steht unter dem Stichwort "Page Write" und "Page Read" in den Datenblättern.

    Gruß Hagen

  7. #17
    Gast
    Hallo..
    erst mal ein riesiges Dank für so viele Info's.
    So - 1.) ich habe den AT24C64 von ATMEL.
    2.) Meine Bus-Verbindung läuft mit dem PCF8584 als Controller (über den Druckerport), dem PCF 8574 und dem PCF 8591 erfolgreich. Den Eeprom habe ich noch nicht getestet, da ich wie gesagt keine Ahnung hatte, wie die Speicheradresse auszusehen hat.
    Wenn ich das also richtig verstanden habe, kann ich jeden Schreibvorgang (ein oder mehrere Bytes) mit einer beliebigen Speicheradresse versehen?
    z.B. 00000000 00000001 dann 00000000 00000010 u.s.w.
    Und dann ist noch ein Problem aufgetaucht. Wenn ich ein "SequentialCurrentRead" mache, muss ich keine Speicheradresse senden. Bedeutet das, ich kann den kompletten Speicherinhalt in eiem Stück auslesen?

    Gruss Uwe

  8. #18
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2004
    Beiträge
    21
    Beim Schreiben kannst du maximal nur 32 Bytes auf einmal senden, danach musst du erstmal par Millisekunden warten bis der EEPROM wieder bereit ist. Dann führst du erneut einen Device Select durch und sendest die Addresse für die nächsten Bytes. Wichtig ist nur das du das Pageboundary beachtest.
    Beim lesen gibt es 3 verschiedene Modis wobei aber nur einer davon wirklich interessant ist. Du führst einen Device Select aus und sendest die Addresse die du lesen willst. Nun kannst du soviele Bytes lesen wie du willst und beim Lesen des letzten Bytes musst statt einem ACK ein STOP senden. Das ist wichtig damit der EEPROM in den Power Save Mode schaltet. Den Current-Address-Read Mode kannste getrost vergessen der funktioniert meistens eh nicht.

    Gruß Hagen

  9. #19
    Gast
    Hallo Hagen..
    Danke erst mal - ich denke jetzt habe ich eine Weile zu tun, dass alles zu programmieren und zu testen. Aber eine Frage habe ich da noch: Gibt es eine Möglichkeit den Eeprom komplett zu löschen oder geht das nur durch überschreiben?
    Gruss Uwe

  10. #20
    Neuer Benutzer Öfters hier
    Registriert seit
    16.11.2004
    Beiträge
    21
    Puh, schau ma'mal hier rein http://www.atmel.com/dyn/resources/p...ts/doc0336.pdf und finden keinen Erase Befehl. Es geht also bei deinem Chip nicht. Aber warum auch ? du kannst ja einen eigenen Erasecode programmieren indem du einfach immer 0xFF schreibst. Ich wüsste nicht das ich einen I2C EEPROM mal hatte der einen separaten Erase Befehl kannte.
    Ich kenne nur die alten EEPROMs mit parallem Interface die Pageorientiert arbeiteten. Bei denen MUSSTE man sogar vorher die komplette Page löschen um nur 1 Byte neu schreiben zu können. Sogesehen, kannste mit den neueren I2C EEPROMs sogar froh sein das du nicht löschen musst

    Gruß Hagen

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests