From 06593fd3966ffff2ad5fbaaa14bbf82c61c4bd6a Mon Sep 17 00:00:00 2001 From: gdisirio Date: Thu, 25 Nov 2010 20:45:15 +0000 Subject: STM32 SPI driver optimization. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2427 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/platforms/STM32/spi_lld.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'os') diff --git a/os/hal/platforms/STM32/spi_lld.c b/os/hal/platforms/STM32/spi_lld.c index d9abd5ba1..90e4305dc 100644 --- a/os/hal/platforms/STM32/spi_lld.c +++ b/os/hal/platforms/STM32/spi_lld.c @@ -391,10 +391,9 @@ void spi_lld_unselect(SPIDriver *spip) { void spi_lld_ignore(SPIDriver *spip, size_t n) { dmaChannelSetup(spip->spd_dmarx, n, &dummyrx, - spip->spd_dmaccr | DMA_CCR1_TCIE); + spip->spd_dmaccr | DMA_CCR1_TCIE | DMA_CCR1_EN); dmaChannelSetup(spip->spd_dmatx, n, &dummytx, - spip->spd_dmaccr | DMA_CCR1_DIR); - dma_start(spip); + spip->spd_dmaccr | DMA_CCR1_DIR | DMA_CCR1_EN); } /** @@ -416,10 +415,11 @@ void spi_lld_exchange(SPIDriver *spip, size_t n, const void *txbuf, void *rxbuf) { dmaChannelSetup(spip->spd_dmarx, n, rxbuf, - spip->spd_dmaccr | DMA_CCR1_TCIE | DMA_CCR1_MINC); + spip->spd_dmaccr | DMA_CCR1_TCIE | DMA_CCR1_MINC | + DMA_CCR1_EN); dmaChannelSetup(spip->spd_dmatx, n, txbuf, - spip->spd_dmaccr | DMA_CCR1_DIR | DMA_CCR1_MINC); - dma_start(spip); + spip->spd_dmaccr | DMA_CCR1_DIR | DMA_CCR1_MINC | + DMA_CCR1_EN); } /** @@ -438,10 +438,10 @@ void spi_lld_exchange(SPIDriver *spip, size_t n, void spi_lld_send(SPIDriver *spip, size_t n, const void *txbuf) { dmaChannelSetup(spip->spd_dmarx, n, &dummyrx, - spip->spd_dmaccr | DMA_CCR1_TCIE); + spip->spd_dmaccr | DMA_CCR1_TCIE | DMA_CCR1_EN); dmaChannelSetup(spip->spd_dmatx, n, txbuf, - spip->spd_dmaccr | DMA_CCR1_DIR | DMA_CCR1_MINC); - dma_start(spip); + spip->spd_dmaccr | DMA_CCR1_DIR | DMA_CCR1_MINC | + DMA_CCR1_EN); } /** @@ -460,10 +460,10 @@ void spi_lld_send(SPIDriver *spip, size_t n, const void *txbuf) { void spi_lld_receive(SPIDriver *spip, size_t n, void *rxbuf) { dmaChannelSetup(spip->spd_dmarx, n, rxbuf, - spip->spd_dmaccr | DMA_CCR1_TCIE | DMA_CCR1_MINC); + spip->spd_dmaccr | DMA_CCR1_TCIE | DMA_CCR1_MINC | + DMA_CCR1_EN); dmaChannelSetup(spip->spd_dmatx, n, &dummytx, - spip->spd_dmaccr | DMA_CCR1_DIR); - dma_start(spip); + spip->spd_dmaccr | DMA_CCR1_DIR | DMA_CCR1_EN); } /** -- cgit v1.2.3