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