S32 SDK
lpspi_master_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2016, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 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_MASTER_DRIVER_H
29 #define LPSPI_MASTER_DRIVER_H
30 
31 #include "lpspi_shared_function.h"
32 
41 /*******************************************************************************
42  * Definitions
43  ******************************************************************************/
44 
52 typedef struct
53 {
54  uint32_t bitsPerSec;
58  uint16_t bitcount;
59  uint32_t lpspiSrcClk;
62  bool lsbFirst;
64  uint8_t rxDMAChannel;
65  uint8_t txDMAChannel;
67  void *callbackParam;
69 
70 
71 /*******************************************************************************
72  * API
73  ******************************************************************************/
74 
75 #if defined(__cplusplus)
76 extern "C" {
77 #endif
78 
119 status_t LPSPI_DRV_MasterInit(uint32_t instance, lpspi_state_t * lpspiState,
120  const lpspi_master_config_t * spiConfig);
121 
134 status_t LPSPI_DRV_MasterDeinit(uint32_t instance);
135 
161 status_t LPSPI_DRV_MasterSetDelay(uint32_t instance, uint32_t delayBetwenTransfers,
162  uint32_t delaySCKtoPCS, uint32_t delayPCStoSCK);
163 
164 
206 status_t LPSPI_DRV_MasterConfigureBus(uint32_t instance,
207  const lpspi_master_config_t * spiConfig,
208  uint32_t * calculatedBaudRate);
209 
244  const uint8_t * sendBuffer,
245  uint8_t * receiveBuffer,
246  uint16_t transferByteCount,
247  uint32_t timeout);
248 
284 status_t LPSPI_DRV_MasterTransfer(uint32_t instance,
285  const uint8_t * sendBuffer,
286  uint8_t * receiveBuffer,
287  uint16_t transferByteCount);
288 
304 status_t LPSPI_DRV_MasterGetTransferStatus(uint32_t instance, uint32_t * bytesRemained);
305 
316 status_t LPSPI_DRV_MasterAbortTransfer(uint32_t instance);
317 
324 void LPSPI_DRV_MasterIRQHandler(uint32_t instance);
325 
326 /* @}*/
327 
328 #if defined(__cplusplus)
329 }
330 #endif
331 
335 #endif /* __LPSPI_MASTER_DRIVER_H__*/
336 /*******************************************************************************
337  * EOF
338  ******************************************************************************/
339 
Runtime state structure for the LPSPI master driver.
Data structure containing information about a device on the SPI bus.
lpspi_signal_polarity_t pcsPolarity
status_t LPSPI_DRV_MasterDeinit(uint32_t instance)
Shuts down a LPSPI instance.
lpspi_transfer_type transferType
void(* spi_callback_t)(void *driverState, spi_event_t event, void *userData)
Definition: callbacks.h:44
status_t LPSPI_DRV_MasterConfigureBus(uint32_t instance, const lpspi_master_config_t *spiConfig, uint32_t *calculatedBaudRate)
Configures the LPSPI port physical parameters to access a device on the bus when the LSPI instance is...
status_t LPSPI_DRV_MasterInit(uint32_t instance, lpspi_state_t *lpspiState, const lpspi_master_config_t *spiConfig)
Initializes a LPSPI instance for interrupt driven master mode operation.
status_t LPSPI_DRV_MasterTransfer(uint32_t instance, const uint8_t *sendBuffer, uint8_t *receiveBuffer, uint16_t transferByteCount)
Performs an interrupt driven non-blocking SPI master mode transfer.
status_t LPSPI_DRV_MasterGetTransferStatus(uint32_t instance, uint32_t *bytesRemained)
Returns whether the previous interrupt driven transfer is completed.
void LPSPI_DRV_MasterIRQHandler(uint32_t instance)
Interrupt handler for LPSPI master mode. This handler uses the buffers stored in the lpspi_master_sta...
lpspi_clock_phase_t clkPhase
status_t LPSPI_DRV_MasterTransferBlocking(uint32_t instance, const uint8_t *sendBuffer, uint8_t *receiveBuffer, uint16_t transferByteCount, uint32_t timeout)
Performs an interrupt driven blocking SPI master mode transfer.
status_t LPSPI_DRV_MasterSetDelay(uint32_t instance, uint32_t delayBetwenTransfers, uint32_t delaySCKtoPCS, uint32_t delayPCStoSCK)
Configures the LPSPI master mode bus timing delay options.
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.
lpspi_which_pcs_t
LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure). Implements : lpspi_which_p...
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.
lpspi_which_pcs_t whichPcs
status_t LPSPI_DRV_MasterAbortTransfer(uint32_t instance)
Terminates an interrupt driven asynchronous transfer early.
lpspi_sck_polarity_t clkPolarity