S32 SDK
lpspi_slave_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2016, Freescale Semiconductor, Inc.
3  * Copyright 2016 NXP
4  * All rights reserved.
5  *
6  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
7  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
9  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
10  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
11  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
16  * THE POSSIBILITY OF SUCH DAMAGE.
17  */
18 
28 #ifndef LPSPI_SLAVE_DRIVER_H
29 #define LPSPI_SLAVE_DRIVER_H
30 
31 #include "lpspi_shared_function.h"
32 
33 
34 
42 /*******************************************************************************
43  * Definitions
44  ******************************************************************************/
45 
50 typedef struct
51 {
53  uint16_t bitcount;
57  bool lsbFirst;
59  uint8_t rxDMAChannel;
60  uint8_t txDMAChannel;
62  void *callbackParam;
64 
65 
66 /*******************************************************************************
67  * API
68  ******************************************************************************/
69 
70 #if defined(__cplusplus)
71 extern "C" {
72 #endif
73 
95 status_t LPSPI_DRV_SlaveInit(uint32_t instance,
96  lpspi_state_t * lpspiState,
97  const lpspi_slave_config_t * slaveConfig);
98 
111 status_t LPSPI_DRV_SlaveDeinit(uint32_t instance);
112 
142 status_t LPSPI_DRV_SlaveTransferBlocking(uint32_t instance,
143  const uint8_t *sendBuffer,
144  uint8_t *receiveBuffer,
145  uint16_t transferByteCount,
146  uint32_t timeout);
147 
167 status_t LPSPI_DRV_SlaveTransfer(uint32_t instance,
168  const uint8_t *sendBuffer,
169  uint8_t *receiveBuffer,
170  uint16_t transferByteCount);
171 
182 status_t LPSPI_DRV_SlaveAbortTransfer(uint32_t instance);
183 
202  uint32_t * bytesRemained);
203 
211 void LPSPI_DRV_SlaveIRQHandler(uint32_t instance);
212 
213 /* @} */
214 
215 #if defined(__cplusplus)
216 }
217 #endif
218 
219 
223 #endif /* __LPSPI_SLAVE_DRIVER_H__ */
224 
225 
Runtime state structure for the LPSPI master driver.
lpspi_signal_polarity_t pcsPolarity
void(* spi_callback_t)(void *driverState, spi_event_t event, void *userData)
Definition: callbacks.h:44
lpspi_which_pcs_t whichPcs
status_t LPSPI_DRV_SlaveTransfer(uint32_t instance, const uint8_t *sendBuffer, uint8_t *receiveBuffer, uint16_t transferByteCount)
Starts the transfer data on LPSPI bus using an interrupt and a non-blocking call. ...
lpspi_clock_phase_t clkPhase
status_t LPSPI_DRV_SlaveTransferBlocking(uint32_t instance, const uint8_t *sendBuffer, uint8_t *receiveBuffer, uint16_t transferByteCount, uint32_t timeout)
Transfers data on LPSPI bus using interrupt and a blocking call.
lpspi_sck_polarity_t clkPolarity
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
lpspi_signal_polarity_t
LPSPI Signal (PCS and Host Request) Polarity configuration. Implements : lpspi_signal_polarity_t_Clas...
lpspi_transfer_type
Type of LPSPI transfer (based on interrupts or DMA). Implements : lpspi_transfer_type_Class.
status_t LPSPI_DRV_SlaveInit(uint32_t instance, lpspi_state_t *lpspiState, const lpspi_slave_config_t *slaveConfig)
Initializes a LPSPI instance for a slave mode operation, using interrupt mechanism.
lpspi_which_pcs_t
LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure). Implements : lpspi_which_p...
User configuration structure for the SPI slave driver. Implements : lpspi_slave_config_t_Class.
lpspi_clock_phase_t
LPSPI clock phase configuration. Implements : lpspi_clock_phase_t_Class.
lpspi_sck_polarity_t
LPSPI Clock Signal (SCK) Polarity configuration. Implements : lpspi_sck_polarity_t_Class.
status_t LPSPI_DRV_SlaveAbortTransfer(uint32_t instance)
Aborts the transfer that started by a non-blocking call transfer function.
lpspi_transfer_type transferType
status_t LPSPI_DRV_SlaveGetTransferStatus(uint32_t instance, uint32_t *bytesRemained)
Returns whether the previous transfer is finished.
status_t LPSPI_DRV_SlaveDeinit(uint32_t instance)
Shuts down an LPSPI instance interrupt mechanism.
void LPSPI_DRV_SlaveIRQHandler(uint32_t instance)
Interrupt handler for LPSPI slave mode. This handler uses the buffers stored in the lpspi_master_stat...