Hallo Leute, ich habe ein komisches Problem. Ich nutze das STM32F4 Discovery Board und wollte auf eine µC SD Karte schreiben (mit Adafruit 358 Display. Es wird überall empfohlen die Initialisierung mit weniger als 400kHz zu machen. Mein Clock läuft auf 168Mhz, demnach brauche ich einen Prescaler von 256 für SPI1 um auf unter 400kHz zu kommen. Jetzt habe ich ein ganz komisches Problem: Ich debugge mit dem JLink und sobald ich das erste mal mit diesem Prescaler ein Datum auf den SPI schreibe, schmiert das Ding einfach ab. Und zwar komplett. Geht in den Reset und startet neu... Mit Prescaler 128 passiert das nicht, leider lässt sich damit die Karte nicht initialisieren. Hatte jemand schonmal ein ähnliches Problem oder weiß woher das kommt?
Möglicherweise mag das daran liegen, dass der SPI Prescaler 8 bit hat? Weil 256, das wäre 0x100 und damit 9Bit. Und schreibt man das da rein, hat man den Prescaler 0x00 eingestellt. Das könnte möglicherweise fallweise etwas schnell sein, für die arme SPI. Kuckt man S604 im Reference Manual.
Schau doch mal, welche Reset-Quelle das ist. Ist die Watchdog aktiv? Gruß, Stefan
Aha? schrieb: > Möglicherweise mag das daran liegen, dass der SPI Prescaler 8 bit hat? > > Weil 256, das wäre 0x100 und damit 9Bit. Und schreibt man das da rein, > hat man den Prescaler 0x00 eingestellt. Das könnte möglicherweise > fallweise etwas schnell sein, für die arme SPI. > > Kuckt man S604 im Reference Manual. Sicher nicht. Das RM sagt im Punkt 28.5.1 das der Wert 111b im BR Teil des Control Registers vom SPI einen Prescaler von 256 hat. Stefan K. schrieb: > Schau doch mal, welche Reset-Quelle das ist. Ist die Watchdog aktiv? Was meinst du mit Reset-Quelle? Und nein, Watchdog ist nicht aktiv. Ich seh ja auch auf dem Oszi, dass das eine Byte noch rausgeschrieben wird. Dannach ist das Ding tot.
Such mal im Reference Manual nach: 7.3.22 RCC clock control & status register (RCC_CSR) Zu beachten ist, dass die Flags nur durch einen Power-Reset zurückgesetzt werden. Viele Grüße, Stefan
ui schrieb: > Sicher nicht. Das RM sagt im Punkt 28.5.1 das der Wert 111b im BR Teil > des Control Registers vom SPI einen Prescaler von 256 hat. Stimmt, nach erneutem Lesen des Urprungsbeitrags muss ich zustimmen. Er hat ja (laut eigenem Bekunden) einen Prescaler von 256 gesetzt, und nicht 256 auf das Prescalerregister geschrieben, wie ich zunächst herausgelesen hatte. Danke für die Korrektur, damit ist mein Post natürlich so nicht richtig.
Stefan K. schrieb: > Such mal im Reference Manual nach: > > 7.3.22 RCC clock control & status register (RCC_CSR) > > Zu beachten ist, dass die Flags nur durch einen Power-Reset > zurückgesetzt werden. > > Viele Grüße, Stefan Interessant ist noch folgendes: Stelle ich den APB2 Prescaler auf 4 (also quasi 42 Clock Signal auf den SPI Peripherie-Baustein) und wähle dann einen Prescaler von 256 aus, funktioniert das Ding auch. Ich kanns mir grad nicht so recht erklären -.-
Guten Morgen. Der Takt wird mehrmals geteilt und (durch PLL) wieder vervielfältigt. Besteht die Möglichkeit, daß Deine (logisch korrekte) Auswahl eventuell physikalisch nicht erlaubt ist? Vieleicht findet sich eine alternative Kombination, die das gewünschte Resultat liefert und zulässig ist. Gibt es in "Errata" Hinweise/Eintragungen? Ich drück die Daumen Martin
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.