From ad09a8364285e12d799c702d8612c4a8018dc3d7 Mon Sep 17 00:00:00 2001 From: dreschpe Date: Mon, 10 Mar 2014 17:45:46 +0100 Subject: [PATCH] NUCLEO R030R8 16Bit SPI read and write add 16 bit read and write --- .../TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c index 430da4f011..771f9516c3 100644 --- a/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c +++ b/libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/spi_api.c @@ -215,13 +215,19 @@ static inline int ssp_writeable(spi_t *obj) { static inline void ssp_write(spi_t *obj, int value) { SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi); while (!ssp_writeable(obj)); - SPI_SendData8(spi, (uint8_t)value); + if(obj->bits == SPI_DATASIZE_8BIT) // 8 bit mode + SPI_SendData8(spi, (uint8_t)value); + else + SPI_I2S_SendData16(spi, (uint16_t)value); } static inline int ssp_read(spi_t *obj) { SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi); while (!ssp_readable(obj)); - return (int)SPI_ReceiveData8(spi); + if(obj->bits == SPI_DATASIZE_8BIT) // 8 bit mode + return (int)SPI_ReceiveData8(spi); + else // 16 bit mode + return (int)SPI_I2S_ReceiveData16(spi); } static inline int ssp_busy(spi_t *obj) { @@ -242,13 +248,19 @@ int spi_slave_receive(spi_t *obj) { int spi_slave_read(spi_t *obj) { SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi); - return (int)SPI_ReceiveData8(spi); + if(obj->bits == SPI_DATASIZE_8BIT) // 8 bit mode + return (int)SPI_ReceiveData8(spi); + else + return (int)SPI_I2S_ReceiveData16(spi); } void spi_slave_write(spi_t *obj, int value) { SPI_TypeDef *spi = (SPI_TypeDef *)(obj->spi); - while (!ssp_writeable(obj)); - SPI_SendData8(spi, (uint8_t)value); + while (!ssp_writeable(obj)); + if(obj->bits == SPI_DATASIZE_8BIT) // 8 bit mode + SPI_SendData8(spi, (uint8_t)value); + else + SPI_I2S_SendData16(spi, (uint16_t)value); } int spi_busy(spi_t *obj) {