Kinetis Bootloader  2.0.0
Common bootloader for Kinetis devices
fsl_lpspi.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_LPSPI_H_
31 #define _FSL_LPSPI_H_
32 
33 #include "fsl_common.h"
34 
40 /**********************************************************************************************************************
41  * Definitions
42  *********************************************************************************************************************/
43 
45 #define FSL_LPSPI_DRIVER_VERSION (MAKE_VERSION(2, 0, 0))
48 #define LPSPI_MASTER_DUMMY_DATA (0x00U)
49 #define LPSPI_SLAVE_DUMMY_DATA (0x00U)
52 enum _lpspi_status
53 {
58 };
59 
62 {
63  kLPSPI_TxDataRequestFlag = LPSPI_SR_TDF_MASK,
64  kLPSPI_RxDataReadyFlag = LPSPI_SR_RDF_MASK,
65  kLPSPI_WordCompleteFlag = LPSPI_SR_WCF_MASK,
66  kLPSPI_FrameCompleteFlag = LPSPI_SR_FCF_MASK,
67  kLPSPI_TransferCompleteFlag = LPSPI_SR_TCF_MASK,
68  kLPSPI_TransmitErrorFlag = LPSPI_SR_TEF_MASK,
69  kLPSPI_ReceiveErrorFlag = LPSPI_SR_REF_MASK,
70  kLPSPI_DataMatchFlag = LPSPI_SR_DMF_MASK,
71  kLPSPI_ModuleBusyFlag = LPSPI_SR_MBF_MASK,
72  kLPSPI_AllStatusFlag = (LPSPI_SR_TDF_MASK | LPSPI_SR_RDF_MASK | LPSPI_SR_WCF_MASK | LPSPI_SR_FCF_MASK |
73  LPSPI_SR_TCF_MASK | LPSPI_SR_TEF_MASK | LPSPI_SR_REF_MASK | LPSPI_SR_DMF_MASK |
74  LPSPI_SR_MBF_MASK)
75 };
76 
79 {
80  kLPSPI_TxInterruptEnable = LPSPI_IER_TDIE_MASK,
81  kLPSPI_RxInterruptEnable = LPSPI_IER_RDIE_MASK,
82  kLPSPI_WordCompleteInterruptEnable = LPSPI_IER_WCIE_MASK,
83  kLPSPI_FrameCompleteInterruptEnable = LPSPI_IER_FCIE_MASK,
85  kLPSPI_TransmitErrorInterruptEnable = LPSPI_IER_TEIE_MASK,
86  kLPSPI_ReceiveErrorInterruptEnable = LPSPI_IER_REIE_MASK,
87  kLPSPI_DataMatchInterruptEnable = LPSPI_IER_DMIE_MASK,
89  (LPSPI_IER_TDIE_MASK | LPSPI_IER_RDIE_MASK | LPSPI_IER_WCIE_MASK | LPSPI_IER_FCIE_MASK | LPSPI_IER_TCIE_MASK |
90  LPSPI_IER_TEIE_MASK | LPSPI_IER_REIE_MASK | LPSPI_IER_DMIE_MASK)
91 };
92 
95 {
96  kLPSPI_TxDmaEnable = LPSPI_DER_TDDE_MASK,
97  kLPSPI_RxDmaEnable = LPSPI_DER_RDDE_MASK
98 };
99 
101 typedef enum _lpspi_master_slave_mode
102 {
106 
108 typedef enum _lpspi_which_pcs_config
109 {
110  kLPSPI_Pcs0 = 0U,
111  kLPSPI_Pcs1 = 1U,
112  kLPSPI_Pcs2 = 2U,
115 
117 typedef enum _lpspi_pcs_polarity_config
118 {
122 
125 {
131 };
132 
134 typedef enum _lpspi_clock_polarity
135 {
139 
141 typedef enum _lpspi_clock_phase
142 {
148 
150 typedef enum _lpspi_shift_direction
151 {
155 
157 typedef enum _lpspi_host_request_select
158 {
162 
164 typedef enum _lpspi_match_config
165 {
174 
176 typedef enum _lpspi_pin_config
177 {
183 
185 typedef enum _lpspi_data_out_config
186 {
190 
192 typedef enum _lpspi_transfer_width
193 {
198 
200 typedef enum _lpspi_delay_type
201 {
206 
207 #define LPSPI_MASTER_PCS_SHIFT (4U)
208 #define LPSPI_MASTER_PCS_MASK (0xF0U)
211 enum _lpspi_transfer_config_flag_for_master
212 {
213  kLPSPI_MasterPcs0 = 0U << LPSPI_MASTER_PCS_SHIFT,
214  kLPSPI_MasterPcs1 = 1U << LPSPI_MASTER_PCS_SHIFT,
215  kLPSPI_MasterPcs2 = 2U << LPSPI_MASTER_PCS_SHIFT,
216  kLPSPI_MasterPcs3 = 3U << LPSPI_MASTER_PCS_SHIFT,
229 };
230 
231 #define LPSPI_SLAVE_PCS_SHIFT (4U)
232 #define LPSPI_SLAVE_PCS_MASK (0xF0U)
235 enum _lpspi_transfer_config_flag_for_slave
236 {
237  kLPSPI_SlavePcs0 = 0U << LPSPI_SLAVE_PCS_SHIFT,
238  kLPSPI_SlavePcs1 = 1U << LPSPI_SLAVE_PCS_SHIFT,
239  kLPSPI_SlavePcs2 = 2U << LPSPI_SLAVE_PCS_SHIFT,
240  kLPSPI_SlavePcs3 = 3U << LPSPI_SLAVE_PCS_SHIFT,
251 };
252 
255 {
256  kLPSPI_Idle = 0x0U,
259 };
260 
262 typedef struct _lpspi_master_config
263 {
264  uint32_t baudRate;
265  uint32_t bitsPerFrame;
287 
289 typedef struct _lpspi_slave_config
290 {
291  uint32_t bitsPerFrame;
305 
309 typedef struct _lpspi_master_handle lpspi_master_handle_t;
310 
314 typedef struct _lpspi_slave_handle lpspi_slave_handle_t;
315 
324 typedef void (*lpspi_master_transfer_callback_t)(LPSPI_Type *base,
325  lpspi_master_handle_t *handle,
326  status_t status,
327  void *userData);
328 
337 typedef void (*lpspi_slave_transfer_callback_t)(LPSPI_Type *base,
338  lpspi_slave_handle_t *handle,
339  status_t status,
340  void *userData);
341 
343 typedef struct _lpspi_transfer
344 {
345  uint8_t *txData;
346  uint8_t *rxData;
347  volatile size_t dataSize;
349  uint32_t configFlags;
353 
356 {
357  LPSPI_Type *base;
359  volatile bool isPcsContinuous;
360  volatile bool writeTcrInIsr;
362  volatile bool isByteSwap;
364  volatile uint8_t fifoSize;
366  volatile uint8_t rxWatermark;
368  volatile uint8_t bytesEachWrite;
369  volatile uint8_t bytesEachRead;
371  uint8_t *volatile txData;
372  uint8_t *volatile rxData;
373  volatile size_t txRemainingByteCount;
374  volatile size_t rxRemainingByteCount;
376  volatile uint32_t writeRegRemainingTimes;
377  volatile uint32_t readRegRemainingTimes;
379  uint32_t totalByteCount;
381  uint32_t txBuffIfNull;
383  volatile uint8_t state;
386  void *userData;
387 };
388 
391 {
392  LPSPI_Type *base;
394  volatile bool isByteSwap;
396  volatile uint8_t fifoSize;
398  volatile uint8_t rxWatermark;
400  volatile uint8_t bytesEachWrite;
401  volatile uint8_t bytesEachRead;
403  uint8_t *volatile txData;
404  uint8_t *volatile rxData;
406  volatile size_t txRemainingByteCount;
407  volatile size_t rxRemainingByteCount;
409  volatile uint32_t writeRegRemainingTimes;
410  volatile uint32_t readRegRemainingTimes;
412  uint32_t totalByteCount;
414  volatile uint8_t state;
416  volatile uint32_t errorCount;
419  void *userData;
420 };
421 
422 /**********************************************************************************************************************
423  * API
424  *********************************************************************************************************************/
425 #if defined(__cplusplus)
426 extern "C" {
427 #endif /*_cplusplus*/
428 
441 void LPSPI_MasterInit(LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz);
442 
457 
464 void LPSPI_SlaveInit(LPSPI_Type *base, const lpspi_slave_config_t *slaveConfig);
465 
480 
485 void LPSPI_Deinit(LPSPI_Type *base);
486 
493 void LPSPI_Reset(LPSPI_Type *base);
494 
501 static inline void LPSPI_Enable(LPSPI_Type *base, bool enable)
502 {
503  if (enable)
504  {
505  base->CR |= LPSPI_CR_MEN_MASK;
506  }
507  else
508  {
509  base->CR &= ~LPSPI_CR_MEN_MASK;
510  }
511 }
512 
527 static inline uint32_t LPSPI_GetStatusFlags(LPSPI_Type *base)
528 {
529  return (base->SR);
530 }
531 
537 static inline uint32_t LPSPI_GetTxFifoSize(LPSPI_Type *base)
538 {
539  return (1U << ((base->PARAM & LPSPI_PARAM_TXFIFO_MASK) >> LPSPI_PARAM_TXFIFO_SHIFT));
540 }
541 
547 static inline uint32_t LPSPI_GetRxFifoSize(LPSPI_Type *base)
548 {
549  return (1U << ((base->PARAM & LPSPI_PARAM_RXFIFO_MASK) >> LPSPI_PARAM_RXFIFO_SHIFT));
550 }
551 
557 static inline uint32_t LPSPI_GetTxFifoCount(LPSPI_Type *base)
558 {
559  return ((base->FSR & LPSPI_FSR_TXCOUNT_MASK) >> LPSPI_FSR_TXCOUNT_SHIFT);
560 }
561 
567 static inline uint32_t LPSPI_GetRxFifoCount(LPSPI_Type *base)
568 {
569  return ((base->FSR & LPSPI_FSR_RXCOUNT_MASK) >> LPSPI_FSR_RXCOUNT_SHIFT);
570 }
571 
585 static inline void LPSPI_ClearStatusFlags(LPSPI_Type *base, uint32_t statusFlags)
586 {
587  base->SR = statusFlags;
588 }
589 
612 static inline void LPSPI_EnableInterrupts(LPSPI_Type *base, uint32_t mask)
613 {
614  base->IER |= mask;
615 }
616 
627 static inline void LPSPI_DisableInterrupts(LPSPI_Type *base, uint32_t mask)
628 {
629  base->IER &= ~mask;
630 }
631 
652 static inline void LPSPI_EnableDMA(LPSPI_Type *base, uint32_t mask)
653 {
654  base->DER |= mask;
655 }
656 
668 static inline void LPSPI_DisableDMA(LPSPI_Type *base, uint32_t mask)
669 {
670  base->DER &= ~mask;
671 }
672 
683 static inline uint32_t LPSPI_GetTxRegisterAddress(LPSPI_Type *base)
684 {
685  return (uint32_t) & (base->TDR);
686 }
687 
698 static inline uint32_t LPSPI_GetRxRegisterAddress(LPSPI_Type *base)
699 {
700  return (uint32_t) & (base->RDR);
701 }
702 
720 static inline void LPSPI_SetMasterSlaveMode(LPSPI_Type *base, lpspi_master_slave_mode_t mode)
721 {
722  base->CFGR1 = (base->CFGR1 & (~LPSPI_CFGR1_MASTER_MASK)) | LPSPI_CFGR1_MASTER(mode);
723 }
724 
731 static inline bool LPSPI_IsMaster(LPSPI_Type *base)
732 {
733  return (bool)((base->CFGR1) & LPSPI_CFGR1_MASTER_MASK);
734 }
735 
743 static inline void LPSPI_FlushFifo(LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
744 {
745  base->CR |= ((uint32_t)flushTxFifo << LPSPI_CR_RTF_SHIFT) | ((uint32_t)flushRxFifo << LPSPI_CR_RRF_SHIFT);
746 }
747 
759 static inline void LPSPI_SetFifoWatermarks(LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
760 {
761  base->FCR = LPSPI_FCR_TXWATER(txWater) | LPSPI_FCR_RXWATER(rxWater);
762 }
763 
778 static inline void LPSPI_SetAllPcsPolarity(LPSPI_Type *base, uint32_t mask)
779 {
780  base->CFGR1 = (base->CFGR1 & ~LPSPI_CFGR1_PCSPOL_MASK) | LPSPI_CFGR1_PCSPOL(~mask);
781 }
782 
801 static inline void LPSPI_SetFrameSize(LPSPI_Type *base, uint32_t frameSize)
802 {
803  base->TCR = (base->TCR & ~LPSPI_TCR_FRAMESZ_MASK) | LPSPI_TCR_FRAMESZ(frameSize - 1);
804 }
805 
829 uint32_t LPSPI_MasterSetBaudRate(LPSPI_Type *base,
830  uint32_t baudRate_Bps,
831  uint32_t srcClock_Hz,
832  uint32_t *tcrPrescaleValue);
833 
856 void LPSPI_MasterSetDelayScaler(LPSPI_Type *base, uint32_t scaler, lpspi_delay_type_t whichDelay);
857 
886 uint32_t LPSPI_MasterSetDelayTimes(LPSPI_Type *base,
887  uint32_t delayTimeInNanoSec,
888  lpspi_delay_type_t whichDelay,
889  uint32_t srcClock_Hz);
890 
903 static inline void LPSPI_WriteDataNonBlocking(LPSPI_Type *base, uint32_t data)
904 {
905  base->TDR = data;
906 }
907 
917 static inline uint32_t LPSPI_ReadDataNonBlocking(LPSPI_Type *base)
918 {
919  return (base->RDR);
920 }
921 
938 status_t LPSPI_MasterTransferBlocking(LPSPI_Type *base, lpspi_transfer_t *transfer);
939 
948 /*Transactional APIs*/
949 
961 void LPSPI_MasterCreateHandle(LPSPI_Type *base,
962  lpspi_master_handle_t *handle,
964  void *userData);
965 
983 status_t LPSPI_MasterTransferNonBlocking(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer);
984 
995 status_t LPSPI_MasterGetTransferCount(LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count);
996 
1005 void LPSPI_MasterAbortTransfer(LPSPI_Type *base, lpspi_master_handle_t *handle);
1006 
1015 void LPSPI_MasterHandleInterrupt(LPSPI_Type *base, lpspi_master_handle_t *handle);
1016 
1028 void LPSPI_SlaveCreateHandle(LPSPI_Type *base,
1029  lpspi_slave_handle_t *handle,
1031  void *userData);
1032 
1050 status_t LPSPI_SlaveTransferNonBlocking(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_transfer_t *transfer);
1051 
1062 status_t LPSPI_SlaveGetTransferCount(LPSPI_Type *base, lpspi_slave_handle_t *handle, size_t *count);
1063 
1072 void LPSPI_SlaveAbortTransfer(LPSPI_Type *base, lpspi_slave_handle_t *handle);
1073 
1082 void LPSPI_SlaveHandleInterrupt(LPSPI_Type *base, lpspi_slave_handle_t *handle);
1083 
1088 #if defined(__cplusplus)
1089 }
1090 #endif /*_cplusplus*/
1091 
1095 #endif /*_FSL_LPSPI_H_*/
Definition: fsl_lpspi.h:171
uint32_t LPSPI_MasterSetDelayTimes(LPSPI_Type *base, uint32_t delayTimeInNanoSec, lpspi_delay_type_t whichDelay, uint32_t srcClock_Hz)
Calculates the delay based on the desired delay input in nanoseconds (module must be disabled to chan...
Definition: fsl_lpspi.c:391
Definition: fsl_lpspi.h:88
status_t LPSPI_MasterTransferBlocking(LPSPI_Type *base, lpspi_transfer_t *transfer)
LPSPI master transfer data using polling.
Definition: fsl_lpspi.c:493
Definition: fsl_lpspi.h:85
volatile size_t dataSize
Definition: fsl_lpspi.h:347
Definition: fsl_lpspi.h:57
Definition: fsl_lpspi.h:172
Definition: fsl_lpspi.h:180
lpspi_delay_type_t
LPSPI delay type selection.
Definition: fsl_lpspi.h:200
lpspi_clock_polarity_t
LPSPI clock polarity configuration.
Definition: fsl_lpspi.h:134
Definition: fsl_lpspi.h:196
lpspi_transfer_width_t
LPSPI transfer width configuration.
Definition: fsl_lpspi.h:192
Definition: fsl_lpspi.h:129
Definition: fsl_lpspi.h:126
volatile uint32_t errorCount
Definition: fsl_lpspi.h:416
status_t LPSPI_SlaveTransferNonBlocking(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI slave transfer data using interrupt.
Definition: fsl_lpspi.c:1088
static void LPSPI_EnableDMA(LPSPI_Type *base, uint32_t mask)
Enable the LPSPI DMA request.
Definition: fsl_lpspi.h:652
uint8_t *volatile rxData
Definition: fsl_lpspi.h:372
lpspi_pcs_polarity_config_t pcsActiveHighOrLow
Definition: fsl_lpspi.h:278
Definition: fsl_lpspi.h:83
uint8_t * txData
Definition: fsl_lpspi.h:345
Definition: fsl_lpspi.h:195
void LPSPI_Reset(LPSPI_Type *base)
Restores the LPSPI peripheral to reset state, notice that this function will set all the registers to...
Definition: fsl_lpspi.c:264
uint32_t totalByteCount
Definition: fsl_lpspi.h:379
Definition: fsl_lpspi.h:159
void LPSPI_SlaveHandleInterrupt(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI Slave IRQ handler function.
Definition: fsl_lpspi.c:1360
lpspi_clock_polarity_t cpol
Definition: fsl_lpspi.h:266
Definition: fsl_lpspi.h:152
Definition: fsl_lpspi.h:63
uint32_t lastSckToPcsDelayInNanoSec
Definition: fsl_lpspi.h:272
Definition: fsl_lpspi.h:103
Definition: fsl_lpspi.h:181
Definition: fsl_lpspi.h:80
Definition: fsl_lpspi.h:111
lpspi_shift_direction_t direction
Definition: fsl_lpspi.h:268
Definition: fsl_lpspi.h:128
Definition: fsl_lpspi.h:137
lpspi_host_request_select_t
LPSPI Host Request select configuration.
Definition: fsl_lpspi.h:157
static void LPSPI_SetFrameSize(LPSPI_Type *base, uint32_t frameSize)
Configures the frame size .
Definition: fsl_lpspi.h:801
_lpspi_transfer_state
LPSPI transfer state, which is used for LPSPI transactiaonl APIs&#39; state machine.
Definition: fsl_lpspi.h:254
uint32_t baudRate
Definition: fsl_lpspi.h:264
LPSPI slave config structure.
Definition: fsl_lpspi.h:289
static uint32_t LPSPI_ReadDataNonBlocking(LPSPI_Type *base)
Reads data from the data buffer.
Definition: fsl_lpspi.h:917
Definition: fsl_lpspi.h:239
Definition: fsl_lpspi.h:110
void LPSPI_MasterAbortTransfer(LPSPI_Type *base, lpspi_master_handle_t *handle)
LPSPI master abort transfer which using interrupt.
Definition: fsl_lpspi.c:965
void LPSPI_MasterSetDelayScaler(LPSPI_Type *base, uint32_t scaler, lpspi_delay_type_t whichDelay)
Manually configures a specific LPSPI delay parameter (module must be disabled to change the delay val...
Definition: fsl_lpspi.c:369
uint32_t betweenTransferDelayInNanoSec
Definition: fsl_lpspi.h:274
LPSPI master config structure.
Definition: fsl_lpspi.h:262
Definition: fsl_lpspi.h:237
Definition: fsl_lpspi.h:256
Definition: fsl_lpspi.h:113
lpspi_master_transfer_callback_t callback
Definition: fsl_lpspi.h:385
Definition: fsl_lpspi.h:218
Definition: fsl_lpspi.h:136
volatile size_t rxRemainingByteCount
Definition: fsl_lpspi.h:374
Definition: fsl_lpspi.h:257
static void LPSPI_FlushFifo(LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
Flushes the LPSPI FIFOs.
Definition: fsl_lpspi.h:743
static bool LPSPI_IsMaster(LPSPI_Type *base)
Returns whether the LPSPI module is in master mode.
Definition: fsl_lpspi.h:731
volatile uint8_t bytesEachRead
Definition: fsl_lpspi.h:369
void LPSPI_SlaveCreateHandle(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_slave_transfer_callback_t callback, void *userData)
Initialize the lpspi slave handle.
Definition: fsl_lpspi.c:1069
volatile uint32_t writeRegRemainingTimes
Definition: fsl_lpspi.h:376
volatile uint8_t bytesEachWrite
Definition: fsl_lpspi.h:368
uint32_t txBuffIfNull
Definition: fsl_lpspi.h:381
void LPSPI_SlaveInit(LPSPI_Type *base, const lpspi_slave_config_t *slaveConfig)
LPSPI slave configuration.
Definition: fsl_lpspi.c:227
lpspi_pcs_polarity_config_t
LPSPI Peripheral Chip Select (Pcs) Polarity configuration.
Definition: fsl_lpspi.h:117
Definition: fsl_lpspi.h:104
_lpspi_flags
LPSPI status flags in SPIx_SR register.
Definition: fsl_lpspi.h:61
Definition: fsl_lpspi.h:72
void LPSPI_MasterCreateHandle(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_master_transfer_callback_t callback, void *userData)
Initialize the lpspi master handle.
Definition: fsl_lpspi.c:673
Definition: fsl_lpspi.h:143
Definition: fsl_lpspi.h:167
Definition: fsl_lpspi.h:96
_lpspi_pcs_polarity
LPSPI Peripheral Chip Select (Pcs) Polarity.
Definition: fsl_lpspi.h:124
static void LPSPI_ClearStatusFlags(LPSPI_Type *base, uint32_t statusFlags)
Clears the LPSPI status flag.
Definition: fsl_lpspi.h:585
Definition: fsl_lpspi.h:81
Definition: fsl_lpspi.h:97
Definition: fsl_lpspi.h:54
static uint32_t LPSPI_GetTxRegisterAddress(LPSPI_Type *base)
Gets the LPSPI Transmit Data Register address for DMA operation.
Definition: fsl_lpspi.h:683
volatile bool writeTcrInIsr
Definition: fsl_lpspi.h:360
uint32_t configFlags
Definition: fsl_lpspi.h:349
Definition: fsl_lpspi.h:64
Definition: fsl_lpspi.h:70
lpspi_shift_direction_t
LPSPI data shifter direction options.
Definition: fsl_lpspi.h:150
status_t LPSPI_MasterTransferNonBlocking(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer)
LPSPI master transfer data using interrupt.
Definition: fsl_lpspi.c:692
_lpspi_interrupt_enable
LPSPI interrupt source.
Definition: fsl_lpspi.h:78
Definition: fsl_lpspi.h:130
Definition: fsl_lpspi.h:194
Definition: fsl_lpspi.h:160
void(* lpspi_master_transfer_callback_t)(LPSPI_Type *base, lpspi_master_handle_t *handle, status_t status, void *userData)
Master completion callback function pointer type.
Definition: fsl_lpspi.h:324
lpspi_master_slave_mode_t
LPSPI master or slave mode configuration.
Definition: fsl_lpspi.h:101
Definition: fsl_lpspi.h:214
lpspi_which_pcs_t
LPSPI Peripheral Chip Select (Pcs) configuration (which Pcs to configure).
Definition: fsl_lpspi.h:108
static void LPSPI_DisableInterrupts(LPSPI_Type *base, uint32_t mask)
Disable the LPSPI interrupts.
Definition: fsl_lpspi.h:627
uint8_t * rxData
Definition: fsl_lpspi.h:346
Definition: fsl_lpspi.h:166
uint32_t bitsPerFrame
Definition: fsl_lpspi.h:265
Definition: fsl_lpspi.h:68
LPSPI master/slave transfer structure.
Definition: fsl_lpspi.h:343
uint32_t pcsToSckDelayInNanoSec
Definition: fsl_lpspi.h:270
Definition: fsl_lpspi.h:240
uint32_t LPSPI_MasterSetBaudRate(LPSPI_Type *base, uint32_t baudRate_Bps, uint32_t srcClock_Hz, uint32_t *tcrPrescaleValue)
Sets the LPSPI baud rate in bits per second.
Definition: fsl_lpspi.c:297
status_t LPSPI_MasterGetTransferCount(LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count)
Get the master transfer remaining bytes.
Definition: fsl_lpspi.c:933
lpspi_data_out_config_t
LPSPI data output configuration.
Definition: fsl_lpspi.h:185
uint8_t *volatile txData
Definition: fsl_lpspi.h:371
static void LPSPI_WriteDataNonBlocking(LPSPI_Type *base, uint32_t data)
Writes data into the transmit data buffer.
Definition: fsl_lpspi.h:903
lpspi_clock_phase_t
LPSPI clock phase configuration.
Definition: fsl_lpspi.h:141
Definition: fsl_lpspi.h:170
Definition: fsl_lpspi.h:203
Definition: fsl_lpspi.h:258
Definition: fsl_lpspi.h:67
static uint32_t LPSPI_GetTxFifoSize(LPSPI_Type *base)
Gets the LPSPI Tx FIFO size.
Definition: fsl_lpspi.h:537
Definition: fsl_lpspi.h:238
static uint32_t LPSPI_GetStatusFlags(LPSPI_Type *base)
Gets the LPSPI status flag state.
Definition: fsl_lpspi.h:527
Definition: fsl_lpspi.h:84
Definition: fsl_lpspi.h:145
Definition: fsl_lpspi.h:204
Definition: fsl_lpspi.h:153
Definition: fsl_lpspi.h:86
void LPSPI_MasterInit(LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
LPSPI master Init.
Definition: fsl_lpspi.c:169
Definition: fsl_lpspi.h:55
Definition: fsl_lpspi.h:71
void LPSPI_MasterGetDefaultConfig(lpspi_master_config_t *masterConfig)
Set the lpspi_master_config_t structure to default values.
Definition: fsl_lpspi.c:208
Definition: fsl_lpspi.h:112
Definition: fsl_lpspi.h:82
void LPSPI_SlaveAbortTransfer(LPSPI_Type *base, lpspi_slave_handle_t *handle)
LPSPI slave abort transfer which using interrupt.
Definition: fsl_lpspi.c:1350
static uint32_t LPSPI_GetRxFifoCount(LPSPI_Type *base)
Gets the LPSPI Rx FIFO count.
Definition: fsl_lpspi.h:567
Definition: fsl_lpspi.h:220
lpspi_match_config_t
LPSPI Match configuration options.
Definition: fsl_lpspi.h:164
void LPSPI_MasterHandleInterrupt(LPSPI_Type *base, lpspi_master_handle_t *handle)
LPSPI Master IRQ handler function.
Definition: fsl_lpspi.c:973
Definition: fsl_lpspi.h:169
Definition: fsl_lpspi.h:216
LPSPI master transfer handle structure used for transactional API.
Definition: fsl_lpspi.h:355
lpspi_pin_config_t
LPSPI pin (SDO and SDI) configuration.
Definition: fsl_lpspi.h:176
lpspi_which_pcs_t whichPcs
Definition: fsl_lpspi.h:277
static uint32_t LPSPI_GetTxFifoCount(LPSPI_Type *base)
Gets the LPSPI Tx FIFO count.
Definition: fsl_lpspi.h:557
Definition: fsl_lpspi.h:215
volatile bool isByteSwap
Definition: fsl_lpspi.h:362
static void LPSPI_EnableInterrupts(LPSPI_Type *base, uint32_t mask)
Enable the LPSPI interrupts.
Definition: fsl_lpspi.h:612
static void LPSPI_DisableDMA(LPSPI_Type *base, uint32_t mask)
Disable the LPSPI DMA request.
Definition: fsl_lpspi.h:668
Definition: fsl_lpspi.h:65
volatile size_t txRemainingByteCount
Definition: fsl_lpspi.h:373
static void LPSPI_SetFifoWatermarks(LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
Sets the transmit and receive FIFO watermark values.
Definition: fsl_lpspi.h:759
lpspi_pin_config_t pinCfg
Definition: fsl_lpspi.h:280
Definition: fsl_lpspi.h:188
void LPSPI_SlaveGetDefaultConfig(lpspi_slave_config_t *slaveConfig)
Set the lpspi_slave_config_t structure to default values.
Definition: fsl_lpspi.c:250
volatile uint8_t state
Definition: fsl_lpspi.h:383
Definition: fsl_lpspi.h:168
Definition: fsl_lpspi.h:69
LPSPI_Type * base
Definition: fsl_lpspi.h:392
LPSPI slave transfer handle structure used for transactional API.
Definition: fsl_lpspi.h:390
volatile uint32_t readRegRemainingTimes
Definition: fsl_lpspi.h:377
static uint32_t LPSPI_GetRxFifoSize(LPSPI_Type *base)
Gets the LPSPI Rx FIFO size.
Definition: fsl_lpspi.h:547
status_t LPSPI_SlaveGetTransferCount(LPSPI_Type *base, lpspi_slave_handle_t *handle, size_t *count)
Get the slave transfer remaining bytes.
Definition: fsl_lpspi.c:1318
Definition: fsl_lpspi.h:56
Definition: fsl_lpspi.h:178
volatile uint8_t rxWatermark
Definition: fsl_lpspi.h:366
static void LPSPI_Enable(LPSPI_Type *base, bool enable)
Enables the LPSPI peripheral and sets the MCR MDIS to 0.
Definition: fsl_lpspi.h:501
lpspi_slave_transfer_callback_t callback
Definition: fsl_lpspi.h:418
void * userData
Definition: fsl_lpspi.h:419
Definition: fsl_lpspi.h:119
lpspi_data_out_config_t dataOutConfig
Definition: fsl_lpspi.h:283
void(* lpspi_slave_transfer_callback_t)(LPSPI_Type *base, lpspi_slave_handle_t *handle, status_t status, void *userData)
Slave completion callback function pointer type.
Definition: fsl_lpspi.h:337
static uint32_t LPSPI_GetRxRegisterAddress(LPSPI_Type *base)
Gets the LPSPI Receive Data Register address for DMA operation.
Definition: fsl_lpspi.h:698
volatile bool isPcsContinuous
Definition: fsl_lpspi.h:359
Definition: fsl_lpspi.h:179
_lpspi_dma_enable
LPSPI DMA source.
Definition: fsl_lpspi.h:94
Definition: fsl_lpspi.h:187
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:121
void LPSPI_Deinit(LPSPI_Type *base)
De-initialize the LPSPI peripheral, call this API to disbale the lpspi clock.
Definition: fsl_lpspi.c:276
Definition: fsl_lpspi.h:213
Definition: fsl_lpspi.h:127
volatile uint8_t fifoSize
Definition: fsl_lpspi.h:364
static void LPSPI_SetMasterSlaveMode(LPSPI_Type *base, lpspi_master_slave_mode_t mode)
Configures the LPSPI for master or slave.
Definition: fsl_lpspi.h:720
Definition: fsl_common.h:69
Definition: fsl_lpspi.h:66
Definition: fsl_lpspi.h:120
Definition: fsl_lpspi.h:202
Definition: fsl_lpspi.h:242
static void LPSPI_SetAllPcsPolarity(LPSPI_Type *base, uint32_t mask)
Configures all the LPSPI peripheral chip select polarity simultaneously.
Definition: fsl_lpspi.h:778
lpspi_clock_phase_t cpha
Definition: fsl_lpspi.h:267
Definition: fsl_lpspi.h:87