S32 SDK
spi_pal.h
Go to the documentation of this file.
1 /*
2  * Copyright 2017 NXP
3  * All rights reserved.
4  *
5  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
6  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
7  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
8  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
9  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
10  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
11  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
12  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
13  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
14  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
15  * THE POSSIBILITY OF SUCH DAMAGE.
16  */
17 
18 #ifndef SPI_PAL_H
19 #define SPI_PAL_H
20 
21 #include "spi_pal_cfg.h"
22 #include "spi_pal_mapping.h"
23 #include "status.h"
24 #include "callbacks.h"
25 
35 /*******************************************************************************
36  * Definitions
37  ******************************************************************************/
38 
42 typedef enum
43 {
47 
51 typedef enum
52 {
56 
60 typedef enum
61 {
65 
69 typedef enum
70 {
74 
78 typedef struct
79 {
80  uint32_t baudRate;
81  uint8_t frameSize;
86  uint8_t ssPin;
88  uint8_t rxDMAChannel;
89  uint8_t txDMAChannel;
91  void *callbackParam;
92  void *extension;
93 } spi_master_t;
94 
98 typedef struct
99 {
100  uint8_t frameSize;
106  uint8_t rxDMAChannel;
107  uint8_t txDMAChannel;
110  void *extension;
111 } spi_slave_t;
112 
116 typedef struct
117 {
118  uint8_t mosiPin;
119  uint8_t misoPin;
120  uint8_t sckPin;
121  uint8_t ssPin;
123 
124 /*******************************************************************************
125  * API
126  ******************************************************************************/
127 
128 #if defined(__cplusplus)
129 extern "C" {
130 #endif
131 
143 
155 
165 status_t SPI_SetSS(spi_instance_t, uint8_t ss);
166 
178 status_t SPI_MasterTransfer(spi_instance_t instance, void* txBuffer, void* rxBuffer, uint16_t numberOfFrames);
179 
192 status_t SPI_MasterTransferBlocking(spi_instance_t instance, void* txBuffer, void* rxBuffer, uint16_t numberOfFrames, uint16_t timeout);
193 
205 status_t SPI_SlaveTransfer(spi_instance_t instance, void* txBuffer, void* rxBuffer, uint16_t numberOfFrames);
206 
219 status_t SPI_SlaveTransferBlocking(spi_instance_t instance, void* txBuffer, void* rxBuffer, uint16_t numberOfFrames, uint16_t timeout);
220 
235 
245 
255 
265 
275 
276 #if defined(__cplusplus)
277 }
278 #endif
279 
281 #endif /* SPI_PAL_H */
282 
283 
284 /*******************************************************************************
285  * EOF
286  ******************************************************************************/
spi_callback_t callback
Definition: spi_pal.h:90
spi_clock_phase_t clockPhase
Definition: spi_pal.h:85
uint8_t rxDMAChannel
Definition: spi_pal.h:88
spi_polarity_t clockPolarity
Definition: spi_pal.h:83
spi_clock_phase_t
Defines the edges used for sampling and shifting.
Definition: spi_pal.h:60
void * callbackParam
Definition: spi_pal.h:91
uint8_t rxDMAChannel
Definition: spi_pal.h:106
void(* spi_callback_t)(void *driverState, spi_event_t event, void *userData)
Definition: callbacks.h:44
status_t SPI_MasterTransferBlocking(spi_instance_t instance, void *txBuffer, void *rxBuffer, uint16_t numberOfFrames, uint16_t timeout)
Initializes a blocking master transfer.
Definition: spi_pal.c:266
void * callbackParam
Definition: spi_pal.h:109
uint8_t frameSize
Definition: spi_pal.h:81
Defines the extension structure for the SPI over FLEXIO.
Definition: spi_pal.h:116
uint32_t baudRate
Definition: spi_pal.h:80
status_t SPI_GetDefaultMasterConfig(spi_master_t *config)
Gets the default configuration structure for master.
Definition: spi_pal.c:453
status_t SPI_SlaveTransfer(spi_instance_t instance, void *txBuffer, void *rxBuffer, uint16_t numberOfFrames)
Initializes a non-blocking slave transfer.
Definition: spi_pal.c:387
status_t SPI_MasterInit(spi_instance_t instance, spi_master_t *config)
Initializes the SPI module in master mode.
Definition: spi_pal.c:137
uint8_t txDMAChannel
Definition: spi_pal.h:89
status_t SPI_SlaveTransferBlocking(spi_instance_t instance, void *txBuffer, void *rxBuffer, uint16_t numberOfFrames, uint16_t timeout)
Initializes a blocking slave transfer.
Definition: spi_pal.c:420
spi_clock_phase_t clockPhase
Definition: spi_pal.h:104
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
spi_transfer_bit_order_t bitOrder
Definition: spi_pal.h:101
spi_instance_t
uint8_t ssPin
Definition: spi_pal.h:86
spi_polarity_t clockPolarity
Definition: spi_pal.h:102
Defines the configuration structure for SPI slave.
Definition: spi_pal.h:98
uint8_t frameSize
Definition: spi_pal.h:100
void * extension
Definition: spi_pal.h:92
uint8_t txDMAChannel
Definition: spi_pal.h:107
spi_transfer_type_t transferType
Definition: spi_pal.h:105
spi_transfer_bit_order_t bitOrder
Definition: spi_pal.h:82
Defines the configuration structure for SPI master.
Definition: spi_pal.h:78
spi_polarity_t
Defines the polarity of signals.
Definition: spi_pal.h:51
status_t SPI_SetSS(spi_instance_t, uint8_t ss)
Update the SS.
Definition: spi_pal.c:577
status_t SPI_MasterDeinit(spi_instance_t instance)
De-initializes the spi master module.
Definition: spi_pal.c:499
spi_polarity_t ssPolarity
Definition: spi_pal.h:84
spi_transfer_type_t
Defines the mechanism to update the rx or tx buffers.
Definition: spi_pal.h:42
void * extension
Definition: spi_pal.h:110
status_t SPI_GetDefaultSlaveConfig(spi_slave_t *config)
Gets the default configuration structure for slave.
Definition: spi_pal.c:477
spi_polarity_t ssPolarity
Definition: spi_pal.h:103
status_t SPI_SlaveInit(spi_instance_t instance, spi_slave_t *config)
Initializes the SPI module in slave mode.
Definition: spi_pal.c:299
status_t SPI_GetStatus(spi_instance_t instance)
Gets the status of the last transfer.
Definition: spi_pal.c:612
status_t SPI_MasterTransfer(spi_instance_t instance, void *txBuffer, void *rxBuffer, uint16_t numberOfFrames)
Initializes a non-blocking master transfer.
Definition: spi_pal.c:233
spi_callback_t callback
Definition: spi_pal.h:108
status_t SPI_SlaveDeinit(spi_instance_t instance)
De-initializes the spi slave module.
Definition: spi_pal.c:544
spi_transfer_bit_order_t
Defines the bit order.
Definition: spi_pal.h:69
spi_transfer_type_t transferType
Definition: spi_pal.h:87