From 59c1c40e2c14c062cfe24c5eac3599cd8cca0c79 Mon Sep 17 00:00:00 2001 From: Fergus Noble Date: Tue, 27 Sep 2011 17:18:15 -0700 Subject: Fixing some header references --- lib/stm32f1/scb.c | 2 +- lib/usb/usb_f103.c | 2 +- lib/usb/usb_f107.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'lib') diff --git a/lib/stm32f1/scb.c b/lib/stm32f1/scb.c index dfee6c3..54c5776 100644 --- a/lib/stm32f1/scb.c +++ b/lib/stm32f1/scb.c @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -#include +#include void scb_reset_core(void) { diff --git a/lib/usb/usb_f103.c b/lib/usb/usb_f103.c index 594d3c6..274d4e9 100644 --- a/lib/usb/usb_f103.c +++ b/lib/usb/usb_f103.c @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -#include +#include #include #include #include diff --git a/lib/usb/usb_f107.c b/lib/usb/usb_f107.c index 134b728..65c76b4 100644 --- a/lib/usb/usb_f107.c +++ b/lib/usb/usb_f107.c @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -#include +#include #include #include #include -- cgit v1.2.3 From 71909482de63e9f34570df1635aefb48a0a730ec Mon Sep 17 00:00:00 2001 From: Fergus Noble Date: Tue, 27 Sep 2011 17:19:24 -0700 Subject: Fixing some more header references --- lib/usb/usb_f103.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/usb/usb_f103.c b/lib/usb/usb_f103.c index 274d4e9..ea173d7 100644 --- a/lib/usb/usb_f103.c +++ b/lib/usb/usb_f103.c @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include "usb_private.h" -- cgit v1.2.3 From 4809f7dacf70253f894460683be5c08d76a800a7 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. --- include/libopencm3/stm32/spi.h | 1 + lib/stm32_common/spi.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/include/libopencm3/stm32/spi.h b/include/libopencm3/stm32/spi.h index 3cadaf8..3036657 100644 --- a/include/libopencm3/stm32/spi.h +++ b/include/libopencm3/stm32/spi.h @@ -290,6 +290,7 @@ void spi_disable(u32 spi); void spi_write(u32 spi, u16 data); void spi_send(u32 spi, u16 data); u16 spi_read(u32 spi); +u16 spi_xfer(u32 spi, u16 data); void spi_set_bidirectional_mode(u32 spi); void spi_set_unidirectional_mode(u32 spi); void spi_set_bidirectional_receive_only_mode(u32 spi); 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