rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
Data Structures
fsl_lpspi.h File Reference

Data Structures

struct  _lpspi_master_config
 LPSPI master configuration structure. More...
 
struct  _lpspi_slave_config
 LPSPI slave configuration structure. More...
 
struct  _lpspi_transfer
 LPSPI master/slave transfer structure. More...
 
struct  _lpspi_master_handle
 LPSPI master transfer handle structure used for transactional API. More...
 
struct  _lpspi_slave_handle
 LPSPI slave transfer handle structure used for transactional API. More...
 

Functions

Initialization and deinitialization
void LPSPI_MasterInit (LPSPI_Type *base, const lpspi_master_config_t *masterConfig, uint32_t srcClock_Hz)
 Initializes the LPSPI master.
 
void LPSPI_MasterGetDefaultConfig (lpspi_master_config_t *masterConfig)
 Sets the lpspi_master_config_t structure to default values.
 
void LPSPI_SlaveInit (LPSPI_Type *base, const lpspi_slave_config_t *slaveConfig)
 LPSPI slave configuration.
 
void LPSPI_SlaveGetDefaultConfig (lpspi_slave_config_t *slaveConfig)
 Sets the lpspi_slave_config_t structure to default values.
 
void LPSPI_Deinit (LPSPI_Type *base)
 De-initializes the LPSPI peripheral. Call this API to disable the LPSPI clock.
 
void LPSPI_Reset (LPSPI_Type *base)
 Restores the LPSPI peripheral to reset state. Note that this function sets all registers to reset state. As a result, the LPSPI module can't work after calling this API.
 
static void LPSPI_Enable (LPSPI_Type *base, bool enable)
 Enables the LPSPI peripheral and sets the MCR MDIS to 0.
 
Status
static uint32_t LPSPI_GetStatusFlags (LPSPI_Type *base)
 Gets the LPSPI status flag state.
 
static uint32_t LPSPI_GetTxFifoSize (LPSPI_Type *base)
 Gets the LPSPI Tx FIFO size.
 
static uint32_t LPSPI_GetRxFifoSize (LPSPI_Type *base)
 Gets the LPSPI Rx FIFO size.
 
static uint32_t LPSPI_GetTxFifoCount (LPSPI_Type *base)
 Gets the LPSPI Tx FIFO count.
 
static uint32_t LPSPI_GetRxFifoCount (LPSPI_Type *base)
 Gets the LPSPI Rx FIFO count.
 
static void LPSPI_ClearStatusFlags (LPSPI_Type *base, uint32_t statusFlags)
 Clears the LPSPI status flag.
 
Interrupts
static void LPSPI_EnableInterrupts (LPSPI_Type *base, uint32_t mask)
 Enables the LPSPI interrupts.
 
static void LPSPI_DisableInterrupts (LPSPI_Type *base, uint32_t mask)
 Disables the LPSPI interrupts.
 
DMA Control
static void LPSPI_EnableDMA (LPSPI_Type *base, uint32_t mask)
 Enables the LPSPI DMA request.
 
static void LPSPI_DisableDMA (LPSPI_Type *base, uint32_t mask)
 Disables the LPSPI DMA request.
 
static uint32_t LPSPI_GetTxRegisterAddress (LPSPI_Type *base)
 Gets the LPSPI Transmit Data Register address for a DMA operation.
 
static uint32_t LPSPI_GetRxRegisterAddress (LPSPI_Type *base)
 Gets the LPSPI Receive Data Register address for a DMA operation.
 
Bus Operations
bool LPSPI_CheckTransferArgument (lpspi_transfer_t *transfer, uint32_t bitsPerFrame, uint32_t bytesPerFrame)
 Check the argument for transfer .
 
static void LPSPI_SetMasterSlaveMode (LPSPI_Type *base, lpspi_master_slave_mode_t mode)
 Configures the LPSPI for either master or slave.
 
static bool LPSPI_IsMaster (LPSPI_Type *base)
 Returns whether the LPSPI module is in master mode.
 
static void LPSPI_FlushFifo (LPSPI_Type *base, bool flushTxFifo, bool flushRxFifo)
 Flushes the LPSPI FIFOs.
 
static void LPSPI_SetFifoWatermarks (LPSPI_Type *base, uint32_t txWater, uint32_t rxWater)
 Sets the transmit and receive FIFO watermark values.
 
static void LPSPI_SetAllPcsPolarity (LPSPI_Type *base, uint32_t mask)
 Configures all LPSPI peripheral chip select polarities simultaneously.
 
static void LPSPI_SetFrameSize (LPSPI_Type *base, uint32_t frameSize)
 Configures the frame size.
 
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.
 
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 values).
 
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 change the delay values).
 
static void LPSPI_WriteData (LPSPI_Type *base, uint32_t data)
 Writes data into the transmit data buffer.
 
static uint32_t LPSPI_ReadData (LPSPI_Type *base)
 Reads data from the data buffer.
 
void LPSPI_SetDummyData (LPSPI_Type *base, uint8_t dummyData)
 Set up the dummy data.
 
Transactional
void LPSPI_MasterTransferCreateHandle (LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_master_transfer_callback_t callback, void *userData)
 Initializes the LPSPI master handle.
 
status_t LPSPI_MasterTransferBlocking (LPSPI_Type *base, lpspi_transfer_t *transfer)
 LPSPI master transfer data using a polling method.
 
status_t LPSPI_MasterTransferNonBlocking (LPSPI_Type *base, lpspi_master_handle_t *handle, lpspi_transfer_t *transfer)
 LPSPI master transfer data using an interrupt method.
 
status_t LPSPI_MasterTransferGetCount (LPSPI_Type *base, lpspi_master_handle_t *handle, size_t *count)
 Gets the master transfer remaining bytes.
 
void LPSPI_MasterTransferAbort (LPSPI_Type *base, lpspi_master_handle_t *handle)
 LPSPI master abort transfer which uses an interrupt method.
 
void LPSPI_MasterTransferHandleIRQ (LPSPI_Type *base, lpspi_master_handle_t *handle)
 LPSPI Master IRQ handler function.
 
void LPSPI_SlaveTransferCreateHandle (LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_slave_transfer_callback_t callback, void *userData)
 Initializes the LPSPI slave handle.
 
status_t LPSPI_SlaveTransferNonBlocking (LPSPI_Type *base, lpspi_slave_handle_t *handle, lpspi_transfer_t *transfer)
 LPSPI slave transfer data using an interrupt method.
 
status_t LPSPI_SlaveTransferGetCount (LPSPI_Type *base, lpspi_slave_handle_t *handle, size_t *count)
 Gets the slave transfer remaining bytes.
 
void LPSPI_SlaveTransferAbort (LPSPI_Type *base, lpspi_slave_handle_t *handle)
 LPSPI slave aborts a transfer which uses an interrupt method.
 
void LPSPI_SlaveTransferHandleIRQ (LPSPI_Type *base, lpspi_slave_handle_t *handle)
 LPSPI Slave IRQ handler function.
 

Driver version

enum  _lpspi_status { kStatus_LPSPI_Busy = MAKE_STATUS(kStatusGroup_LPSPI, 0) , kStatus_LPSPI_Error = MAKE_STATUS(kStatusGroup_LPSPI, 1) , kStatus_LPSPI_Idle = MAKE_STATUS(kStatusGroup_LPSPI, 2) , kStatus_LPSPI_OutOfRange = MAKE_STATUS(kStatusGroup_LPSPI, 3) }
 Status for the LPSPI driver. More...
 
enum  _lpspi_flags {
  kLPSPI_TxDataRequestFlag = LPSPI_SR_TDF_MASK , kLPSPI_RxDataReadyFlag = LPSPI_SR_RDF_MASK , kLPSPI_WordCompleteFlag = LPSPI_SR_WCF_MASK , kLPSPI_FrameCompleteFlag = LPSPI_SR_FCF_MASK ,
  kLPSPI_TransferCompleteFlag = LPSPI_SR_TCF_MASK , kLPSPI_TransmitErrorFlag = LPSPI_SR_TEF_MASK , kLPSPI_ReceiveErrorFlag = LPSPI_SR_REF_MASK , kLPSPI_DataMatchFlag = LPSPI_SR_DMF_MASK ,
  kLPSPI_ModuleBusyFlag = LPSPI_SR_MBF_MASK , kLPSPI_AllStatusFlag
}
 LPSPI status flags in SPIx_SR register. More...
 
enum  _lpspi_interrupt_enable {
  kLPSPI_TxInterruptEnable = LPSPI_IER_TDIE_MASK , kLPSPI_RxInterruptEnable = LPSPI_IER_RDIE_MASK , kLPSPI_WordCompleteInterruptEnable = LPSPI_IER_WCIE_MASK , kLPSPI_FrameCompleteInterruptEnable = LPSPI_IER_FCIE_MASK ,
  kLPSPI_TransferCompleteInterruptEnable = LPSPI_IER_TCIE_MASK , kLPSPI_TransmitErrorInterruptEnable = LPSPI_IER_TEIE_MASK , kLPSPI_ReceiveErrorInterruptEnable = LPSPI_IER_REIE_MASK , kLPSPI_DataMatchInterruptEnable = LPSPI_IER_DMIE_MASK ,
  kLPSPI_AllInterruptEnable
}
 LPSPI interrupt source. More...
 
enum  _lpspi_dma_enable { kLPSPI_TxDmaEnable = LPSPI_DER_TDDE_MASK , kLPSPI_RxDmaEnable = LPSPI_DER_RDDE_MASK }
 LPSPI DMA source. More...
 
enum  _lpspi_master_slave_mode { kLPSPI_Master = 1U , kLPSPI_Slave = 0U }
 LPSPI master or slave mode configuration. More...
 
enum  _lpspi_which_pcs_config { kLPSPI_Pcs0 = 0U , kLPSPI_Pcs1 = 1U , kLPSPI_Pcs2 = 2U , kLPSPI_Pcs3 = 3U }
 LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure). More...
 
enum  _lpspi_pcs_polarity_config { kLPSPI_PcsActiveHigh = 1U , kLPSPI_PcsActiveLow = 0U }
 LPSPI Peripheral Chip Select (PCS) Polarity configuration. More...
 
enum  _lpspi_pcs_polarity {
  kLPSPI_Pcs0ActiveLow = 1U << 0 , kLPSPI_Pcs1ActiveLow = 1U << 1 , kLPSPI_Pcs2ActiveLow = 1U << 2 , kLPSPI_Pcs3ActiveLow = 1U << 3 ,
  kLPSPI_PcsAllActiveLow = 0xFU
}
 LPSPI Peripheral Chip Select (PCS) Polarity. More...
 
enum  _lpspi_clock_polarity { kLPSPI_ClockPolarityActiveHigh = 0U , kLPSPI_ClockPolarityActiveLow = 1U }
 LPSPI clock polarity configuration. More...
 
enum  _lpspi_clock_phase { kLPSPI_ClockPhaseFirstEdge = 0U , kLPSPI_ClockPhaseSecondEdge = 1U }
 LPSPI clock phase configuration. More...
 
enum  _lpspi_shift_direction { kLPSPI_MsbFirst = 0U , kLPSPI_LsbFirst = 1U }
 LPSPI data shifter direction options. More...
 
enum  _lpspi_host_request_select { kLPSPI_HostReqExtPin = 0U , kLPSPI_HostReqInternalTrigger = 1U }
 LPSPI Host Request select configuration. More...
 
enum  _lpspi_match_config {
  kLPSI_MatchDisabled = 0x0U , kLPSI_1stWordEqualsM0orM1 = 0x2U , kLPSI_AnyWordEqualsM0orM1 = 0x3U , kLPSI_1stWordEqualsM0and2ndWordEqualsM1 = 0x4U ,
  kLPSI_AnyWordEqualsM0andNxtWordEqualsM1 = 0x5U , kLPSI_1stWordAndM1EqualsM0andM1 = 0x6U , kLPSI_AnyWordAndM1EqualsM0andM1 = 0x7U
}
 LPSPI Match configuration options. More...
 
enum  _lpspi_pin_config { kLPSPI_SdiInSdoOut = 0U , kLPSPI_SdiInSdiOut = 1U , kLPSPI_SdoInSdoOut = 2U , kLPSPI_SdoInSdiOut = 3U }
 LPSPI pin (SDO and SDI) configuration. More...
 
enum  _lpspi_data_out_config { kLpspiDataOutRetained = 0U , kLpspiDataOutTristate = 1U }
 LPSPI data output configuration. More...
 
enum  _lpspi_transfer_width { kLPSPI_SingleBitXfer = 0U , kLPSPI_TwoBitXfer = 1U , kLPSPI_FourBitXfer = 2U }
 LPSPI transfer width configuration. More...
 
enum  _lpspi_delay_type { kLPSPI_PcsToSck = 1U , kLPSPI_LastSckToPcs , kLPSPI_BetweenTransfer }
 LPSPI delay type selection. More...
 
enum  _lpspi_transfer_config_flag_for_master {
  kLPSPI_MasterPcs0 = 0U << LPSPI_MASTER_PCS_SHIFT , kLPSPI_MasterPcs1 = 1U << LPSPI_MASTER_PCS_SHIFT , kLPSPI_MasterPcs2 = 2U << LPSPI_MASTER_PCS_SHIFT , kLPSPI_MasterPcs3 = 3U << LPSPI_MASTER_PCS_SHIFT ,
  kLPSPI_MasterPcsContinuous = 1U << 20 , kLPSPI_MasterByteSwap
}
 Use this enumeration for LPSPI master transfer configFlags. More...
 
enum  _lpspi_transfer_config_flag_for_slave {
  kLPSPI_SlavePcs0 = 0U << LPSPI_SLAVE_PCS_SHIFT , kLPSPI_SlavePcs1 = 1U << LPSPI_SLAVE_PCS_SHIFT , kLPSPI_SlavePcs2 = 2U << LPSPI_SLAVE_PCS_SHIFT , kLPSPI_SlavePcs3 = 3U << LPSPI_SLAVE_PCS_SHIFT ,
  kLPSPI_SlaveByteSwap
}
 Use this enumeration for LPSPI slave transfer configFlags. More...
 
enum  _lpspi_transfer_state { kLPSPI_Idle = 0x0U , kLPSPI_Busy , kLPSPI_Error }
 LPSPI transfer state, which is used for LPSPI transactional API state machine. More...
 
typedef enum _lpspi_master_slave_mode lpspi_master_slave_mode_t
 LPSPI master or slave mode configuration.
 
typedef enum _lpspi_which_pcs_config lpspi_which_pcs_t
 LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure).
 
typedef enum _lpspi_pcs_polarity_config lpspi_pcs_polarity_config_t
 LPSPI Peripheral Chip Select (PCS) Polarity configuration.
 
typedef enum _lpspi_clock_polarity lpspi_clock_polarity_t
 LPSPI clock polarity configuration.
 
typedef enum _lpspi_clock_phase lpspi_clock_phase_t
 LPSPI clock phase configuration.
 
typedef enum _lpspi_shift_direction lpspi_shift_direction_t
 LPSPI data shifter direction options.
 
typedef enum _lpspi_host_request_select lpspi_host_request_select_t
 LPSPI Host Request select configuration.
 
typedef enum _lpspi_match_config lpspi_match_config_t
 LPSPI Match configuration options.
 
typedef enum _lpspi_pin_config lpspi_pin_config_t
 LPSPI pin (SDO and SDI) configuration.
 
typedef enum _lpspi_data_out_config lpspi_data_out_config_t
 LPSPI data output configuration.
 
typedef enum _lpspi_transfer_width lpspi_transfer_width_t
 LPSPI transfer width configuration.
 
typedef enum _lpspi_delay_type lpspi_delay_type_t
 LPSPI delay type selection.
 
typedef struct _lpspi_master_config lpspi_master_config_t
 LPSPI master configuration structure.
 
typedef struct _lpspi_slave_config lpspi_slave_config_t
 LPSPI slave configuration structure.
 
typedef struct _lpspi_master_handle lpspi_master_handle_t
 Forward declaration of the _lpspi_master_handle typedefs.
 
typedef struct _lpspi_slave_handle lpspi_slave_handle_t
 Forward declaration of the _lpspi_slave_handle typedefs.
 
typedef 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.
 
typedef 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.
 
typedef struct _lpspi_transfer lpspi_transfer_t
 LPSPI master/slave transfer structure.
 
volatile uint8_t g_lpspiDummyData []
 Global variable for dummy data value setting.
 

Go to the source code of this file.