summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lorenz@px4.io>2015-02-17 23:15:36 +0100
committerLorenz Meier <lorenz@px4.io>2015-02-17 23:15:36 +0100
commit3c80d15993ee2e1fc4c7737050bc05cfca76f01b (patch)
treec3770ee5db58150a2fd3e18427f94d4322b9149e
parent803896602c1a72ed332ae440b34ffe46b8ed5de2 (diff)
parent33e56f1a3aac0ef5474c57b565bd9f9e8813b2fb (diff)
downloadnuttx-3c80d15993ee2e1fc4c7737050bc05cfca76f01b.tar.gz
nuttx-3c80d15993ee2e1fc4c7737050bc05cfca76f01b.tar.bz2
nuttx-3c80d15993ee2e1fc4c7737050bc05cfca76f01b.zip
Merge pull request #46 from PX4/spi_setup_fix
Spi setup fix
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_spi.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_spi.c b/nuttx/arch/arm/src/stm32/stm32_spi.c
index b47938470..3b0eaaaa0 100644
--- a/nuttx/arch/arm/src/stm32/stm32_spi.c
+++ b/nuttx/arch/arm/src/stm32/stm32_spi.c
@@ -1035,7 +1035,9 @@ static uint32_t spi_setfrequency(FAR struct spi_dev_s *dev, uint32_t frequency)
actual = priv->spiclock >> 8;
}
+ spi_modifycr1(priv, 0, SPI_CR1_SPE);
spi_modifycr1(priv, setbits, SPI_CR1_BR_MASK);
+ spi_modifycr1(priv, SPI_CR1_SPE, 0);
/* Save the frequency selection so that subsequent reconfigurations will be
* faster.
@@ -1110,9 +1112,11 @@ static void spi_setmode(FAR struct spi_dev_s *dev, enum spi_mode_e mode)
return;
}
- spi_modifycr1(priv, setbits, clrbits);
+ spi_modifycr1(priv, 0, SPI_CR1_SPE);
+ spi_modifycr1(priv, setbits, clrbits);
+ spi_modifycr1(priv, SPI_CR1_SPE, 0);
- /* Save the mode so that subsequent re-configurations will be faster */
+ /* Save the mode so that subsequent re-configurations will be faster */
#ifndef CONFIG_SPI_OWNBUS
priv->mode = mode;
@@ -1155,12 +1159,12 @@ static void spi_setbits(FAR struct spi_dev_s *dev, int nbits)
{
case 8:
setbits = 0;
- clrbits = SPI_CR1_DFF;
+ clrbits = SPI_CR1_DFF|SPI_CR1_LSBFIRST;
break;
case 16:
setbits = SPI_CR1_DFF;
- clrbits = 0;
+ clrbits = SPI_CR1_LSBFIRST;
break;
default: