diff options
author | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-11-01 14:14:10 +0000 |
---|---|---|
committer | gdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4> | 2009-11-01 14:14:10 +0000 |
commit | 37182851ef5334fb8e8e42ca9ed500dbc59a85b5 (patch) | |
tree | 1ddce45228e896e7d8e5f20fdaee484d74ec26f4 | |
parent | 5d84678f57e30b8ec6765a74eb05c89c9c651baa (diff) | |
download | ChibiOS-37182851ef5334fb8e8e42ca9ed500dbc59a85b5.tar.gz ChibiOS-37182851ef5334fb8e8e42ca9ed500dbc59a85b5.tar.bz2 ChibiOS-37182851ef5334fb8e8e42ca9ed500dbc59a85b5.zip |
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1261 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r-- | os/io/platforms/STM32/spi_lld.c | 19 | ||||
-rw-r--r-- | os/io/platforms/STM32/stm32_dma.c | 9 | ||||
-rw-r--r-- | readme.txt | 1 |
3 files changed, 17 insertions, 12 deletions
diff --git a/os/io/platforms/STM32/spi_lld.c b/os/io/platforms/STM32/spi_lld.c index 9f95b3a19..934501cf6 100644 --- a/os/io/platforms/STM32/spi_lld.c +++ b/os/io/platforms/STM32/spi_lld.c @@ -88,6 +88,7 @@ static msg_t spi_start_wait(SPIDriver *spip) { chSysLock();
spip->spd_spi->CR1 |= SPI_CR1_SPE; /* SPI enable.*/
+
spip->spd_thread = currp;
chSchGoSleepS(PRSUSPENDED); /* Wait for completion event.*/
spip->spd_thread = NULL;
@@ -312,10 +313,8 @@ void spi_lld_unselect(SPIDriver *spip) { */
msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) {
- spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_MINC |
- DMA_CCR1_TEIE | DMA_CCR1_EN;
- spip->spd_dmatx->CCR = DMA_CCR1_DIR | DMA_CCR1_MINC |
- DMA_CCR1_TEIE | DMA_CCR1_EN;
+ spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_MINC | DMA_CCR1_TEIE;
+ spip->spd_dmatx->CCR = DMA_CCR1_DIR | DMA_CCR1_MINC | DMA_CCR1_TEIE;
dma_start(spip, n, rxbuf, txbuf);
return spi_start_wait(spip);
}
@@ -335,10 +334,8 @@ msg_t spi_lld_exchange(SPIDriver *spip, size_t n, void *rxbuf, void *txbuf) { */
msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf) {
- spip->spd_dmarx->CCR = DMA_CCR1_TCIE |
- DMA_CCR1_TEIE | DMA_CCR1_EN;
- spip->spd_dmatx->CCR = DMA_CCR1_DIR | DMA_CCR1_MINC |
- DMA_CCR1_TEIE | DMA_CCR1_EN;
+ spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_TEIE;
+ spip->spd_dmatx->CCR = DMA_CCR1_DIR | DMA_CCR1_MINC | DMA_CCR1_TEIE;
dma_start(spip, n, &dummyrx, txbuf);
return spi_start_wait(spip);
}
@@ -358,10 +355,8 @@ msg_t spi_lld_send(SPIDriver *spip, size_t n, void *txbuf) { */
msg_t spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf) {
- spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_MINC |
- DMA_CCR1_TEIE | DMA_CCR1_EN;
- spip->spd_dmatx->CCR = DMA_CCR1_DIR |
- DMA_CCR1_TEIE | DMA_CCR1_EN;
+ spip->spd_dmarx->CCR = DMA_CCR1_TCIE | DMA_CCR1_MINC | DMA_CCR1_TEIE;
+ spip->spd_dmatx->CCR = DMA_CCR1_DIR | DMA_CCR1_TEIE;
dma_start(spip, n, rxbuf, &dummytx);
return spi_start_wait(spip);
}
diff --git a/os/io/platforms/STM32/stm32_dma.c b/os/io/platforms/STM32/stm32_dma.c index d78a058d9..7368f1bb9 100644 --- a/os/io/platforms/STM32/stm32_dma.c +++ b/os/io/platforms/STM32/stm32_dma.c @@ -28,6 +28,12 @@ #include "stm32_dma.h"
+#undef FALSE
+#undef TRUE
+#include <stm32f10x.h>
+#define FALSE 0
+#define TRUE (!FALSE)
+
static cnt_t dmacnt1;
#if defined(STM32F10X_HD) || defined (STM32F10X_CL)
static cnt_t dmacnt2;
@@ -39,8 +45,11 @@ static cnt_t dmacnt2; void dmaInit(void) {
dmacnt1 = 0;
+ DMA1->IFCR = 0x0FFFFFFF;
+
#if defined(STM32F10X_HD) || defined (STM32F10X_CL)
dmacnt2 = 0;
+ DMA2->IFCR = 0x0FFFFFFF;
#endif
}
diff --git a/readme.txt b/readme.txt index b83349cda..f9094ef39 100644 --- a/readme.txt +++ b/readme.txt @@ -4,6 +4,7 @@ *** 1.3.4 ***
- NEW: New SPI (master) driver model.
+- NEW: SPI driver for STM32 implementing the new SPI driver model.
*** 1.3.3 ***
- FIX: Fixed bug in the LPC2148 PAL driver (bug 2881380).
|