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 
89 status_t LPSPI_DRV_SlaveInit(uint32_t instance,
90  lpspi_state_t * lpspiState,
91  const lpspi_slave_config_t * slaveConfig);
92 
105 status_t LPSPI_DRV_SlaveDeinit(uint32_t instance);
106 
133 status_t LPSPI_DRV_SlaveTransferBlocking(uint32_t instance,
134  const uint8_t *sendBuffer,
135  uint8_t *receiveBuffer,
136  uint16_t transferByteCount,
137  uint32_t timeout);
138 
162 status_t LPSPI_DRV_SlaveTransfer(uint32_t instance,
163  const uint8_t *sendBuffer,
164  uint8_t *receiveBuffer,
165  uint16_t transferByteCount);
166 
177 status_t LPSPI_DRV_SlaveAbortTransfer(uint32_t instance);
178 
197  uint32_t * bytesRemained);
198 
206 void LPSPI_DRV_SlaveIRQHandler(uint32_t instance);
207 
208 #if defined(__cplusplus)
209 }
210 #endif
211 
212 
216 #endif /* __LPSPI_SLAVE_DRIVER_H__ */
217 
218 
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:81
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 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 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...