Skip to content
Snippets Groups Projects
Commit 538bd52e authored by Emilio Corigliano's avatar Emilio Corigliano
Browse files

[SPI] Fixed transmission at low baudrates for the f7 spi busses on APB1

parent bb19aecc
Branches tfmicro-dev
No related tags found
No related merge requests found
Pipeline #5725 passed
......@@ -505,6 +505,12 @@ inline void SPIBus::read16(uint16_t* data, size_t nBytes)
// Write the data item to transmit
spi->DR = 0;
// Make sure transmission is complete
while ((spi->SR & SPI_SR_TXE) == 0)
;
while ((spi->SR & SPI_SR_BSY) > 0)
;
// Wait until data is received
while ((spi->SR & SPI_SR_RXNE) == 0)
;
......@@ -548,6 +554,12 @@ inline void SPIBus::write16(const uint16_t* data, size_t nBytes)
// Write the data item to transmit
spi->DR = static_cast<uint16_t>(data[i]);
// Make sure transmission is complete
while ((spi->SR & SPI_SR_TXE) == 0)
;
while ((spi->SR & SPI_SR_BSY) > 0)
;
// Wait until data is received
while ((spi->SR & SPI_SR_RXNE) == 0)
;
......@@ -572,6 +584,12 @@ inline uint8_t SPIBus::transfer(uint8_t data)
// Write the data item to transmit
*(volatile uint8_t*)&spi->DR = static_cast<uint8_t>(data);
// Make sure transmission is complete
while ((spi->SR & SPI_SR_TXE) == 0)
;
while ((spi->SR & SPI_SR_BSY) > 0)
;
// Wait until data is received
while ((spi->SR & SPI_SR_RXNE) == 0)
;
......@@ -595,6 +613,12 @@ inline uint16_t SPIBus::transfer16(uint16_t data)
// Write the data item to transmit
spi->DR = static_cast<uint16_t>(data);
// Make sure transmission is complete
while ((spi->SR & SPI_SR_TXE) == 0)
;
while ((spi->SR & SPI_SR_BSY) > 0)
;
// Wait until data is received
while ((spi->SR & SPI_SR_RXNE) == 0)
;
......@@ -647,6 +671,12 @@ inline void SPIBus::transfer16(uint16_t* data, size_t nBytes)
// Write the data item to transmit
spi->DR = static_cast<uint16_t>(data[i]);
// Make sure transmission is complete
while ((spi->SR & SPI_SR_TXE) == 0)
;
while ((spi->SR & SPI_SR_BSY) > 0)
;
// Wait until data is received
while ((spi->SR & SPI_SR_RXNE) == 0)
;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment