From 37182851ef5334fb8e8e42ca9ed500dbc59a85b5 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sun, 1 Nov 2009 14:14:10 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1261 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/io/platforms/STM32/spi_lld.c | 19 +++++++------------ os/io/platforms/STM32/stm32_dma.c | 9 +++++++++ 2 files changed, 16 insertions(+), 12 deletions(-) (limited to 'os/io') 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 +#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 } -- cgit v1.2.3