AnsweredAssumed Answered

SPI bugs in F446/429?

Question asked by Mikas Longbardi on Aug 21, 2017
Latest reply on Aug 28, 2017 by Clive One

Surely this issue has been beaten to death already?

 

SPI3:
Are there any known "end of byte/word transmit" function (soft/hardware)

working on SPI3 in master mode? Actually in "any" mode,  im just doing

simple plain periodic (plenty of dead time in between transmits, not

constant that would hold BSY low) transmit with no interference (i hope)

of  NSS/SSI crap, only GPIO pin as strobe for external shift register.

 

I cant detect any SPI BSY being set during transmission as it should be!

Is there any specific setup flow and init of SPI logic needed?

 

SPI3->DR = ledbuff;                                  //Write SPI transmit reg 
while((SPI3->SR & SPI_SR_TXE) == 0)  //Test until TXE flag is 1
{}
while((SPI3->SR & SPI_SR_BSY) == 1)  //Test until Busy flag is 0

{}


According to errata for rev A of F446 and rev11 for F429 there are complex
bugs in SPI module and equal complex suggestions for workarounds that
apparently dont work ,BSY mentioned.

 

Is there a workaround that one could use RXNE (MISO-MOSI loopback)

or something else as a detector?

 

Contemplating use USART instead since it works out of the box by detecting
TC flag unfortunately USART's in synchronous mode is much slower then SPI.

Outcomes