NetBurner 3.5.7
PDF Version
fsl_lpspi.h
1/*
2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
3 * Copyright 2016-2022 NXP
4 * All rights reserved.
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8#ifndef _FSL_LPSPI_H_
9#define _FSL_LPSPI_H_
10
11#include <fsl_common.h>
12
15/*
16 * @addtogroup lpspi_driver
17 * @{
18 */
19
20/**********************************************************************************************************************
21 * Definitions
22 *********************************************************************************************************************/
23
27#define FSL_LPSPI_DRIVER_VERSION (MAKE_VERSION(2, 4, 0))
30#ifndef LPSPI_DUMMY_DATA
32#define LPSPI_DUMMY_DATA (0x00U)
33#endif
34
36#ifndef SPI_RETRY_TIMES
37#define SPI_RETRY_TIMES 0U /* Define to zero means keep waiting until the flag is assert/deassert. */
38#endif
39
41extern volatile uint8_t g_lpspiDummyData[];
42
44enum
45{
46 kStatus_LPSPI_Busy = MAKE_STATUS(kStatusGroup_LPSPI, 0),
47 kStatus_LPSPI_Error = MAKE_STATUS(kStatusGroup_LPSPI, 1),
48 kStatus_LPSPI_Idle = MAKE_STATUS(kStatusGroup_LPSPI, 2),
49 kStatus_LPSPI_OutOfRange = MAKE_STATUS(kStatusGroup_LPSPI, 3),
50 kStatus_LPSPI_Timeout = MAKE_STATUS(kStatusGroup_LPSPI, 4)
51};
52
54enum _lpspi_flags
55{
56 kLPSPI_TxDataRequestFlag = LPSPI_SR_TDF_MASK,
57 kLPSPI_RxDataReadyFlag = LPSPI_SR_RDF_MASK,
58 kLPSPI_WordCompleteFlag = LPSPI_SR_WCF_MASK,
59 kLPSPI_FrameCompleteFlag = LPSPI_SR_FCF_MASK,
60 kLPSPI_TransferCompleteFlag = LPSPI_SR_TCF_MASK,
61 kLPSPI_TransmitErrorFlag = LPSPI_SR_TEF_MASK,
62 kLPSPI_ReceiveErrorFlag = LPSPI_SR_REF_MASK,
63 kLPSPI_DataMatchFlag = LPSPI_SR_DMF_MASK,
64 kLPSPI_ModuleBusyFlag = LPSPI_SR_MBF_MASK,
65 kLPSPI_AllStatusFlag = (LPSPI_SR_TDF_MASK | LPSPI_SR_RDF_MASK | LPSPI_SR_WCF_MASK | LPSPI_SR_FCF_MASK |
66 LPSPI_SR_TCF_MASK | LPSPI_SR_TEF_MASK | LPSPI_SR_REF_MASK | LPSPI_SR_DMF_MASK |
67 LPSPI_SR_MBF_MASK)
68};
69
71enum _lpspi_interrupt_enable
72{
73 kLPSPI_TxInterruptEnable = LPSPI_IER_TDIE_MASK,
74 kLPSPI_RxInterruptEnable = LPSPI_IER_RDIE_MASK,
75 kLPSPI_WordCompleteInterruptEnable = LPSPI_IER_WCIE_MASK,
76 kLPSPI_FrameCompleteInterruptEnable = LPSPI_IER_FCIE_MASK,
77 kLPSPI_TransferCompleteInterruptEnable = LPSPI_IER_TCIE_MASK,
78 kLPSPI_TransmitErrorInterruptEnable = LPSPI_IER_TEIE_MASK,
79 kLPSPI_ReceiveErrorInterruptEnable = LPSPI_IER_REIE_MASK,
80 kLPSPI_DataMatchInterruptEnable = LPSPI_IER_DMIE_MASK,
81 kLPSPI_AllInterruptEnable =
82 (LPSPI_IER_TDIE_MASK | LPSPI_IER_RDIE_MASK | LPSPI_IER_WCIE_MASK | LPSPI_IER_FCIE_MASK | LPSPI_IER_TCIE_MASK |
83 LPSPI_IER_TEIE_MASK | LPSPI_IER_REIE_MASK | LPSPI_IER_DMIE_MASK)
84};
85
87enum _lpspi_dma_enable
88{
89 kLPSPI_TxDmaEnable = LPSPI_DER_TDDE_MASK,
90 kLPSPI_RxDmaEnable = LPSPI_DER_RDDE_MASK
91};
92
94typedef enum _lpspi_master_slave_mode
95{
96 kLPSPI_Master = 1U,
97 kLPSPI_Slave = 0U
98} lpspi_master_slave_mode_t;
99
101typedef enum _lpspi_which_pcs_config
102{
103 kLPSPI_Pcs0 = 0U,
104 kLPSPI_Pcs1 = 1U,
105 kLPSPI_Pcs2 = 2U,
106 kLPSPI_Pcs3 = 3U
107} lpspi_which_pcs_t;
108
110typedef enum _lpspi_pcs_polarity_config
111{
112 kLPSPI_PcsActiveHigh = 1U,
113 kLPSPI_PcsActiveLow = 0U
114} lpspi_pcs_polarity_config_t;
115
117enum _lpspi_pcs_polarity
118{
119 kLPSPI_Pcs0ActiveLow = 1U << 0,
120 kLPSPI_Pcs1ActiveLow = 1U << 1,
121 kLPSPI_Pcs2ActiveLow = 1U << 2,
122 kLPSPI_Pcs3ActiveLow = 1U << 3,
123 kLPSPI_PcsAllActiveLow = 0xFU
124};
125
127typedef enum _lpspi_clock_polarity
128{
129 kLPSPI_ClockPolarityActiveHigh = 0U,
130 kLPSPI_ClockPolarityActiveLow = 1U
131} lpspi_clock_polarity_t;
132
134typedef enum _lpspi_clock_phase
135{
136 kLPSPI_ClockPhaseFirstEdge = 0U,
138 kLPSPI_ClockPhaseSecondEdge = 1U
140} lpspi_clock_phase_t;
141
143typedef enum _lpspi_shift_direction
144{
145 kLPSPI_MsbFirst = 0U,
146 kLPSPI_LsbFirst = 1U
147} lpspi_shift_direction_t;
148
150typedef enum _lpspi_host_request_select
151{
152 kLPSPI_HostReqExtPin = 0U,
153 kLPSPI_HostReqInternalTrigger = 1U
154} lpspi_host_request_select_t;
155
157typedef enum _lpspi_match_config
158{
159 kLPSI_MatchDisabled = 0x0U,
160 kLPSI_1stWordEqualsM0orM1 = 0x2U,
161 kLPSI_AnyWordEqualsM0orM1 = 0x3U,
162 kLPSI_1stWordEqualsM0and2ndWordEqualsM1 = 0x4U,
163 kLPSI_AnyWordEqualsM0andNxtWordEqualsM1 = 0x5U,
164 kLPSI_1stWordAndM1EqualsM0andM1 = 0x6U,
165 kLPSI_AnyWordAndM1EqualsM0andM1 = 0x7U,
166} lpspi_match_config_t;
167
169typedef enum _lpspi_pin_config
170{
171 kLPSPI_SdiInSdoOut = 0U,
172 kLPSPI_SdiInSdiOut = 1U,
173 kLPSPI_SdoInSdoOut = 2U,
174 kLPSPI_SdoInSdiOut = 3U
175} lpspi_pin_config_t;
176
178typedef enum _lpspi_data_out_config
179{
180 kLpspiDataOutRetained = 0U,
181 kLpspiDataOutTristate = 1U
182} lpspi_data_out_config_t;
183
185typedef enum _lpspi_transfer_width
186{
187 kLPSPI_SingleBitXfer = 0U,
188 kLPSPI_TwoBitXfer = 1U,
189 kLPSPI_FourBitXfer = 2U
190} lpspi_transfer_width_t;
191
193typedef enum _lpspi_delay_type
194{
195 kLPSPI_PcsToSck = 1U,
196 kLPSPI_LastSckToPcs,
197 kLPSPI_BetweenTransfer
198} lpspi_delay_type_t;
199
200#define LPSPI_MASTER_PCS_SHIFT (4U)
201#define LPSPI_MASTER_PCS_MASK (0xF0U)
204enum _lpspi_transfer_config_flag_for_master
205{
206 kLPSPI_MasterPcs0 = 0U << LPSPI_MASTER_PCS_SHIFT,
207 kLPSPI_MasterPcs1 = 1U << LPSPI_MASTER_PCS_SHIFT,
208 kLPSPI_MasterPcs2 = 2U << LPSPI_MASTER_PCS_SHIFT,
209 kLPSPI_MasterPcs3 = 3U << LPSPI_MASTER_PCS_SHIFT,
211 kLPSPI_MasterPcsContinuous = 1U << 20,
213 kLPSPI_MasterByteSwap =
214 1U << 22
226};
227
228#define LPSPI_SLAVE_PCS_SHIFT (4U)
229#define LPSPI_SLAVE_PCS_MASK (0xF0U)
232enum _lpspi_transfer_config_flag_for_slave
233{
234 kLPSPI_SlavePcs0 = 0U << LPSPI_SLAVE_PCS_SHIFT,
235 kLPSPI_SlavePcs1 = 1U << LPSPI_SLAVE_PCS_SHIFT,
236 kLPSPI_SlavePcs2 = 2U << LPSPI_SLAVE_PCS_SHIFT,
237 kLPSPI_SlavePcs3 = 3U << LPSPI_SLAVE_PCS_SHIFT,
239 kLPSPI_SlaveByteSwap =
240 1U << 22
252};
253
255enum _lpspi_transfer_state
256{
257 kLPSPI_Idle = 0x0U,
258 kLPSPI_Busy,
259 kLPSPI_Error
260};
261
264{
265 uint32_t baudRate;
266 uint32_t bitsPerFrame;
267 lpspi_clock_polarity_t cpol;
268 lpspi_clock_phase_t cpha;
269 lpspi_shift_direction_t direction;
278 lpspi_which_pcs_t whichPcs;
279 lpspi_pcs_polarity_config_t pcsActiveHighOrLow;
281 lpspi_pin_config_t pinCfg;
284 lpspi_data_out_config_t dataOutConfig;
289
292{
293 uint32_t bitsPerFrame;
294 lpspi_clock_polarity_t cpol;
295 lpspi_clock_phase_t cpha;
296 lpspi_shift_direction_t direction;
298 lpspi_which_pcs_t whichPcs;
299 lpspi_pcs_polarity_config_t pcsActiveHighOrLow;
301 lpspi_pin_config_t pinCfg;
304 lpspi_data_out_config_t dataOutConfig;
307
312
317
326typedef void (*lpspi_master_transfer_callback_t)(LPSPI_Type *base,
327 lpspi_master_handle_t *handle,
328 status_t status,
329 void *userData);
330
339typedef void (*lpspi_slave_transfer_callback_t)(LPSPI_Type *base,
340 lpspi_slave_handle_t *handle,
341 status_t status,
342 void *userData);
343
345typedef struct _lpspi_transfer
346{
347 uint8_t *txData;
348 uint8_t *rxData;
349 volatile size_t dataSize;
351 uint32_t configFlags;
355
358{
359 volatile bool isPcsContinuous;
360 volatile bool writeTcrInIsr;
362 volatile bool isByteSwap;
363 volatile bool isTxMask;
364 volatile uint16_t bytesPerFrame;
366 volatile uint8_t fifoSize;
368 volatile uint8_t rxWatermark;
370 volatile uint8_t bytesEachWrite;
371 volatile uint8_t bytesEachRead;
373 uint8_t *volatile txData;
374 uint8_t *volatile rxData;
375 volatile size_t txRemainingByteCount;
376 volatile size_t rxRemainingByteCount;
378 volatile uint32_t writeRegRemainingTimes;
379 volatile uint32_t readRegRemainingTimes;
381 uint32_t totalByteCount;
383 uint32_t txBuffIfNull;
385 volatile uint8_t state;
387 lpspi_master_transfer_callback_t callback;
388 void *userData;
389};
390
393{
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;
418 lpspi_slave_transfer_callback_t callback;
419 void *userData;
420};
421
422/**********************************************************************************************************************
423 * API
424 *********************************************************************************************************************/
425#if defined(__cplusplus)
426extern "C" {
427#endif /*_cplusplus*/
428
441void LPSPI_MasterInit(LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz);
442
456void LPSPI_MasterGetDefaultConfig(lpspi_master_config_t *masterConfig);
457
464void LPSPI_SlaveInit(LPSPI_Type *base, const lpspi_slave_config_t *slaveConfig);
465
479void LPSPI_SlaveGetDefaultConfig(lpspi_slave_config_t *slaveConfig);
480
485void LPSPI_Deinit(LPSPI_Type *base);
486
493void LPSPI_Reset(LPSPI_Type *base);
494
501uint32_t LPSPI_GetInstance(LPSPI_Type *base);
502
509static inline void LPSPI_Enable(LPSPI_Type *base, bool enable)
510{
511 if (enable)
512 {
513 base->CR |= LPSPI_CR_MEN_MASK;
514 }
515 else
516 {
517 base->CR &= ~LPSPI_CR_MEN_MASK;
518 }
519}
520
535static inline uint32_t LPSPI_GetStatusFlags(LPSPI_Type *base)
536{
537 return (base->SR);
538}
539
545static inline uint8_t LPSPI_GetTxFifoSize(LPSPI_Type *base)
546{
547 return (1U << ((base->PARAM & LPSPI_PARAM_TXFIFO_MASK) >> LPSPI_PARAM_TXFIFO_SHIFT));
548}
549
555static inline uint8_t LPSPI_GetRxFifoSize(LPSPI_Type *base)
556{
557 return (1U << ((base->PARAM & LPSPI_PARAM_RXFIFO_MASK) >> LPSPI_PARAM_RXFIFO_SHIFT));
558}
559
565static inline uint32_t LPSPI_GetTxFifoCount(LPSPI_Type *base)
566{
567 return ((base->FSR & LPSPI_FSR_TXCOUNT_MASK) >> LPSPI_FSR_TXCOUNT_SHIFT);
568}
569
575static inline uint32_t LPSPI_GetRxFifoCount(LPSPI_Type *base)
576{
577 return ((base->FSR & LPSPI_FSR_RXCOUNT_MASK) >> LPSPI_FSR_RXCOUNT_SHIFT);
578}
579
593static inline void LPSPI_ClearStatusFlags(LPSPI_Type *base, uint32_t statusFlags)
594{
595 base->SR = statusFlags;
596}
597
620static inline void LPSPI_EnableInterrupts(LPSPI_Type *base, uint32_t mask)
621{
622 base->IER |= mask;
623}
624
635static inline void LPSPI_DisableInterrupts(LPSPI_Type *base, uint32_t mask)
636{
637 base->IER &= ~mask;
638}
639
660static inline void LPSPI_EnableDMA(LPSPI_Type *base, uint32_t mask)
661{
662 base->DER |= mask;
663}
664
676static inline void LPSPI_DisableDMA(LPSPI_Type *base, uint32_t mask)
677{
678 base->DER &= ~mask;
679}
680
691static inline uint32_t LPSPI_GetTxRegisterAddress(LPSPI_Type *base)
692{
693 return (uint32_t) & (base->TDR);
694}
695
706static inline uint32_t LPSPI_GetRxRegisterAddress(LPSPI_Type *base)
707{
708 return (uint32_t) & (base->RDR);
709}
710
728bool LPSPI_CheckTransferArgument(LPSPI_Type *base, lpspi_transfer_t *transfer, bool isEdma);
729
738static inline void LPSPI_SetMasterSlaveMode(LPSPI_Type *base, lpspi_master_slave_mode_t mode)
739{
740 base->CFGR1 = (base->CFGR1 & (~LPSPI_CFGR1_MASTER_MASK)) | LPSPI_CFGR1_MASTER(mode);
741}
742
749static inline void LPSPI_SelectTransferPCS(LPSPI_Type *base, lpspi_which_pcs_t select)
750{
751 base->TCR = (base->TCR & (~LPSPI_TCR_PCS_MASK)) | LPSPI_TCR_PCS((uint8_t)select);
752}
753
765static inline void LPSPI_SetPCSContinous(LPSPI_Type *base, bool IsContinous)
766{
767 if (IsContinous)
768 {
769 base->TCR |= LPSPI_TCR_CONT_MASK;
770 }
771 else
772 {
773 base->TCR &= ~LPSPI_TCR_CONT_MASK;
774 }
775}
776
783static inline bool LPSPI_IsMaster(LPSPI_Type *base)
784{
785 return (bool)((base->CFGR1) & LPSPI_CFGR1_MASTER_MASK);
786}
787
795static inline void LPSPI_FlushFifo(LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
796{
797 base->CR |= ((uint32_t)flushTxFifo << LPSPI_CR_RTF_SHIFT) | ((uint32_t)flushRxFifo << LPSPI_CR_RRF_SHIFT);
798}
799
811static inline void LPSPI_SetFifoWatermarks(LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
812{
813 base->FCR = LPSPI_FCR_TXWATER(txWater) | LPSPI_FCR_RXWATER(rxWater);
814}
815
830static inline void LPSPI_SetAllPcsPolarity(LPSPI_Type *base, uint32_t mask)
831{
832 base->CFGR1 = (base->CFGR1 & ~LPSPI_CFGR1_PCSPOL_MASK) | LPSPI_CFGR1_PCSPOL(~mask);
833}
834
854static inline void LPSPI_SetFrameSize(LPSPI_Type *base, uint32_t frameSize)
855{
856 base->TCR = (base->TCR & ~LPSPI_TCR_FRAMESZ_MASK) | LPSPI_TCR_FRAMESZ(frameSize - 1U);
857}
858
882uint32_t LPSPI_MasterSetBaudRate(LPSPI_Type *base,
883 uint32_t baudRate_Bps,
884 uint32_t srcClock_Hz,
885 uint32_t *tcrPrescaleValue);
886
909void LPSPI_MasterSetDelayScaler(LPSPI_Type *base, uint32_t scaler, lpspi_delay_type_t whichDelay);
910
939uint32_t LPSPI_MasterSetDelayTimes(LPSPI_Type *base,
940 uint32_t delayTimeInNanoSec,
941 lpspi_delay_type_t whichDelay,
942 uint32_t srcClock_Hz);
943
956static inline void LPSPI_WriteData(LPSPI_Type *base, uint32_t data)
957{
958 base->TDR = data;
959}
960
970static inline uint32_t LPSPI_ReadData(LPSPI_Type *base)
971{
972 return (base->RDR);
973}
974
985void LPSPI_SetDummyData(LPSPI_Type *base, uint8_t dummyData);
986
995/*Transactional APIs*/
996
1008void LPSPI_MasterTransferCreateHandle(LPSPI_Type *base,
1009 lpspi_master_handle_t *handle,
1010 lpspi_master_transfer_callback_t callback,
1011 void *userData);
1012
1030status_t LPSPI_MasterTransferBlocking(LPSPI_Type *base, lpspi_transfer_t *transfer);
1031
1049status_t LPSPI_MasterTransferNonBlocking(LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer);
1050
1061status_t LPSPI_MasterTransferGetCount(LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count);
1062
1071void LPSPI_MasterTransferAbort(LPSPI_Type *base, lpspi_master_handle_t *handle);
1072
1081void LPSPI_MasterTransferHandleIRQ(LPSPI_Type *base, lpspi_master_handle_t *handle);
1082
1094void LPSPI_SlaveTransferCreateHandle(LPSPI_Type *base,
1095 lpspi_slave_handle_t *handle,
1096 lpspi_slave_transfer_callback_t callback,
1097 void *userData);
1098
1116status_t LPSPI_SlaveTransferNonBlocking(LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_transfer_t *transfer);
1117
1128status_t LPSPI_SlaveTransferGetCount(LPSPI_Type *base, lpspi_slave_handle_t *handle, size_t *count);
1129
1138void LPSPI_SlaveTransferAbort(LPSPI_Type *base, lpspi_slave_handle_t *handle);
1139
1148void LPSPI_SlaveTransferHandleIRQ(LPSPI_Type *base, lpspi_slave_handle_t *handle);
1149
1154#if defined(__cplusplus)
1155}
1156#endif
1157
1158/* @}*/
1159
1160#endif /*_FSL_LPSPI_H_*/
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *errorfds, unsigned long timeout)
Wait for events to occur on one or more I/O resources associated with a set of file descriptors (fds)...
LPSPI master configuration structure.
Definition fsl_lpspi.h:264
lpspi_pcs_polarity_config_t pcsActiveHighOrLow
Definition fsl_lpspi.h:279
lpspi_shift_direction_t direction
Definition fsl_lpspi.h:269
lpspi_data_out_config_t dataOutConfig
Definition fsl_lpspi.h:284
bool enableInputDelay
Definition fsl_lpspi.h:286
uint32_t baudRate
Definition fsl_lpspi.h:265
lpspi_clock_phase_t cpha
Definition fsl_lpspi.h:268
uint32_t betweenTransferDelayInNanoSec
Definition fsl_lpspi.h:275
uint32_t bitsPerFrame
Definition fsl_lpspi.h:266
uint32_t lastSckToPcsDelayInNanoSec
Definition fsl_lpspi.h:273
lpspi_which_pcs_t whichPcs
Definition fsl_lpspi.h:278
uint32_t pcsToSckDelayInNanoSec
Definition fsl_lpspi.h:271
lpspi_clock_polarity_t cpol
Definition fsl_lpspi.h:267
lpspi_pin_config_t pinCfg
Definition fsl_lpspi.h:281
LPSPI master transfer handle structure used for transactional API.
Definition fsl_lpspi.h:358
uint8_t *volatile txData
Definition fsl_lpspi.h:373
volatile uint8_t fifoSize
Definition fsl_lpspi.h:366
uint8_t *volatile rxData
Definition fsl_lpspi.h:374
volatile uint8_t state
Definition fsl_lpspi.h:385
volatile uint32_t writeRegRemainingTimes
Definition fsl_lpspi.h:378
volatile uint8_t bytesEachRead
Definition fsl_lpspi.h:371
volatile uint8_t rxWatermark
Definition fsl_lpspi.h:368
lpspi_master_transfer_callback_t callback
Definition fsl_lpspi.h:387
volatile uint32_t readRegRemainingTimes
Definition fsl_lpspi.h:379
volatile size_t txRemainingByteCount
Definition fsl_lpspi.h:375
volatile bool isTxMask
Definition fsl_lpspi.h:363
volatile uint16_t bytesPerFrame
Definition fsl_lpspi.h:364
void * userData
Definition fsl_lpspi.h:388
uint32_t txBuffIfNull
Definition fsl_lpspi.h:383
volatile bool writeTcrInIsr
Definition fsl_lpspi.h:360
volatile uint8_t bytesEachWrite
Definition fsl_lpspi.h:370
volatile bool isByteSwap
Definition fsl_lpspi.h:362
uint32_t totalByteCount
Definition fsl_lpspi.h:381
volatile size_t rxRemainingByteCount
Definition fsl_lpspi.h:376
volatile bool isPcsContinuous
Definition fsl_lpspi.h:359
LPSPI slave configuration structure.
Definition fsl_lpspi.h:292
lpspi_clock_phase_t cpha
Definition fsl_lpspi.h:295
lpspi_shift_direction_t direction
Definition fsl_lpspi.h:296
lpspi_pcs_polarity_config_t pcsActiveHighOrLow
Definition fsl_lpspi.h:299
lpspi_data_out_config_t dataOutConfig
Definition fsl_lpspi.h:304
uint32_t bitsPerFrame
Definition fsl_lpspi.h:293
lpspi_clock_polarity_t cpol
Definition fsl_lpspi.h:294
lpspi_which_pcs_t whichPcs
Definition fsl_lpspi.h:298
lpspi_pin_config_t pinCfg
Definition fsl_lpspi.h:301
LPSPI slave transfer handle structure used for transactional API.
Definition fsl_lpspi.h:393
volatile uint8_t state
Definition fsl_lpspi.h:414
volatile size_t txRemainingByteCount
Definition fsl_lpspi.h:406
volatile uint8_t rxWatermark
Definition fsl_lpspi.h:398
uint8_t *volatile rxData
Definition fsl_lpspi.h:404
void * userData
Definition fsl_lpspi.h:419
volatile size_t rxRemainingByteCount
Definition fsl_lpspi.h:407
volatile uint8_t fifoSize
Definition fsl_lpspi.h:396
volatile uint8_t bytesEachRead
Definition fsl_lpspi.h:401
volatile uint32_t errorCount
Definition fsl_lpspi.h:416
volatile uint32_t readRegRemainingTimes
Definition fsl_lpspi.h:410
volatile uint8_t bytesEachWrite
Definition fsl_lpspi.h:400
uint8_t *volatile txData
Definition fsl_lpspi.h:403
uint32_t totalByteCount
Definition fsl_lpspi.h:412
volatile bool isByteSwap
Definition fsl_lpspi.h:394
volatile uint32_t writeRegRemainingTimes
Definition fsl_lpspi.h:409
lpspi_slave_transfer_callback_t callback
Definition fsl_lpspi.h:418
LPSPI master/slave transfer structure.
Definition fsl_lpspi.h:346
uint8_t * rxData
Definition fsl_lpspi.h:348
uint32_t configFlags
Definition fsl_lpspi.h:351
volatile size_t dataSize
Definition fsl_lpspi.h:349
uint8_t * txData
Definition fsl_lpspi.h:347