From 878c0948719436f36862feef3908ed0c78cccbdd Mon Sep 17 00:00:00 2001 From: Fergus Noble Date: Tue, 4 Oct 2011 16:06:01 -0700 Subject: Added alternative function for doing an SPI transfer. --- lib/stm32_common/spi.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/stm32_common/spi.c b/lib/stm32_common/spi.c index 7fb8711..71bb846 100644 --- a/lib/stm32_common/spi.c +++ b/lib/stm32_common/spi.c @@ -77,7 +77,7 @@ void spi_write(u32 spi, u16 data) void spi_send(u32 spi, u16 data) { /* wait for transfer finished */ - while (SPI_SR(spi) & SPI_SR_BSY ); + while (!(SPI_SR(spi) & SPI_SR_TXE )); /* Write data (8 or 16 bits, depending on DFF) into DR. */ SPI_DR(spi) = data; @@ -85,6 +85,20 @@ void spi_send(u32 spi, u16 data) u16 spi_read(u32 spi) { + /* wait for transfer finished */ + while (!(SPI_SR(spi) & SPI_SR_RXNE )); + + /* Read the data (8 or 16 bits, depending on DFF bit) from DR. */ + return SPI_DR(spi); +} + +u16 spi_xfer(u32 spi, u16 data) +{ + spi_write(spi, data); + + /* wait for transfer finished */ + while (!(SPI_SR(spi) & SPI_SR_RXNE )); + /* Read the data (8 or 16 bits, depending on DFF bit) from DR. */ return SPI_DR(spi); } -- cgit v1.2.3