Kinetis Bootloader  2.0.0
Common bootloader for Kinetis devices
fsl_dspi.h
1 /*
2  * Copyright (c) 2015, Freescale Semiconductor, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * o Redistributions of source code must retain the above copyright notice, this list
9  * of conditions and the following disclaimer.
10  *
11  * o Redistributions in binary form must reproduce the above copyright notice, this
12  * list of conditions and the following disclaimer in the documentation and/or
13  * other materials provided with the distribution.
14  *
15  * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
23  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30 #ifndef _FSL_DSPI_H_
31 #define _FSL_DSPI_H_
32 
33 #include "fsl_common.h"
34 
40 /**********************************************************************************************************************
41  * Definitions
42  *********************************************************************************************************************/
43 
45 #define FSL_DSPI_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
48 #define DSPI_MASTER_DUMMY_DATA (0x00U)
49 #define DSPI_SLAVE_DUMMY_DATA (0x00U)
52 enum _dspi_status
53 {
58 };
59 
62 {
63  kDSPI_TxCompleteFlag = SPI_SR_TCF_MASK,
64  kDSPI_EndOfQueueFlag = SPI_SR_EOQF_MASK,
65  kDSPI_TxFifoUnderflowFlag = SPI_SR_TFUF_MASK,
66  kDSPI_TxFifoFillRequestFlag = SPI_SR_TFFF_MASK,
67  kDSPI_RxFifoOverflowFlag = SPI_SR_RFOF_MASK,
68  kDSPI_RxFifoDrainRequestFlag = SPI_SR_RFDF_MASK,
69  kDSPI_TxAndRxStatusFlag = SPI_SR_TXRXS_MASK,
70  kDSPI_AllStatusFlag = SPI_SR_TCF_MASK | SPI_SR_EOQF_MASK | SPI_SR_TFUF_MASK | SPI_SR_TFFF_MASK | SPI_SR_RFOF_MASK |
71  SPI_SR_RFDF_MASK | SPI_SR_TXRXS_MASK
72 };
73 
76 {
77  kDSPI_TxCompleteInterruptEnable = SPI_RSER_TCF_RE_MASK,
78  kDSPI_EndOfQueueInterruptEnable = SPI_RSER_EOQF_RE_MASK,
79  kDSPI_TxFifoUnderflowInterruptEnable = SPI_RSER_TFUF_RE_MASK,
80  kDSPI_TxFifoFillRequestInterruptEnable = SPI_RSER_TFFF_RE_MASK,
81  kDSPI_RxFifoOverflowInterruptEnable = SPI_RSER_RFOF_RE_MASK,
82  kDSPI_RxFifoDrainRequestInterruptEnable = SPI_RSER_RFDF_RE_MASK,
83  kDSPI_AllInterruptEnable = SPI_RSER_TCF_RE_MASK | SPI_RSER_EOQF_RE_MASK | SPI_RSER_TFUF_RE_MASK |
84  SPI_RSER_TFFF_RE_MASK | SPI_RSER_RFOF_RE_MASK | SPI_RSER_RFDF_RE_MASK
86 };
87 
90 {
91  kDSPI_TxDmaEnable = (SPI_RSER_TFFF_RE_MASK | SPI_RSER_TFFF_DIRS_MASK),
93  kDSPI_RxDmaEnable = (SPI_RSER_RFDF_RE_MASK | SPI_RSER_RFDF_DIRS_MASK)
95 };
96 
98 typedef enum _dspi_master_slave_mode
99 {
103 
108 typedef enum _dspi_master_sample_point
109 {
114 
116 typedef enum _dspi_which_pcs_config
117 {
118  kDSPI_Pcs0 = 1U << 0,
119  kDSPI_Pcs1 = 1U << 1,
120  kDSPI_Pcs2 = 1U << 2,
121  kDSPI_Pcs3 = 1U << 3,
122  kDSPI_Pcs4 = 1U << 4,
123  kDSPI_Pcs5 = 1U << 5
125 
127 typedef enum _dspi_pcs_polarity_config
128 {
132 
135 {
143 };
144 
146 typedef enum _dspi_clock_polarity
147 {
151 
153 typedef enum _dspi_clock_phase
154 {
160 
162 typedef enum _dspi_shift_direction
163 {
167 
169 typedef enum _dspi_delay_type
170 {
175 
177 typedef enum _dspi_ctar_selection
178 {
179  kDSPI_Ctar0 = 0U,
181  kDSPI_Ctar1 = 1U,
182  kDSPI_Ctar2 = 2U,
183  kDSPI_Ctar3 = 3U,
184  kDSPI_Ctar4 = 4U,
185  kDSPI_Ctar5 = 5U,
186  kDSPI_Ctar6 = 6U,
189 
190 #define DSPI_MASTER_CTAR_SHIFT (0U)
191 #define DSPI_MASTER_CTAR_MASK (0x0FU)
192 #define DSPI_MASTER_PCS_SHIFT (4U)
193 #define DSPI_MASTER_PCS_MASK (0xF0U)
195 enum _dspi_transfer_config_flag_for_master
196 {
197  kDSPI_MasterCtar0 = 0U << DSPI_MASTER_CTAR_SHIFT,
198  kDSPI_MasterCtar1 = 1U << DSPI_MASTER_CTAR_SHIFT,
199  kDSPI_MasterCtar2 = 2U << DSPI_MASTER_CTAR_SHIFT,
200  kDSPI_MasterCtar3 = 3U << DSPI_MASTER_CTAR_SHIFT,
201  kDSPI_MasterCtar4 = 4U << DSPI_MASTER_CTAR_SHIFT,
202  kDSPI_MasterCtar5 = 5U << DSPI_MASTER_CTAR_SHIFT,
203  kDSPI_MasterCtar6 = 6U << DSPI_MASTER_CTAR_SHIFT,
204  kDSPI_MasterCtar7 = 7U << DSPI_MASTER_CTAR_SHIFT,
206  kDSPI_MasterPcs0 = 0U << DSPI_MASTER_PCS_SHIFT,
207  kDSPI_MasterPcs1 = 1U << DSPI_MASTER_PCS_SHIFT,
208  kDSPI_MasterPcs2 = 2U << DSPI_MASTER_PCS_SHIFT,
209  kDSPI_MasterPcs3 = 3U << DSPI_MASTER_PCS_SHIFT,
210  kDSPI_MasterPcs4 = 4U << DSPI_MASTER_PCS_SHIFT,
211  kDSPI_MasterPcs5 = 5U << DSPI_MASTER_PCS_SHIFT,
215 };
216 
217 #define DSPI_SLAVE_CTAR_SHIFT (0U)
218 #define DSPI_SLAVE_CTAR_MASK (0x07U)
220 enum _dspi_transfer_config_flag_for_slave
221 {
222  kDSPI_SlaveCtar0 = 0U << DSPI_SLAVE_CTAR_SHIFT,
224 };
225 
228 {
229  kDSPI_Idle = 0x0U,
232 };
233 
235 typedef struct _dspi_command_data_config
236 {
238  dspi_ctar_selection_t whichCtar;
240  dspi_which_pcs_t whichPcs;
244 
246 typedef struct _dspi_master_ctar_config
247 {
248  uint32_t baudRate;
249  uint32_t bitsPerFrame;
250  dspi_clock_polarity_t cpol;
251  dspi_clock_phase_t cpha;
252  dspi_shift_direction_t direction;
262 
264 typedef struct _dspi_master_config
265 {
266  dspi_ctar_selection_t whichCtar;
269  dspi_which_pcs_t whichPcs;
270  dspi_pcs_polarity_config_t pcsActiveHighOrLow;
280  dspi_master_sample_point_t samplePoint;
283 
285 typedef struct _dspi_slave_ctar_config
286 {
287  uint32_t bitsPerFrame;
288  dspi_clock_polarity_t cpol;
289  dspi_clock_phase_t cpha;
292 
294 typedef struct _dspi_slave_config
295 {
296  dspi_ctar_selection_t whichCtar;
306  dspi_master_sample_point_t samplePoint;
309 
313 typedef struct _dspi_master_handle dspi_master_handle_t;
314 
318 typedef struct _dspi_slave_handle dspi_slave_handle_t;
319 
328 typedef void (*dspi_master_transfer_callback_t)(SPI_Type *base,
329  dspi_master_handle_t *handle,
330  status_t status,
331  void *userData);
340 typedef void (*dspi_slave_transfer_callback_t)(SPI_Type *base,
341  dspi_slave_handle_t *handle,
342  status_t status,
343  void *userData);
344 
346 typedef struct _dspi_transfer
347 {
348  uint8_t *txData;
349  uint8_t *rxData;
350  volatile size_t dataSize;
352  uint32_t
357 
360 {
361  uint32_t bitsPerFrame;
362  volatile uint32_t command;
363  volatile uint32_t lastCommand;
365  uint8_t fifoSize;
367  volatile bool isPcsActiveAfterTransfer;
368  volatile bool isThereExtraByte;
370  uint8_t *volatile txData;
371  uint8_t *volatile rxData;
372  volatile size_t remainingSendByteCount;
373  volatile size_t remainingReceiveByteCount;
374  size_t totalByteCount;
376  volatile uint8_t state;
379  void *userData;
380 };
381 
384 {
385  uint32_t bitsPerFrame;
386  volatile bool isThereExtraByte;
388  uint8_t *volatile txData;
389  uint8_t *volatile rxData;
390  volatile size_t remainingSendByteCount;
391  volatile size_t remainingReceiveByteCount;
392  size_t totalByteCount;
394  volatile uint8_t state;
396  volatile uint32_t errorCount;
399  void *userData;
400 };
401 
402 /**********************************************************************************************************************
403  * API
404  *********************************************************************************************************************/
405 #if defined(__cplusplus)
406 extern "C" {
407 #endif /*_cplusplus*/
408 
442 void DSPI_MasterInit(SPI_Type *base, const dspi_master_config_t *masterConfig, uint32_t srcClock_Hz);
443 
458 
479 void DSPI_SlaveInit(SPI_Type *base, const dspi_slave_config_t *slaveConfig);
480 
495 
500 void DSPI_Deinit(SPI_Type *base);
501 
508 static inline void DSPI_Enable(SPI_Type *base, bool enable)
509 {
510  if (enable)
511  {
512  base->MCR &= ~SPI_MCR_MDIS_MASK;
513  }
514  else
515  {
516  base->MCR |= SPI_MCR_MDIS_MASK;
517  }
518 }
519 
534 static inline uint32_t DSPI_GetStatusFlags(SPI_Type *base)
535 {
536  return (base->SR);
537 }
538 
553 static inline void DSPI_ClearStatusFlags(SPI_Type *base, uint32_t statusFlags)
554 {
555  base->SR = statusFlags;
556 }
557 
580 void DSPI_EnableInterrupts(SPI_Type *base, uint32_t mask);
581 
592 static inline void DSPI_DisableInterrupts(SPI_Type *base, uint32_t mask)
593 {
594  base->RSER &= ~mask;
595 }
596 
617 static inline void DSPI_EnableDMA(SPI_Type *base, uint32_t mask)
618 {
619  base->RSER |= mask;
620 }
621 
633 static inline void DSPI_DisableDMA(SPI_Type *base, uint32_t mask)
634 {
635  base->RSER &= ~mask;
636 }
637 
646 static inline uint32_t DSPI_MasterGetTxRegisterAddress(SPI_Type *base)
647 {
648  return (uint32_t) & (base->PUSHR);
649 }
650 
659 static inline uint32_t DSPI_SlaveGetTxRegisterAddress(SPI_Type *base)
660 {
661  return (uint32_t) & (base->PUSHR_SLAVE);
662 }
663 
672 static inline uint32_t DSPI_GetRxRegisterAddress(SPI_Type *base)
673 {
674  return (uint32_t) & (base->POPR);
675 }
676 
692 static inline void DSPI_SetMasterSlaveMode(SPI_Type *base, dspi_master_slave_mode_t mode)
693 {
694  base->MCR = (base->MCR & (~SPI_MCR_MSTR_MASK)) | SPI_MCR_MSTR(mode);
695 }
696 
703 static inline bool DSPI_IsMaster(SPI_Type *base)
704 {
705  return (bool)((base->MCR) & SPI_MCR_MSTR_MASK);
706 }
714 static inline void DSPI_StartTransfer(SPI_Type *base)
715 {
716  base->MCR &= ~SPI_MCR_HALT_MASK;
717 }
725 static inline void DSPI_StopTransfer(SPI_Type *base)
726 {
727  base->MCR |= SPI_MCR_HALT_MASK;
728 }
729 
741 static inline void DSPI_SetFifoEnable(SPI_Type *base, bool enableTxFifo, bool enableRxFifo)
742 {
743  base->MCR = (base->MCR & (~(SPI_MCR_DIS_RXF_MASK | SPI_MCR_DIS_TXF_MASK))) | SPI_MCR_DIS_TXF(!enableTxFifo) |
744  SPI_MCR_DIS_RXF(!enableRxFifo);
745 }
746 
754 static inline void DSPI_FlushFifo(SPI_Type *base, bool flushTxFifo, bool flushRxFifo)
755 {
756  base->MCR = (base->MCR & (~(SPI_MCR_CLR_TXF_MASK | SPI_MCR_CLR_RXF_MASK))) | SPI_MCR_CLR_TXF(flushTxFifo) |
757  SPI_MCR_CLR_RXF(flushRxFifo);
758 }
759 
770 static inline void DSPI_SetAllPcsPolarity(SPI_Type *base, uint32_t mask)
771 {
772  base->MCR = (base->MCR & ~SPI_MCR_PCSIS_MASK) | SPI_MCR_PCSIS(mask);
773 }
774 
788 uint32_t DSPI_MasterSetBaudRate(SPI_Type *base,
789  dspi_ctar_selection_t whichCtar,
790  uint32_t baudRate_Bps,
791  uint32_t srcClock_Hz);
792 
812  SPI_Type *base, dspi_ctar_selection_t whichCtar, uint32_t prescaler, uint32_t scaler, dspi_delay_type_t whichDelay);
813 
839 uint32_t DSPI_MasterSetDelayTimes(SPI_Type *base,
840  dspi_ctar_selection_t whichCtar,
841  dspi_delay_type_t whichDelay,
842  uint32_t srcClock_Hz,
843  uint32_t delayTimeInNanoSec);
844 
868 static inline void DSPI_MasterWriteData(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data)
869 {
870  base->PUSHR = SPI_PUSHR_CONT(command->isPcsContinuous) | SPI_PUSHR_CTAS(command->whichCtar) |
871  SPI_PUSHR_PCS(command->whichPcs) | SPI_PUSHR_EOQ(command->isEndOfQueue) |
872  SPI_PUSHR_CTCNT(command->clearTransferCount) | SPI_PUSHR_TXDATA(data);
873 }
874 
889 
917 void DSPI_MasterWriteDataBlocking(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data);
918 
936 {
937  /* Format the 16-bit command word according to the PUSHR data register bit field*/
938  return (uint32_t)(SPI_PUSHR_CONT(command->isPcsContinuous) | SPI_PUSHR_CTAS(command->whichCtar) |
939  SPI_PUSHR_PCS(command->whichPcs) | SPI_PUSHR_EOQ(command->isEndOfQueue) |
940  SPI_PUSHR_CTCNT(command->clearTransferCount));
941 }
942 
983 void DSPI_MasterWriteCommandDataBlocking(SPI_Type *base, uint32_t data);
984 
993 static inline void DSPI_SlaveWriteData(SPI_Type *base, uint32_t data)
994 {
995  base->PUSHR_SLAVE = data;
996 }
997 
1007 void DSPI_SlaveWriteDataBlocking(SPI_Type *base, uint32_t data);
1008 
1015 static inline uint32_t DSPI_ReadData(SPI_Type *base)
1016 {
1017  return (base->POPR);
1018 }
1019 
1028 /*Transactional APIs*/
1029 
1041 void DSPI_MasterTransferCreateHandle(SPI_Type *base,
1042  dspi_master_handle_t *handle,
1044  void *userData);
1045 
1057 status_t DSPI_MasterTransferBlocking(SPI_Type *base, dspi_transfer_t *transfer);
1058 
1071 status_t DSPI_MasterTransferNonBlocking(SPI_Type *base, dspi_master_handle_t *handle, dspi_transfer_t *transfer);
1072 
1083 status_t DSPI_MasterTransferGetCount(SPI_Type *base, dspi_master_handle_t *handle, size_t *count);
1084 
1093 void DSPI_MasterTransferAbort(SPI_Type *base, dspi_master_handle_t *handle);
1094 
1103 void DSPI_MasterTransferHandleIRQ(SPI_Type *base, dspi_master_handle_t *handle);
1104 
1116 void DSPI_SlaveTransferCreateHandle(SPI_Type *base,
1117  dspi_slave_handle_t *handle,
1119  void *userData);
1120 
1133 status_t DSPI_SlaveTransferNonBlocking(SPI_Type *base, dspi_slave_handle_t *handle, dspi_transfer_t *transfer);
1134 
1145 status_t DSPI_SlaveTransferGetCount(SPI_Type *base, dspi_slave_handle_t *handle, size_t *count);
1146 
1155 void DSPI_SlaveTransferAbort(SPI_Type *base, dspi_slave_handle_t *handle);
1156 
1165 void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle);
1166 
1171 #if defined(__cplusplus)
1172 }
1173 #endif /*_cplusplus*/
1174 
1178 #endif /*_FSL_DSPI_H_*/
Definition: fsl_dspi.h:63
Definition: fsl_common.h:71
uint8_t * rxData
Definition: fsl_dspi.h:349
dspi_clock_phase_t cpha
Definition: fsl_dspi.h:251
Definition: fsl_dspi.h:91
uint32_t lastSckToPcsDelayInNanoSec
Definition: fsl_dspi.h:256
uint8_t * txData
Definition: fsl_dspi.h:348
Definition: fsl_dspi.h:139
Definition: fsl_dspi.h:209
Definition: fsl_dspi.h:140
Definition: fsl_dspi.h:77
Definition: fsl_dspi.h:148
_dspi_flags
DSPI status flags in SPIx_SR register.
Definition: fsl_dspi.h:61
DSPI master transfer handle structure used for transactional API.
Definition: fsl_dspi.h:359
Definition: fsl_dspi.h:203
DSPI master ctar config structure.
Definition: fsl_dspi.h:246
Definition: fsl_dspi.h:197
static uint32_t DSPI_SlaveGetTxRegisterAddress(SPI_Type *base)
Gets the DSPI slave PUSHR data register address for the DMA operation.
Definition: fsl_dspi.h:659
dspi_master_slave_mode_t
DSPI master or slave mode configuration.
Definition: fsl_dspi.h:98
void DSPI_MasterGetDefaultConfig(dspi_master_config_t *masterConfig)
Sets the dspi_master_config_t structure to default values.
Definition: fsl_dspi.c:202
status_t DSPI_SlaveTransferGetCount(SPI_Type *base, dspi_slave_handle_t *handle, size_t *count)
Gets the slave transfer count.
Definition: fsl_dspi.c:1281
Definition: fsl_dspi.h:186
Definition: fsl_dspi.h:65
_dspi_dma_enable
DSPI DMA source.
Definition: fsl_dspi.h:89
void DSPI_MasterWriteCommandDataBlocking(SPI_Type *base, uint32_t data)
Writes a 32-bit data word (16-bit command appended with 16-bit data) into the data buffer...
Definition: fsl_dspi.c:488
bool enableContinuousSCK
Definition: fsl_dspi.h:272
static void DSPI_StartTransfer(SPI_Type *base)
Starts the DSPI transfers and clears HALT bit in MCR.
Definition: fsl_dspi.h:714
Definition: fsl_dspi.h:149
bool clearTransferCount
Definition: fsl_dspi.h:242
dspi_clock_phase_t
DSPI clock phase configuration for a given CTAR.
Definition: fsl_dspi.h:153
Definition: fsl_dspi.h:81
Definition: fsl_dspi.h:101
void DSPI_EnableInterrupts(SPI_Type *base, uint32_t mask)
Enables the DSPI interrupts.
Definition: fsl_dspi.c:528
Definition: fsl_dspi.h:214
volatile uint8_t state
Definition: fsl_dspi.h:376
uint32_t pcsToSckDelayInNanoSec
Definition: fsl_dspi.h:254
dspi_ctar_selection_t whichCtar
Definition: fsl_dspi.h:238
static uint32_t DSPI_ReadData(SPI_Type *base)
Reads data from the data buffer.
Definition: fsl_dspi.h:1015
status_t DSPI_MasterTransferGetCount(SPI_Type *base, dspi_master_handle_t *handle, size_t *count)
Gets the master transfer count.
Definition: fsl_dspi.c:924
void * userData
Definition: fsl_dspi.h:399
static void DSPI_SetAllPcsPolarity(SPI_Type *base, uint32_t mask)
Configures the DSPI peripheral chip select polarity simultaneously. For example, PCS0 and PCS1 set to...
Definition: fsl_dspi.h:770
static void DSPI_MasterWriteData(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data)
Writes data into the data buffer for master mode.
Definition: fsl_dspi.h:868
static void DSPI_DisableDMA(SPI_Type *base, uint32_t mask)
Disables the DSPI DMA request.
Definition: fsl_dspi.h:633
Definition: fsl_dspi.h:208
size_t totalByteCount
Definition: fsl_dspi.h:374
Definition: fsl_dspi.h:198
Definition: fsl_dspi.h:204
Definition: fsl_dspi.h:112
dspi_ctar_selection_t
DSPI Clock and Transfer Attributes Register (CTAR) selection.
Definition: fsl_dspi.h:177
void DSPI_MasterTransferHandleIRQ(SPI_Type *base, dspi_master_handle_t *handle)
DSPI Master IRQ handler function.
Definition: fsl_dspi.c:1092
static void DSPI_SetFifoEnable(SPI_Type *base, bool enableTxFifo, bool enableRxFifo)
Enables (or disables) the DSPI FIFOs.
Definition: fsl_dspi.h:741
Definition: fsl_dspi.h:66
Definition: fsl_dspi.h:57
DSPI slave configuration structure.
Definition: fsl_dspi.h:294
dspi_master_transfer_callback_t callback
Definition: fsl_dspi.h:378
Definition: fsl_dspi.h:155
dspi_shift_direction_t direction
Definition: fsl_dspi.h:252
void DSPI_SlaveTransferCreateHandle(SPI_Type *base, dspi_slave_handle_t *handle, dspi_slave_transfer_callback_t callback, void *userData)
Initializes the DSPI slave handle.
Definition: fsl_dspi.c:1197
Definition: fsl_dspi.h:64
uint32_t bitsPerFrame
Definition: fsl_dspi.h:249
static void DSPI_ClearStatusFlags(SPI_Type *base, uint32_t statusFlags)
Clears the DSPI status flag.
Definition: fsl_dspi.h:553
dspi_master_sample_point_t samplePoint
Definition: fsl_dspi.h:280
volatile uint32_t lastCommand
Definition: fsl_dspi.h:363
Definition: fsl_dspi.h:120
Definition: fsl_dspi.h:121
Definition: fsl_dspi.h:123
static uint32_t DSPI_GetStatusFlags(SPI_Type *base)
Gets the DSPI status flag state.
Definition: fsl_dspi.h:534
void DSPI_MasterSetDelayScaler(SPI_Type *base, dspi_ctar_selection_t whichCtar, uint32_t prescaler, uint32_t scaler, dspi_delay_type_t whichDelay)
Manually configures the delay prescaler and scaler for a particular CTAR.
Definition: fsl_dspi.c:360
Definition: fsl_dspi.h:165
DSPI master/slave transfer structure.
Definition: fsl_dspi.h:346
dspi_slave_ctar_config_t ctarConfig
Definition: fsl_dspi.h:297
Definition: fsl_dspi.h:119
Definition: fsl_dspi.h:181
void DSPI_SlaveWriteDataBlocking(SPI_Type *base, uint32_t data)
Writes data into the data buffer in slave mode, waits till data was transmitted, and returns...
Definition: fsl_dspi.c:508
static uint32_t DSPI_MasterGetFormattedCommand(dspi_command_data_config_t *command)
Returns the DSPI command word formatted to the PUSHR data register bit field.
Definition: fsl_dspi.h:935
Definition: fsl_dspi.h:184
void DSPI_Deinit(SPI_Type *base)
De-initializes the DSPI peripheral. Call this API to disable the DSPI clock.
Definition: fsl_dspi.c:269
Definition: fsl_dspi.h:141
Definition: fsl_dspi.h:173
Definition: fsl_dspi.h:157
status_t DSPI_MasterTransferNonBlocking(SPI_Type *base, dspi_master_handle_t *handle, dspi_transfer_t *transfer)
DSPI master transfer data using interrupts.
Definition: fsl_dspi.c:887
static void DSPI_FlushFifo(SPI_Type *base, bool flushTxFifo, bool flushRxFifo)
Flushes the DSPI FIFOs.
Definition: fsl_dspi.h:754
dspi_master_ctar_config_t ctarConfig
Definition: fsl_dspi.h:267
Definition: fsl_dspi.h:136
status_t DSPI_MasterTransferBlocking(SPI_Type *base, dspi_transfer_t *transfer)
DSPI master transfer data using polling.
Definition: fsl_dspi.c:559
Definition: fsl_dspi.h:129
dspi_pcs_polarity_config_t pcsActiveHighOrLow
Definition: fsl_dspi.h:270
dspi_delay_type_t
DSPI delay type selection.
Definition: fsl_dspi.h:169
Definition: fsl_dspi.h:222
Definition: fsl_dspi.h:69
uint32_t DSPI_MasterSetDelayTimes(SPI_Type *base, dspi_ctar_selection_t whichCtar, dspi_delay_type_t whichDelay, uint32_t srcClock_Hz, uint32_t delayTimeInNanoSec)
Calculates the delay prescaler and scaler based on the desired delay input in nanoseconds.
Definition: fsl_dspi.c:386
DSPI slave transfer handle structure used for transactional API.
Definition: fsl_dspi.h:383
DSPI master command date configuration used for SPIx_PUSHR.
Definition: fsl_dspi.h:235
dspi_master_sample_point_t
DSPI Sample Point: Controls when the DSPI master samples SIN in Modified Transfer Format...
Definition: fsl_dspi.h:108
void(* dspi_slave_transfer_callback_t)(SPI_Type *base, dspi_slave_handle_t *handle, status_t status, void *userData)
Completion callback function pointer type.
Definition: fsl_dspi.h:340
static void DSPI_StopTransfer(SPI_Type *base)
Stops (halts) DSPI transfers and sets HALT bit in MCR.
Definition: fsl_dspi.h:725
volatile size_t dataSize
Definition: fsl_dspi.h:350
Definition: fsl_dspi.h:179
Definition: fsl_dspi.h:55
Definition: fsl_dspi.h:164
bool isPcsContinuous
Definition: fsl_dspi.h:237
Definition: fsl_dspi.h:79
void DSPI_GetDefaultDataCommandConfig(dspi_command_data_config_t *command)
Sets the dspi_command_data_config_t structure to default values.
Definition: fsl_dspi.c:458
volatile size_t remainingSendByteCount
Definition: fsl_dspi.h:372
dspi_which_pcs_t
DSPI Peripheral Chip Select (Pcs) configuration (which Pcs to configure).
Definition: fsl_dspi.h:116
Definition: fsl_dspi.h:230
volatile uint32_t errorCount
Definition: fsl_dspi.h:396
Definition: fsl_dspi.h:67
uint8_t *volatile rxData
Definition: fsl_dspi.h:371
void DSPI_SlaveGetDefaultConfig(dspi_slave_config_t *slaveConfig)
Sets the dspi_slave_config_t structure to default values.
Definition: fsl_dspi.c:256
static void DSPI_EnableDMA(SPI_Type *base, uint32_t mask)
Enables the DSPI DMA request.
Definition: fsl_dspi.h:617
void DSPI_MasterTransferAbort(SPI_Type *base, dspi_master_handle_t *handle)
DSPI master aborts transfer using an interrupt.
Definition: fsl_dspi.c:1082
dspi_shift_direction_t
DSPI data shifter direction options for a given CTAR.
Definition: fsl_dspi.h:162
Definition: fsl_dspi.h:229
dspi_clock_polarity_t cpol
Definition: fsl_dspi.h:250
DSPI slave ctar configuration structure.
Definition: fsl_dspi.h:285
void DSPI_SlaveTransferAbort(SPI_Type *base, dspi_slave_handle_t *handle)
DSPI slave aborts a transfer using an interrupt.
Definition: fsl_dspi.c:1417
static uint32_t DSPI_GetRxRegisterAddress(SPI_Type *base)
Gets the DSPI POPR data register address for the DMA operation.
Definition: fsl_dspi.h:672
_dspi_interrupt_enable
DSPI interrupt source.
Definition: fsl_dspi.h:75
Definition: fsl_dspi.h:122
Definition: fsl_dspi.h:111
void DSPI_MasterInit(SPI_Type *base, const dspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
Initializes the DSPI master.
Definition: fsl_dspi.c:159
Definition: fsl_dspi.h:100
uint32_t configFlags
Definition: fsl_dspi.h:353
bool isEndOfQueue
Definition: fsl_dspi.h:241
Definition: fsl_dspi.h:207
static void DSPI_Enable(SPI_Type *base, bool enable)
Enables the DSPI peripheral and sets the MCR MDIS to 0.
Definition: fsl_dspi.h:508
static void DSPI_DisableInterrupts(SPI_Type *base, uint32_t mask)
Disables the DSPI interrupts.
Definition: fsl_dspi.h:592
void DSPI_MasterWriteDataBlocking(SPI_Type *base, dspi_command_data_config_t *command, uint16_t data)
Writes data into the data buffer master mode and waits till complete to return.
Definition: fsl_dspi.c:467
dspi_pcs_polarity_config_t
DSPI Peripheral Chip Select (Pcs) Polarity configuration.
Definition: fsl_dspi.h:127
void DSPI_MasterTransferCreateHandle(SPI_Type *base, dspi_master_handle_t *handle, dspi_master_transfer_callback_t callback, void *userData)
Initializes the DSPI master handle.
Definition: fsl_dspi.c:543
static bool DSPI_IsMaster(SPI_Type *base)
Returns whether the DSPI module is in master mode.
Definition: fsl_dspi.h:703
void DSPI_SlaveInit(SPI_Type *base, const dspi_slave_config_t *slaveConfig)
DSPI slave configuration.
Definition: fsl_dspi.c:224
Definition: fsl_dspi.h:54
volatile bool isThereExtraByte
Definition: fsl_dspi.h:368
Definition: fsl_dspi.h:199
_dspi_pcs_polarity
DSPI Peripheral Chip Select (Pcs) Polarity.
Definition: fsl_dspi.h:134
Definition: fsl_dspi.h:130
Definition: fsl_dspi.h:70
Definition: fsl_dspi.h:211
Definition: fsl_dspi.h:172
Definition: fsl_dspi.h:210
dspi_which_pcs_t whichPcs
Definition: fsl_dspi.h:240
Definition: fsl_dspi.h:137
Definition: fsl_dspi.h:200
Definition: fsl_dspi.h:142
status_t DSPI_SlaveTransferNonBlocking(SPI_Type *base, dspi_slave_handle_t *handle, dspi_transfer_t *transfer)
DSPI slave transfers data using an interrupt.
Definition: fsl_dspi.c:1213
Definition: fsl_dspi.h:118
uint32_t betweenTransferDelayInNanoSec
Definition: fsl_dspi.h:259
Definition: fsl_dspi.h:213
Definition: fsl_dspi.h:171
Definition: fsl_dspi.h:183
volatile bool isPcsActiveAfterTransfer
Definition: fsl_dspi.h:367
static void DSPI_SlaveWriteData(SPI_Type *base, uint32_t data)
Writes data into the data buffer in slave mode.
Definition: fsl_dspi.h:993
void(* dspi_master_transfer_callback_t)(SPI_Type *base, dspi_master_handle_t *handle, status_t status, void *userData)
Completion callback function pointer type.
Definition: fsl_dspi.h:328
dspi_slave_transfer_callback_t callback
Definition: fsl_dspi.h:398
DSPI master config structure.
Definition: fsl_dspi.h:264
dspi_clock_polarity_t
DSPI clock polarity configuration for a given CTAR.
Definition: fsl_dspi.h:146
void DSPI_SlaveTransferHandleIRQ(SPI_Type *base, dspi_slave_handle_t *handle)
DSPI Master IRQ handler function.
Definition: fsl_dspi.c:1430
uint32_t baudRate
Definition: fsl_dspi.h:248
static uint32_t DSPI_MasterGetTxRegisterAddress(SPI_Type *base)
Gets the DSPI master PUSHR data register address for the DMA operation.
Definition: fsl_dspi.h:646
Definition: fsl_dspi.h:201
Definition: fsl_dspi.h:78
Definition: fsl_dspi.h:202
Definition: fsl_dspi.h:56
Definition: fsl_dspi.h:110
Definition: fsl_dspi.h:231
uint8_t fifoSize
Definition: fsl_dspi.h:365
Definition: fsl_dspi.h:182
volatile size_t remainingReceiveByteCount
Definition: fsl_dspi.h:373
Definition: fsl_dspi.h:206
bool enableModifiedTimingFormat
Definition: fsl_dspi.h:279
Definition: fsl_dspi.h:187
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
Definition: fsl_dspi.h:138
Definition: fsl_dspi.h:93
uint32_t DSPI_MasterSetBaudRate(SPI_Type *base, dspi_ctar_selection_t whichCtar, uint32_t baudRate_Bps, uint32_t srcClock_Hz)
Sets the DSPI baud rate in bits per second.
Definition: fsl_dspi.c:296
static void DSPI_SetMasterSlaveMode(SPI_Type *base, dspi_master_slave_mode_t mode)
Configures the DSPI for master or slave.
Definition: fsl_dspi.h:692
Definition: fsl_dspi.h:185
Definition: fsl_dspi.h:68
volatile uint32_t command
Definition: fsl_dspi.h:362
_dspi_transfer_state
DSPI transfer state, which is used for DSPI transactiaonl APIs&#39; state machine.
Definition: fsl_dspi.h:227
bool enableRxFifoOverWrite
Definition: fsl_dspi.h:274
Definition: fsl_dspi.h:83
uint8_t *volatile txData
Definition: fsl_dspi.h:370