diff options
author | Dominik Sliwa <dominik.sliwa@toradex.com> | 2018-02-14 16:53:49 +0100 |
---|---|---|
committer | Dominik Sliwa <dominik.sliwa@toradex.com> | 2018-02-28 14:38:45 +0100 |
commit | 4a48136e9c6d55ff9d9427a91ef43d44d26333d7 (patch) | |
tree | bc8d4630e75c10ba6580cabedbba619a006aeca3 /drivers/fsl_dspi_edma.c | |
parent | 3020f5caf0b09fcaf85b3b3fa84fdf688ba22cc0 (diff) |
spi, can and general improvements
SPI:
-move to single transfer read
-clear interrupt register on read
-perform multibyte read transfers with DMA
-make frame format consistant
CAN:
-move from mailbox to CAN FIFO
-implement buffering
-support for reading multiple frames per transfer
General:
-use PLL at 100MHz
-remove debug task
-do not compile release with debug console enabled
-bumped version to 0.13
Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'drivers/fsl_dspi_edma.c')
-rw-r--r-- | drivers/fsl_dspi_edma.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/drivers/fsl_dspi_edma.c b/drivers/fsl_dspi_edma.c index ef0d151..fa26b2f 100644 --- a/drivers/fsl_dspi_edma.c +++ b/drivers/fsl_dspi_edma.c @@ -1183,30 +1183,55 @@ status_t DSPI_SlaveTransferEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle return kStatus_Success; } - +#if 0 static void EDMA_DspiSlaveCallback(edma_handle_t *edmaHandle, void *g_dspiEdmaPrivateHandle, bool transferDone, uint32_t tcds) { + assert(edmaHandle); assert(g_dspiEdmaPrivateHandle); dspi_slave_edma_private_handle_t *dspiEdmaPrivateHandle; + dspiEdmaPrivateHandle = (dspi_slave_edma_private_handle_t *)g_dspiEdmaPrivateHandle; DSPI_DisableDMA((dspiEdmaPrivateHandle->base), kDSPI_RxDmaEnable | kDSPI_TxDmaEnable); - + GPIO_ClearPinsOutput(GPIOE, 1u << 5u); dspiEdmaPrivateHandle->handle->state = kDSPI_Idle; if (dspiEdmaPrivateHandle->handle->callback) { + dspiEdmaPrivateHandle->handle->callback(dspiEdmaPrivateHandle->base, dspiEdmaPrivateHandle->handle, kStatus_Success, dspiEdmaPrivateHandle->handle->userData); } } +#else +extern dspi_slave_edma_handle_t g_dspi_edma_s_handle; +static void EDMA_DspiSlaveCallback(edma_handle_t *edmaHandle, + void *g_dspiEdmaPrivateHandle, + bool transferDone, + uint32_t tcds) +{ + + assert(edmaHandle); + + DSPI_DisableDMA(SPI2, kDSPI_RxDmaEnable | kDSPI_TxDmaEnable); + + g_dspi_edma_s_handle.state = kDSPI_Idle; + + if (g_dspi_edma_s_handle.callback) + { + + g_dspi_edma_s_handle.callback(SPI2, &g_dspi_edma_s_handle, + kStatus_Success, g_dspi_edma_s_handle.userData); + } +} +#endif void DSPI_SlaveTransferAbortEDMA(SPI_Type *base, dspi_slave_edma_handle_t *handle) { assert(handle); |