ich habe einen MSP430f233 und einen A25L080(Falsh 8mbit spi).
ich versuche den Flash mit der spi Schnittstelle kontaktieren aber der
Flash reagiert nicht.
ich habe an den A25L080 Pins gemessen siehe print_00.png.
D0 pin 1 CS
D1 pin 6 CLK
d2 pin 5 DIO
d3 pin 2 DO
der Befehl wird wie im Datenblatt gefordert gesendet.
der Flash antwortet aber nicht.
ich laufe auf der stelle und komme nicht weiter.
kann mir da eine den entscheidenden Tipp geben.
Theorie: Das Flash kann mit "beytes" nichts anfangen, da kannst du noch
so lange wässern... ;-)
Im Ernst:
Versuche doch mal die Clock nicht gleich auf das maximal zulässige (16
MHz) zu stellen, sondern erstmal z.B. mit 1 MHz anzufangen.
Easylife schrieb:> Versuche doch mal die Clock nicht gleich auf das maximal zulässige (16> MHz) zu stellen, sondern erstmal z.B. mit 1 MHz anzufangen.
der Flash kann laut Datenblatt mit spi 100MHz arbeiten. da sollte er
16MHz doch wohl schaffen oder?
1MHz hat auch nichts gebracht.
Dummschwaetzer schrieb:> Hold-Pin?
der hold PIN unterbricht die Übertragung und setzt sie zu einen späteren
Zeitpunkt an dieser stelle fort. kann man nutzen wenn z.B. der µC von
einem Interrupt bei der Übertragung unterbrochen wird.
ich habe ihn dauerhaft auf VCC geschaltet da ich diese Funktion nicht
brauche.
joachim j. schrieb:> liegt es womöglich an meiner read Funktion?>> ich sende ein dummy beyte damit die CLK weiter macht, den ohne bleibt> die CLK low. ist das richtig?
ja, das ist richtig.
Falsch ist allerdings, wie du das Wort "Byte" schreibst, und das nervt
langsam.
Bitte lerne was!
Die Signale auf deinem Scope legen nahe, dass du das Flash mit 5V
Betreibst.
Im Datenblatt ist das absolute max. aber 4V. Üblicherweise nimmt man
hier 3.3V.
Evtl. hast du dein Flash mit Überspannung kaputt gemacht.
Easylife schrieb:> Die Signale auf deinem Scope legen nahe, dass du das Flash mit 5V> Betreibst.> Im Datenblatt ist das absolute max. aber 4V. Üblicherweise nimmt man> hier 3.3V.> Evtl. hast du dein Flash mit Überspannung kaputt gemacht.
das täuscht ich habe nur die digitalen Eingänge benutzt.
der wert 5V steht für den analogen Kanal 1.
ich hab vergessen ihn auszublenden.
µC und Flash arbeiten mir 3,3V. das habe ich auch nachgemessen!
Also von dem was du ans Flash schickst, sollte es antworten.
Könntest du mal den Schaltplan posten? Evtl. stimmt ja was mit der
Beschaltung nicht.
Ausserdem wäre es gut, du misst die Signale mal analog und postest das
als Screenshot. Evtl. stimmt ja mit den Signalpegeln etwas nicht.
Du könntest auch mal einen 10k pullup an DO legen.
Dann müsste die Leitung ja high sein, solange CS_N high ist.
Wenn dem nicht so ist, treibt dein uC die DO Leitung wohl low.
noch mein Senf bzw Sachen mit denen ich bei SPI immer wieder
rundgelaufen bin:
SPI gibt es in 4 verschiedenen Modi, je nachdem meisten clock und phase
benannt, werden Daten mit Clock steigender oder fallender Flanke
verarbeitet weitergesendet etc...
Nun ist es so dass es dazu keinen Hesrtellerstandart gibt, also ich zB
habe mit MSP430, also Texas Instruments, einen Atmel Flash per SPI
angesprochen, beide benutzen in ihren Datenblättern Bezeichnungen wie
SPI Modus 1...4, ABER bei beiden sind diese Modi nicht gleich sondern
unterschiedlich.
Also bevor man sich dann den Kopf zermatert einfach den externen IC, der
meistens automatisch nur einen SPI Modus benutzt, mit verschiedenen
MSP430 SPI Modi austesten, einer funktioniert dann und den merkt man
sich.
Könnte mir vorstellen dass das auch dein Problem ist, weiss ich
natürlich nicht, aber hoffe es hilft ein bisschen.
da die Signalpegel alle ok aussehen.
schlussfolgere ich, dass der ic Defekt ist.
also werde ich ihn ablöten und austauschen.
aber vorher werde ich noch das mit dem Pullup an DO Pin 2 testen.
ein 10kohm Pullup zwischen DO und VCC hat das Signal an DO auf 2,97v
angehoben.
Der µC treibt DO also nicht auf Low.
ich habe alles andere ausgeschlossen. der Flash muss Kaputt sein.
Die (sauberen) 3V3 liegen aber auch (gemessen) am Flash an...?
Deine Blockkondensatoren sind auf der falschen Seite.
VCC ist Pin 8. "W" brauchste nicht so gut blocken... ;-)
Ja, tausche mal das Flash.
In deinem Layout sind die Leitungen zu Pin 1 (CS) und Pin 2 (DO) des
Flash unzulässig nahe zusammen. Das hätte dir ein Designrulecheck
angekreidet.
Würde mich nicht wundern, wenn hier nach dem Ätzen mal eine kleine
Kupferbrücke bestanden hat, die dann, als das Flash zum ersten mal eine
"1" treiben wollte durchgebrannt ist, incl. des Ausgangstreibers für DO.
Easylife schrieb:> In deinem Layout sind die Leitungen zu Pin 1 (CS) und Pin 2 (DO) des> Flash unzulässig nahe zusammen. Das hätte dir ein Designrulecheck> angekreidet.>> Würde mich nicht wundern, wenn hier nach dem Ätzen mal eine kleine> Kupferbrücke bestanden hat, die dann, als das Flash zum ersten mal eine> "1" treiben wollte durchgebrannt ist, incl. des Ausgangstreibers für DO.
ich löte und ätze nicht selbst. ich bin student und an der Hochschule
haben wir einen Laser der die Platinen fertigt einen Lötofen zum smd
Löten.
in Version 2 der Schaltung habe ich die Abstände aber schon
ausgebessert.