diff options
author | Dominik Sliwa <dominik.sliwa@toradex.com> | 2017-11-09 19:51:32 +0100 |
---|---|---|
committer | Dominik Sliwa <dominik.sliwa@toradex.com> | 2017-11-28 11:06:57 +0100 |
commit | 3020f5caf0b09fcaf85b3b3fa84fdf688ba22cc0 (patch) | |
tree | 971e36ac2bbd28b534791ca07efeca9e762c614a /drivers | |
parent | 41a46914821b1ea72c6dd68b308a3740276139ee (diff) |
K20: can and spi fixesApalis-TK1_LXDE-Image_2.8b1.64-20171229Apalis-TK1_LXDE-Image_2.7b5-20171201
Signed-off-by: Dominik Sliwa <dominik.sliwa@toradex.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/fsl_dspi.c | 9 | ||||
-rw-r--r-- | drivers/fsl_flexcan.c | 13 | ||||
-rw-r--r-- | drivers/fsl_flexcan.h | 2 |
3 files changed, 23 insertions, 1 deletions
diff --git a/drivers/fsl_dspi.c b/drivers/fsl_dspi.c index e2b90ba..dcd93aa 100644 --- a/drivers/fsl_dspi.c +++ b/drivers/fsl_dspi.c @@ -29,6 +29,7 @@ */ #include "fsl_dspi.h" +#include "com_task.h" /******************************************************************************* * Definitions @@ -1465,10 +1466,18 @@ void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle) { if (handle->rxData) { + if ((handle->totalByteCount - handle->remainingReceiveByteCount) == 1){ + if ( *(handle->rxData - 1) == APALIS_TK1_K20_BULK_WRITE_INST) { + handle->remainingReceiveByteCount += dataReceived; + handle->totalByteCount += dataReceived; + handle->remainingSendByteCount += dataReceived; + } + } /* Receive buffer is not null, store data into it */ *handle->rxData = dataReceived; ++handle->rxData; } + /* Descrease remaining receive byte count */ --handle->remainingReceiveByteCount; diff --git a/drivers/fsl_flexcan.c b/drivers/fsl_flexcan.c index f58f3f5..8fd3399 100644 --- a/drivers/fsl_flexcan.c +++ b/drivers/fsl_flexcan.c @@ -392,7 +392,7 @@ static void FLEXCAN_Reset(CAN_Type *base) } } -static void FLEXCAN_SetBaudRate(CAN_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Bps) +void FLEXCAN_SetBaudRate(CAN_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Bps) { flexcan_timing_config_t timingConfig; uint32_t priDiv = baudRate_Bps * FLEXCAN_TIME_QUANTA_NUM; @@ -555,6 +555,17 @@ void FLEXCAN_SetTimingConfig(CAN_Type *base, const flexcan_timing_config_t *conf FLEXCAN_ExitFreezeMode(base); } +void FLEXCAN_SetBitRate(CAN_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Bps) +{ + /* Enter Freeze Mode. */ + FLEXCAN_EnterFreezeMode(base); + + FLEXCAN_SetBaudRate(base, sourceClock_Hz, baudRate_Bps); + + /* Exit Freeze Mode. */ + FLEXCAN_ExitFreezeMode(base); +} + void FLEXCAN_SetRxMbGlobalMask(CAN_Type *base, uint32_t mask) { /* Enter Freeze Mode. */ diff --git a/drivers/fsl_flexcan.h b/drivers/fsl_flexcan.h index 118badf..e6baa93 100644 --- a/drivers/fsl_flexcan.h +++ b/drivers/fsl_flexcan.h @@ -502,6 +502,8 @@ void FLEXCAN_GetDefaultConfig(flexcan_config_t *config); */ void FLEXCAN_SetTimingConfig(CAN_Type *base, const flexcan_timing_config_t *config); +void FLEXCAN_SetBitRate(CAN_Type *base, uint32_t sourceClock_Hz, uint32_t baudRate_Bps); + /*! * @brief Sets the FlexCAN receive message buffer global mask. * |