NUCLEO R030R8 16Bit SPI read and write

add 16 bit read and write
pull/206/head
dreschpe 2014-03-10 17:45:46 +01:00
parent 3d72f3dcbf
commit ad09a83642
1 changed files with 17 additions and 5 deletions

View File

@ -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) {