diff options
author | Keith Packard <keithp@keithp.com> | 2012-08-29 11:16:42 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2012-08-29 11:16:42 -0700 |
commit | 1a7d2faf76a46271532102e217c2dd5515e38b72 (patch) | |
tree | 008fcf5a8b3d5180c8b7688eb168a428fb705936 /src | |
parent | 98f65994ee547feb8cca63ff4ed0fefd3fb2d37d (diff) |
altos: Wait for IN dma complete on slave SPI send
SPI send double buffered, so the DMA completes one byte too early. Use
the recv DMA to know when the SPI transfer is complete.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/cc1111/ao_spi.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/cc1111/ao_spi.c b/src/cc1111/ao_spi.c index 39d459f1..cdef6bda 100644 --- a/src/cc1111/ao_spi.c +++ b/src/cc1111/ao_spi.c @@ -143,7 +143,6 @@ static __xdata uint8_t ao_spi_const; void ao_spi_send_bus(void __xdata *block, uint16_t len) __reentrant { -#if !AO_SPI_SLAVE ao_dma_set_transfer(ao_spi_dma_in_id, &SPI_BUF, &ao_spi_const, @@ -154,7 +153,6 @@ ao_spi_send_bus(void __xdata *block, uint16_t len) __reentrant DMA_CFG1_SRCINC_0 | DMA_CFG1_DESTINC_0 | DMA_CFG1_PRIORITY_NORMAL); -#endif ao_dma_set_transfer(ao_spi_dma_out_id, block, &SPI_BUF, @@ -166,9 +164,7 @@ ao_spi_send_bus(void __xdata *block, uint16_t len) __reentrant DMA_CFG1_DESTINC_0 | DMA_CFG1_PRIORITY_NORMAL); -#if !AO_SPI_SLAVE ao_dma_start(ao_spi_dma_in_id); -#endif ao_dma_start(ao_spi_dma_out_id); ao_dma_trigger(ao_spi_dma_out_id); #if !AO_SPI_SLAVE @@ -181,8 +177,8 @@ ao_spi_send_bus(void __xdata *block, uint16_t len) __reentrant void ao_spi_send_wait(void) { - __critical while (!ao_spi_dma_out_done) - ao_sleep(&ao_spi_dma_out_done); + __critical while (!ao_spi_dma_in_done) + ao_sleep(&ao_spi_dma_in_done); } #endif |