SPI auf STM32f1: BSY-Bit wird nicht gelöscht

Gast #5320585
Lesenswert?
• ▲
▼
Hallo,

ich versuche gerade, einen der SPI auf einem STM32F103RB 
(Nucleo-Evalboard) in Betrieb zu kriegen.

Dabei bleibe ich in folgender Warteschleife stecken
1
while ( !(SPI1->SR & SPI_SR_TXE) || (SPI1->SR & SPI_SR_BSY) );
Eigentlich wollte ich damit warten, bis der SPI mit der letzten 
Übertragung fertig ist, d.h. bis das letzte Byte vom DR ins 
Schieberegister geladen wurde (TXE) und ganz herausgeschoben wurde 
(BSY). Das entspricht also dem Verfahren, das auch im erbärmlichen 
Datenblatt auf Seite 718 beschrieben ist.

Im Bebugger (openocd und Eclipse) sehe ich folgenden Zustand des SPI:
- es ist Master (MSTR = 1)
- es darf auch Master sein (SSM = 1 und SSI = 1)
- es ist eingeschaltet (SPE = 1)
- keine DMA aktiv

Außerdem:
- nichts zu übertragen (TXE = 1)
- nichts zu empfangen (RXNE = 0)

Aber:
- BSY = 1.

Was soll ich jetzt davon halten?!

Für Anregungen bin ich dankbar.

Grüße,
N
Beitrag #5320591 wurde von einem Moderator gelöscht.
Gast #5320601
Lesenswert?
• ▲
▼
Es ist "alles richtig eingestellt", denn wenn ich Zeile für Zeile 
durchsteppe, läuft alles korrekt.

Damit hat sich das Problem aber auch gerade herausgestellt.
Ich habe bei der Initialisierung den Vorteiler des SPI umgeschaltet, und 
zwar erst SPI deaktivieren, Teiler einstellen und SPI wieder aktivieren.

Wenn dabei noch was im Schieberegister war, wird das BSY-Bit natürlich 
nicht gelöscht, weil ich der SPI ja quasi vorher die Schuhe ausgezogen 
habe.
Deaktivieren der SPI löscht das BSY-Bit nicht. Man muss also entweder 
ein Byte senden oder vorher warten.

Erkenntnis hieraus: Die SPI bricht eine Übertragung offenbar tatsächlich 
mittendrin ab, wenn man sie deaktiviert.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.