STM32F4XX SPI Slave

OP #5949484
Guten Abend,

ich versuche gerade, an einem STM32F446 einen SPI-Slave ans Laufen zu 
bekommen. Am Pin PB13 liegt ein Rechtecksignal an, aber die ISR wird nie 
gestartet.

Im Anhang befindet sich der derzeitige Stand meiner Bemühungen. Was mir 
auffällt, dass ich die Definition von SPI_Direction_1Line_Rx (in 
stm32f4xx_spi.h in Zeile 141 definiert) nicht mit dem Angaben im 
Reference Manual RM0390 (S.850f.) in Einklang bringen kann, wonach nach 
meinem Verständnis SPIx->CR1.RXonly = 1 gesetzt werden müßte. 
Stattdessen wird BIDIMODE gesetzt, was nach meinem Verständnis 
irrelevant sein dürfte.

Setze ich     SPI_InitStructure.SPI_Direction = 0x0400;, wird die ISR 
auch nicht aufgerufen, sprich: Das allein kann es auch nicht sein.

Sprich: Ich bin gerade verwirrt. Wer kann mir auf die Sprünge helfen?
Angehängte Dateien:
OP #5949508
Was ich gefunden habe: Solange ein Takt an SPI2 anliegt, wird ständig 
das "Overrun"-Flag gesetzt. Der SPI reagiert also schon einmal auf Takte 
von außen.

Allerdings scheint er lieber überzulaufen, als die ISR aufzurufen, in 
der DR ausgelesen wird.
Gast #5949539
Walter T. schrieb:
> Nachtrag: Der IRQ-Handler heißt void SPI2_IRQHandler(), nicht
> SPIx_IRQHANDLER()

Demnach hättest du ja mit dem fehlerhaften Code in einen
Error Handler wegen Nichtüberschreibens des erforderlichen
richtigen Handlers laufen müssen.

Davon hast du aber nicht berichtet.
OP #5949548
In der startup_stm32F4xx_md.S eine längliche Konstruktion, die 
Default-Handler bereitstellt:

/*    Macro to define default handlers. Default handler
 *    will be weak symbol and just dead loops. They can be
 *    overwritten by other handlers */
Gast #5949617
Walter T. schrieb:
> eine längliche Konstruktion, die
> Default-Handler bereitstellt:

... und darin hättest du mit deinem Programm festhängen müssen.

Du brauchst mir nicht erklären wo die IRQ-Handler stehen.
Aber offensichtlich hast du es nicht kapiert was ich meine.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.