PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit seriellem EEPROM



Skilltronic
23.03.2012, 12:19
Hallo

Ich habe ein Programm in FreeBasic geschrieben, mit dem man über die serielle Schnittstelle des PCs serielle EEPROMS vom Typ 24... auslesen und beschreiben können soll. Die Statusleitungen des COM-Ports werden dazu mit ein paar Widerständen und Z-Dioden zu einem I²C-Bus umfunktioniert.

Das Programm soll für alle Typen funktionieren, die Speicher- und Pagewrite-Buffer-Größe des jeweils verwendeten EEPROMs werden beim Programmstart abgefragt und müssen vom Benutzer angegeben werden. Die Adresspins A0-A2, die man von außen beschalten kann, liegen der Einfachheit halber immer auf Masse.

Ich habe zum testen EEPROMs vom Typ 24C02, 24C64 und 24C512. Mit dem 24C02 und dem 24C512 funktioniert das Ganze auch wunderbar, nur mit dem 24C64 nicht. Ich stehe echt vor einem Rätsel. Es läuft auch alles, wenn ich den 512er einstecke, aber die Werte für den 64er, also 64 kbit Speichergröße und 16 bzw. 32 Byte Pagewrite-Buffer eingebe. Dann werden die oberen 8kb von dessen Speicher einwandfrei beschrieben und ausgelesen. Eigentlich kann es also nicht am Programm liegen. An der Hardware aber auch nicht, ich habe es mit zwei verschiedenen, nagelneuen 24C64 probiert, die ich praktisch aus dem leitfähigen Schaumstoff, in dem ich sie bekam, direkt in die Schaltung umgesteckt habe. Aber nix. Der 24C64 reagiert nicht. Als ob gar kein EEPROM angeschlossen wäre.

Ich will euch gar nicht mit dem Programm oder dem Schaltplan langweilen. Meine Frage ist erstmal nur, ob es irgendeinen Unterschied gibt, der mir bisher entgangen ist. Ich bin auch in den Datenblättern noch auf keinen möglichen Grund dafür gestoßen, dass es mit dem kleinen und dem großen EEPROM geht, aber mit dem mittleren nicht.


Gruß
Skilltronic

Searcher
23.03.2012, 12:31
Ich bin auch in den Datenblättern noch auf keinen möglichen Grund dafür gestoßen, dass es mit dem kleinen und dem großen EEPROM geht, aber mit dem mittleren nicht.

Hallo,
verschiedene Hersteller belegen die Pins 1, 2, 3, anders. Von welchem Hersteller ist Dein 24C64?

Gruß
Searcher

PS Von welchen Herstellern sind die anderen Chips?

Skilltronic
23.03.2012, 12:52
Oh, der 24C64 ist von ST Microelectronics, die anderen beiden von Atmel. Darauf hatte ich bisher nicht geachtet. Scheint eine heiße Spur zu sein, dafür schon mal vielen Dank!

Aber was genau meinst du mit "belegen die Pins anders"? Invertiert oder so? Im Datenblatt von ST finde ich keinen Hinweis darauf.


Gruß
Skilltronic

PS: hat das etwas damit zu tun, dass manchmal von den Pins A0-A2 und manchmal von E0-E2 die Rede ist?

Searcher
23.03.2012, 13:04
Aber was genau meinst du mit "belegen die Pins anders"? Invertiert oder so? Im Datenblatt von ST finde ich keinen Hinweis darauf.

Ich hatte nur allgemein geantwortet. Beim 24C16 wenn ich mich recht entsinne, wurden bei ST die Pins für Schreibschutz verwendet.


PS: hat das etwas damit zu tun, dass manchmal von den Pins A0-A2 und manchmal von E0-E2 die Rede ist?

Da scheint der Unterschiede nicht zu liegen. Auf die Schnelle nachgeschaut ist die Funktion gleich unabhängig von den Namen :confused:

Bleibt also weitersuchen. Wie sieht denn Dein Schreibmodus aus? Lesemodus? Byteweise oder Blockweise? gibt es da Unterschiede bei den Chips?

Gruß
Searcher

Skilltronic
23.03.2012, 13:18
Ich schreibe mit Page Write und anschließendem Acknowledge Polling, gelesen wird der gesamte EEPROM-Inhalt am Stück mit Random Address Read, beides beginnend bei Adresse 0. Der einzige Unterschied, den ich bisher finden konnte ist der, dass unterschiedliche Typen mit gleicher Speichergröße verschieden große Pagewrite-Buffer besitzen. Das habe ich aber schon berücksichtigt.


Gruß
Skilltronic

Thomas E.
23.03.2012, 15:30
Hallo!


Wie sieht es denn mit Entstörkondensatoren aus? Vielleicht schafft ein 100nF-Kerko so nah wie möglich zwischen Vcc und GND Abhilfe?

Searcher
23.03.2012, 18:52
Die Statusleitungen des COM-Ports werden dazu mit ein paar Widerständen und Z-Dioden zu einem I²C-Bus umfunktioniert.
... oder der ST Chip reagiert etwas anders als die Atmel Chips auf die "COM-Port to I2C Schaltung" :confused:

Gruß
Searcher