SPI EEPROM in der Schaltung prg. geht - CS geht nicht low

#7728032
Lesenswert?

Hallo zusammen,

ich versuche gerade eine EEPROM in einer Schaltung zu programmieren, was leider nicht klappt.

Es handelt sich dabei um ein M95640, welches ich über einen CH341 China Programmer umprogrammieren will. Den China Programmer habe ich so modifiziert, dass er mit 3V3 versorgt wird und somit die Logikpegel auch bei 3V3 sind. Als Software verwende ich AsProgrammer. Ist das EEPROM ausgelötet klappt das auslesen auch wunderbar.

Zum eigentlichem Problem: Mit dem Logikanalyzer sieht man sehr schnell, dass der CS (S) Pin nicht auf Low gezogen wird. Daher kann das EEPROM auch nicht ausgelesen werden. Das Signal des CS Pins in der Schaltung kommt über einen SN74LVC139A (Demultiplexer).

Meine Vermutung ist, dass der CH341 es nun nicht schafft diesen auf Low zu ziehen. Würde hier evtl. ein externer Transistor, zur Verstärkung des CS Signals, helfen? Habt ihr eine andere Idee/Vorschlag?

Vielen Dank und viele Grüße Chris

Links Datenblatt:

EEPROM 95640: https://www.st.com/resource/en/datasheet/m95640-w.pdf

SN74LVC139A Demultiplexer: https://www.ti.com/lit/ds/symlink/sn74lvc139a.pdf

EEPROM Programmer: https://de.aliexpress.com/item/32828012179.html

Datenblatt CH341: https://www.anok.ceti.pl/download/ch341ds1.pdf

[Mod: Lebenslauf aus Links entfernt]

Angehängte Dateien:
#7728037
Lesenswert?

Moin,

Christian S. schrieb:

Meine Vermutung ist, dass der CH341 es nun nicht schafft diesen auf Low zu ziehen. Würde hier evtl. ein externer Transistor, zur Verstärkung des CS Signals, helfen? Habt ihr eine andere Idee/Vorschlag?

Das ist sehr gut möglich. Der Plexer kann entspannt 50mA in die Leitung pumpen. Das schafft der CH341 nicht. Mach da keinen Transistor direkt rein, sonst grillst du den Output vom Plexer.

Du könntest versuchen 10kOhm in die CS Leitung zu schleifen und deinen Transistor dann zwischen 10k und EEPROM zu hängen.

Grüße!

Moderator (Firma: Titel) Persönliche Seite #7728040
Lesenswert?

Christian S. schrieb:

Das Signal des CS Pins in der Schaltung kommt über einen SN74LVC139A (Demultiplexer).

Krasse Idee, vorsätzlich eine Buskollision zu verursachen und dann noch zu erwarten, dass das funktioniert. Das ist, wie wenn du bei laufendem Motor einen Kolben wechseln würdest und dich beschwerst, dass der dann ruckelt.

Habt ihr eine andere Idee/Vorschlag?

Die beste Lösung ist, die Leitung(en) des EEPROMs zum Programmieren mit Jumpern aufzutrennen.

Die zweitbeste Lösung ist, die EEPROM-Pins mit Serienwiderständen von anderen Treibern zu entkoppeln.

#7728043
Lesenswert?

Danke für die Rückmeldungen, ein Serienwiderstand hin zu zu fügen ist nicht möglich, da es sich um eine bereitsfertige Platine aus einem Gerät handelt.

Dann werde ich mal nachmessen, wo das Signal des Demultiplexers her kommt, um es auf der Seite ggf. auf Low ziehen zu können.

Wahrscheinlich aber direkt aus dem µC, ebenfalls ohne Serienwiderstand. Das gucke ich mir nun aber genauer an.

Vielen Dank und viele Grüße Chris

Moderator (Firma: Titel) Persönliche Seite #7728044
Lesenswert?

Christian S. schrieb:

wo das Signal des Demultiplexers her kommt, um es auf der Seite ggf. auf Low ziehen zu können.

Auch das wird eine Buskollision ergeben, denn damit "invertierst" du dein Problem einfach nur: wenn du dafür sorgst, dass der DeMUX immer low ausgibt, dann kann dein Programmer das Signal eben nicht mehr nach high ziehen. Und das EEPROM-Protokoll braucht eben beide Pegel auf der CS Leitung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren