Forum: Mikrocontroller und Digitale Elektronik LC320 macht nichts!


von Johnny K. (johnny_knoxville)


Angehängte Dateien:

Lesenswert?

Hallo Leute.
Ich steuere gerade das LC320 EEPROM von Microchip an, jedoch macht das 
Ding nichts...
Beschalten ist es laut Anhang.

Rausschreiben tu ich zuerst die Write Enable Sequence (Siehe Datanblatt 
Seite 9), danach die Daten mit Byte Write Sequence mit dem Bytewerten 2 
- Adresse HB - Adresse LB - Daten.
Danach möchte ich sie auslesen und schreibe die Read Sequence raus mit 
den Bytewerten 3 - Adresse HB - Adresse LB - 8 Bit Don't Care.

Versorgungs mit +5V

Aber rauskommen tut da nichts...

Hmm...

C-Code poste ich auf Anfrage...

von Arne (Gast)


Lesenswert?

Zwischen WREN und WRITE muss das /CS kurz high und dann wieder low sein 
(lt. Datenblatt IIRC mind. 100ns).
Hast Du das drin? Kommandos werden nämlich mit der steigenden Flanke von 
/CS übernommen und vom EEPROM ausgewertet.

von Arne (Gast)


Lesenswert?

*Warum ist SO nicht angeschlossen?* Wenn das Datenblatt nichts 
Gegenteiliges behauptet, würde ich auch /HOLD über einen pull-up gegen 
High ziehen.

von Johnny K. (johnny_knoxville)


Lesenswert?

Arne schrieb:
> Zwischen WREN und WRITE muss das /CS kurz high und dann wieder low sein
> (lt. Datenblatt IIRC mind. 100ns).
> Hast Du das drin? Kommandos werden nämlich mit der steigenden Flanke von
> /CS übernommen und vom EEPROM ausgewertet.

Hab ich auf jeden Fall drinn, weil ich das über die Software steuere und 
dabei sogar 3000ms vergehen (dient jetzt zu Testzwecken), danach kann es 
ruhig auch viel mehr als 100ns dauern.
hmm...

von Johnny K. (johnny_knoxville)


Lesenswert?

Arne schrieb:
> *Warum ist SO nicht angeschlossen?* Wenn das Datenblatt nichts
> Gegenteiliges behauptet, würde ich auch /HOLD über einen pull-up gegen
> High ziehen.

SO ist zur Auswertung auf einem Logikanalysator angeschlossen, sorry für 
den nicht vollkommenen Plan. Ja, Hold auf high zu ziehen war von mir 
auch schon eine Idee, auch WP könnte ich mal probieren, aber WP sollte 
laut Datenblatt zur Programmierung egal sein, solange man nicht das 
Statusregister einstellen möchte.

von Arne (Gast)


Lesenswert?

Mein Aufbau mit dem 25LC640 sieht so aus:
- /CS an Portpin
- MISO an µC SPI (10k PullUp)
- /WP mit 1k gegen High
- /HOLD mit 1k gegen High
- SCK an SPI (kein PullUp / PullDown)
- MOSI an SPI (kein PullUp / PullDown)

Und damit funktioniert es.

Taktest Du das EEPROM zu schnell?

von Johnny K. (johnny_knoxville)


Lesenswert?

Arne schrieb:
> Mein Aufbau mit dem 25LC640 sieht so aus:
> - /CS an Portpin
> - MISO an µC SPI (10k PullUp)
> - /WP mit 1k gegen High
> - /HOLD mit 1k gegen High
> - SCK an SPI (kein PullUp / PullDown)
> - MOSI an SPI (kein PullUp / PullDown)
>
> Und damit funktioniert es.
>
> Taktest Du das EEPROM zu schnell?

Nein, zu schnell bin ich nicht, habe ich ausgemessen, mach mir eher 
Sorgen, ob das Timing passt, soll ich es mal posten?

von Arne (Gast)


Lesenswert?

Ich hab mit einem Atmel EEPROM (25020 = 256Byte) die Entwicklung 
begonnen. Nachdem die HW-Entwicklung nun sich auf einen 25LC320/640 
festgelegt hat, habe ich den 25020 runtergelötet und den 25LC640 
draufgelötet. Hab die zu übertragende Adresse von 8bit auf 16bit 
angepasst und es lief auf Anhieb mit dem 25020 Code. So gesehen weiß ich 
nicht, wie das Timing beim LC320/640 aussehen sollte. Aber das 
Datenblatt weiß es doch genau?

von Johnny K. (johnny_knoxville)


Lesenswert?

Arne schrieb:
> Ich hab mit einem Atmel EEPROM (25020 = 256Byte) die Entwicklung
> begonnen. Nachdem die HW-Entwicklung nun sich auf einen 25LC320/640
> festgelegt hat, habe ich den 25020 runtergelötet und den 25LC640
> draufgelötet. Hab die zu übertragende Adresse von 8bit auf 16bit
> angepasst und es lief auf Anhieb mit dem 25020 Code. So gesehen weiß ich
> nicht, wie das Timing beim LC320/640 aussehen sollte. Aber das
> Datenblatt weiß es doch genau?

Ja da hast du Recht, aber da ich nicht sooo viel Erfahrung mit SPI habe, 
würde ein Rückhalt schon eine kleine Bestätigung bringen...

Eine Frage...
Beim Timing des 640...
Wenn du /Hold auf high setzt, dann hat er ja ein low und die Bits sind 
ja dann Don't Care, oder etwa nicht? ...hm..

von Johnny K. (johnny_knoxville)


Lesenswert?

> Eine Frage...
> Beim Timing des 640...
> Wenn du /Hold auf high setzt, dann hat er ja ein low und die Bits sind
> ja dann Don't Care, oder etwa nicht? ...hm..

PS:Timing ist gleich wie beim 640

von Arne (Gast)


Lesenswert?

Ja, dann knall mal Screenshots vom Oszi/LA rein. Schau sie mir morgen 
früh mal an - jetzt erstmal feierabend :)

von Johnny K. (johnny_knoxville)


Angehängte Dateien:

Lesenswert?

Arne schrieb:
> Ja, dann knall mal Screenshots vom Oszi/LA rein. Schau sie mir morgen
> früh mal an - jetzt erstmal feierabend :)

Okay, danke...
Hab das mal hier reingeknallt jetzt, wie das Timing vom µC gesendet 
wird, und beim LC ankommt...

Nach dem letzten Takt wird, nachdem CS auf high hüpft, noch ein Takt von 
mir generiert (steht, so meine ich, so im Datenblatt drinn...siehe Seite 
4 "Serial Input Timing"...
Danke :-)

von Arne (Gast)


Lesenswert?

Johnny Knot schrieb:
> Nach dem letzten Takt wird, nachdem CS auf high hüpft, noch ein Takt von
> mir generiert (steht, so meine ich, so im Datenblatt drinn...siehe Seite
> 4 "Serial Input Timing"...

Ich bin mir recht sicher, daß ich das nicht mache, da ich die SCK 
Generierung der HW-SPI überlasse. Du ziehst das /CS zwar vor dem 9ten 
Clock (steigende Flanke) wieder gegen High, aber es irritiert mich 
trotzdem... Falls das nicht exakt so passiert und die interne 
state-machine den 9ten Clock noch zum Abtasten nutzen würde, würde im 
Schieberegister des EEPROMs wohl statt z.B. 0x06 dann (0x06 << 1) = 0xC0 
stehen.
Abgesehen davon: Fig 2.4 (Timing WREN) hat kein 9tes Clocksignal.

Sonst weiß ich auch nicht, woran es noch liegen könnte :-/

von Johnny Knot (Gast)


Lesenswert?

Okay, danke! :-)

Die Flanke werde ich ausprogrammieren, ansonsten passt das Timing? Ich 
hoffe, hehe. Von Bedeutung ist ja beim Clock ja nur die steigende, nicht 
aber die fallende Flanke, oder lieg ich da falsch?

Liebe Grüße

von Arne (Gast)


Lesenswert?

Ja, die steigende Flanke ist diejenige, bei der die Daten übernommen 
werden. Sind ja keine DDR-EEPROMs ;)

von Arne (Gast)


Lesenswert?

Hab mir in der Mittagspause nochmal die Screenshots angeschaut. Bei 
READ/WRITE kann man nicht erkennen, ob die Bitmuster korrekt sind. WREN 
sieht gut aus.
Vergrößere READ/WRITE doch mal auch auf 20µs Raster und schau Dir die SI 
Pegel bei den steigenden Clockflanken an und lass mal das letzte 
Clockbit weg.
Pack doch mal 10k gegen High an SDO des EEPROMs. So habe ich das hier 
ohne groß nachzudenken bei meinem Aufbau auch gemacht.

von Johnny K. (johnny_knoxville)


Lesenswert?

Arne schrieb:
> Hab mir in der Mittagspause nochmal die Screenshots angeschaut. Bei
> READ/WRITE kann man nicht erkennen, ob die Bitmuster korrekt sind. WREN
> sieht gut aus.
> Vergrößere READ/WRITE doch mal auch auf 20µs Raster und schau Dir die SI
> Pegel bei den steigenden Clockflanken an und lass mal das letzte
> Clockbit weg.
> Pack doch mal 10k gegen High an SDO des EEPROMs. So habe ich das hier
> ohne groß nachzudenken bei meinem Aufbau auch gemacht.

Cool, danke.

Also, zzt. ist es mir nicht möglich, dass ich das Timing poste, da ich 
jetzt nicht zum Gerät komme. Aber meiner Meinung nach müsste Read und 
Write passen, werde aber die Timings MORGEN oder allerspätestens 
übermorgen posten. Heute kann ich leider nicht.

Das letzte Clockbit ist schon Geschichte...

Nen 10k Pull-Up hab ich jetz gerade früher an den SDO des E²PROMS 
gepackt!

Liebe Grüße

von Johnny Knot (johnny_knoxville) (Gast)


Lesenswert?

...Screenshots kommen FIX morgen gegen 13-14 Uhr!! Sorry!
Liebe Grüße

von Johnny K. (johnny_knoxville)


Angehängte Dateien:

Lesenswert?

Johnny Knot (johnny_knoxville) schrieb:
> ...Screenshots kommen FIX morgen gegen 13-14 Uhr!! Sorry!
> Liebe Grüße

Ist doch 14.05 Uhr geworden, hehe

Timings sind jetzt so gezoomt, dass man jedes Byte einzeln erkennen 
kann...

Schreib den Wert 6dez raus...

von Johnny K. (johnny_knoxville)


Lesenswert?

Johnny Knot schrieb:
> Johnny Knot (johnny_knoxville) schrieb:
>> ...Screenshots kommen FIX morgen gegen 13-14 Uhr!! Sorry!
>> Liebe Grüße
>
> Ist doch 14.05 Uhr geworden, hehe
>
> Timings sind jetzt so gezoomt, dass man jedes Byte einzeln erkennen
> kann...
>
> Schreib den Wert 6dez raus...

Achja...dann wars wohl vllt doch der SO...

Jetzt macht er jedenfalls was ich möchte :-)

Danke!

Für Fragen bezüglich des LC320 stehe ich jetzt zur Verfügung xD

von Arne (Gast)


Lesenswert?

Mein praktikant braucht unser 4ch. Oszi, daher konnte ich gestern nix 
machen. Woran lag es jetzt genau?

von Johnny Knot (Gast)


Lesenswert?

Hallo!
wenn ich mich nicht täusche, dann wars der Pull-Up auf SO!
Undefinierte Pegel mag der Baustein anscheinend nicht... :-)....obwohls 
natürlich auch das letzte Bit sein könnte, da ich die beiden Dinge 
aufeinmal ausgebessert habe, und so nicht genau sagen kann, was schuld 
ist :-) lg

von Arne (Gast)


Lesenswert?

Sowas in der Art hatte ich gestern auch: 7406 (inverter) hat 
Ausgangssignal nicht gegen High gezogen. 12k PullUp dran und es lief.
Ich dachte, der hätte genug "Bums".

Aber gut, dass es bei Dir jetzt auch läuft :)

von Johnny Knot (Gast)


Lesenswert?

Na wunderbar, jeder ist jetzt glücklich, hehe

Liebe Grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.