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 
68 
69 /*******************************************************************************
70  * API
71  ******************************************************************************/
72 
73 #if defined(__cplusplus)
74 extern "C" {
75 #endif
76 
117 status_t LPSPI_DRV_MasterInit(uint32_t instance, lpspi_state_t * lpspiState,
118  const lpspi_master_config_t * spiConfig);
119 
132 status_t LPSPI_DRV_MasterDeinit(uint32_t instance);
133 
159 status_t LPSPI_DRV_MasterSetDelay(uint32_t instance, uint32_t delayBetwenTransfers,
160  uint32_t delaySCKtoPCS, uint32_t delayPCStoSCK);
161 
162 
204 status_t LPSPI_DRV_MasterConfigureBus(uint32_t instance,
205  const lpspi_master_config_t * spiConfig,
206  uint32_t * calculatedBaudRate);
207 
242  const uint8_t * sendBuffer,
243  uint8_t * receiveBuffer,
244  uint16_t transferByteCount,
245  uint32_t timeout);
246 
282 status_t LPSPI_DRV_MasterTransfer(uint32_t instance,
283  const uint8_t * sendBuffer,
284  uint8_t * receiveBuffer,
285  uint16_t transferByteCount);
286 
302 status_t LPSPI_DRV_MasterGetTransferStatus(uint32_t instance, uint32_t * bytesRemained);
303 
314 status_t LPSPI_DRV_MasterAbortTransfer(uint32_t instance);
315 
322 void LPSPI_DRV_MasterIRQHandler(uint32_t instance);
323 
324 /* @}*/
325 
326 #if defined(__cplusplus)
327 }
328 #endif
329 
333 #endif /* __LPSPI_MASTER_DRIVER_H__*/
334 /*******************************************************************************
335  * EOF
336  ******************************************************************************/
337 
Runtime state structure for the LPSPI master driver.
Data structure containing information about a device on the SPI bus.
lpspi_signal_polarity_t pcsPolarity
lpspi_signal_polarity_t
LPSPI Signal (PCS and Host Request) Polarity configuration. Implements : lpspi_signal_polarity_t_Clas...
Definition: lpspi_hal.h:116
status_t LPSPI_DRV_MasterDeinit(uint32_t instance)
Shuts down a LPSPI instance.
lpspi_transfer_type transferType
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.
lpspi_which_pcs_t
LPSPI Peripheral Chip Select (PCS) configuration (which PCS to configure). Implements : lpspi_which_p...
Definition: lpspi_hal.h:143
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.
lpspi_sck_polarity_t
LPSPI Clock Signal (SCK) Polarity configuration. Implements : lpspi_sck_polarity_t_Class.
Definition: lpspi_hal.h:107
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:31
lpspi_transfer_type
Type of LPSPI transfer (based on interrupts or DMA). Implements : lpspi_transfer_type_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
lpspi_clock_phase_t
LPSPI clock phase configuration. Implements : lpspi_clock_phase_t_Class.
Definition: lpspi_hal.h:182