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 
43 typedef enum
44 {
48 
53 typedef enum
54 {
58 
63 typedef enum
64 {
68 
73 typedef enum
74 {
78 
84 typedef struct
85 {
86  uint32_t baudRate;
87  uint8_t frameSize;
92  uint8_t ssPin;
94  uint8_t rxDMAChannel;
95  uint8_t txDMAChannel;
97  void *callbackParam;
98  void *extension;
99 } spi_master_t;
100 
105 typedef struct
106 {
107  uint8_t frameSize;
113  uint8_t rxDMAChannel;
114  uint8_t txDMAChannel;
117  void *extension;
118 } spi_slave_t;
119 
120 #if (defined (SPI_OVER_FLEXIO))
121 
125 typedef struct
126 {
127  uint8_t mosiPin;
128  uint8_t misoPin;
129  uint8_t sckPin;
130  uint8_t ssPin;
131 } extension_flexio_for_spi_t;
132 #endif
133 
134 /*******************************************************************************
135  * API
136  ******************************************************************************/
137 
138 #if defined(__cplusplus)
139 extern "C" {
140 #endif
141 
152 status_t SPI_MasterInit(const spi_instance_t * const instance, const spi_master_t *config);
153 
164 status_t SPI_SlaveInit(const spi_instance_t * const instance, const spi_slave_t* config);
165 
175 status_t SPI_SetSS(const spi_instance_t * const instance, uint8_t ss);
176 
188 status_t SPI_MasterTransfer(const spi_instance_t * const instance, const void* txBuffer, void* rxBuffer, uint16_t numberOfFrames);
189 
202 status_t SPI_MasterTransferBlocking(const spi_instance_t * const instance, const void* txBuffer, void* rxBuffer, uint16_t numberOfFrames, uint16_t timeout);
203 
215 status_t SPI_SlaveTransfer(const spi_instance_t * const instance, const void* txBuffer, void* rxBuffer, uint16_t numberOfFrames);
216 
229 status_t SPI_SlaveTransferBlocking(const spi_instance_t * const instance, const void* txBuffer, void* rxBuffer, uint16_t numberOfFrames, uint16_t timeout);
230 
244 status_t SPI_GetStatus(const spi_instance_t * const instance);
245 
255 
265 
274 status_t SPI_MasterDeinit(const spi_instance_t * const instance);
275 
284 status_t SPI_SlaveDeinit(const spi_instance_t * const instance);
285 
305 status_t SPI_MasterSetDelay(const spi_instance_t * const instance, uint32_t delayBetweenTransfers,
306  uint32_t delaySCKtoPCS, uint32_t delayPCStoSCK);
307 
308 #if defined(__cplusplus)
309 }
310 #endif
311 
313 #endif /* SPI_PAL_H */
314 
315 
316 /*******************************************************************************
317  * EOF
318  ******************************************************************************/
spi_callback_t callback
Definition: spi_pal.h:96
spi_clock_phase_t clockPhase
Definition: spi_pal.h:91
uint8_t rxDMAChannel
Definition: spi_pal.h:94
status_t SPI_SlaveTransferBlocking(const spi_instance_t *const instance, const void *txBuffer, void *rxBuffer, uint16_t numberOfFrames, uint16_t timeout)
Initializes a blocking slave transfer.
Definition: spi_pal.c:570
spi_polarity_t clockPolarity
Definition: spi_pal.h:89
spi_clock_phase_t
Defines the edges used for sampling and shifting Implements : spi_clock_phase_t_Class.
Definition: spi_pal.h:63
status_t SPI_SetSS(const spi_instance_t *const instance, uint8_t ss)
Update the SS.
Definition: spi_pal.c:773
status_t SPI_SlaveTransfer(const spi_instance_t *const instance, const void *txBuffer, void *rxBuffer, uint16_t numberOfFrames)
Initializes a non-blocking slave transfer.
Definition: spi_pal.c:526
void * callbackParam
Definition: spi_pal.h:97
uint8_t rxDMAChannel
Definition: spi_pal.h:113
void(* spi_callback_t)(void *driverState, spi_event_t event, void *userData)
Definition: callbacks.h:81
void * callbackParam
Definition: spi_pal.h:116
uint8_t frameSize
Definition: spi_pal.h:87
uint32_t baudRate
Definition: spi_pal.h:86
status_t SPI_GetDefaultMasterConfig(spi_master_t *config)
Gets the default configuration structure for master.
Definition: spi_pal.c:613
uint8_t txDMAChannel
Definition: spi_pal.h:95
spi_clock_phase_t clockPhase
Definition: spi_pal.h:111
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:108
uint8_t ssPin
Definition: spi_pal.h:92
spi_polarity_t clockPolarity
Definition: spi_pal.h:109
Defines the configuration structure for SPI slave Implements: spi_slave_t_Class.
Definition: spi_pal.h:105
uint8_t frameSize
Definition: spi_pal.h:107
status_t SPI_GetStatus(const spi_instance_t *const instance)
Gets the status of the last transfer.
Definition: spi_pal.c:819
void * extension
Definition: spi_pal.h:98
uint8_t txDMAChannel
Definition: spi_pal.h:114
spi_transfer_type_t transferType
Definition: spi_pal.h:112
spi_transfer_bit_order_t bitOrder
Definition: spi_pal.h:88
Defines the configuration structure for SPI master Implements : spi_master_t_Class.
Definition: spi_pal.h:84
spi_polarity_t
Defines the polarity of signals Implements : spi_polarity_t_Class.
Definition: spi_pal.h:53
status_t SPI_MasterDeinit(const spi_instance_t *const instance)
De-initializes the spi master module.
Definition: spi_pal.c:661
spi_polarity_t ssPolarity
Definition: spi_pal.h:90
spi_transfer_type_t
Defines the mechanism to update the rx or tx buffers Implements : spi_transfer_type_t_Class.
Definition: spi_pal.h:43
Structure storing PAL instance information.
void * extension
Definition: spi_pal.h:117
status_t SPI_GetDefaultSlaveConfig(spi_slave_t *config)
Gets the default configuration structure for slave.
Definition: spi_pal.c:638
status_t SPI_MasterInit(const spi_instance_t *const instance, const spi_master_t *config)
Initializes the SPI module in master mode.
Definition: spi_pal.c:205
status_t SPI_MasterTransfer(const spi_instance_t *const instance, const void *txBuffer, void *rxBuffer, uint16_t numberOfFrames)
Initializes a non-blocking master transfer.
Definition: spi_pal.c:327
spi_polarity_t ssPolarity
Definition: spi_pal.h:110
status_t SPI_MasterSetDelay(const spi_instance_t *const instance, uint32_t delayBetweenTransfers, uint32_t delaySCKtoPCS, uint32_t delayPCStoSCK)
Configures the SPI_PAL master mode bus timing delay options.
Definition: spi_pal.c:887
status_t SPI_SlaveInit(const spi_instance_t *const instance, const spi_slave_t *config)
Initializes the SPI module in slave mode.
Definition: spi_pal.c:417
spi_callback_t callback
Definition: spi_pal.h:115
status_t SPI_MasterTransferBlocking(const spi_instance_t *const instance, const void *txBuffer, void *rxBuffer, uint16_t numberOfFrames, uint16_t timeout)
Initializes a blocking master transfer.
Definition: spi_pal.c:372
spi_transfer_bit_order_t
Defines the bit order Implements : spi_transfer_bit_order_t_Class.
Definition: spi_pal.h:73
spi_transfer_type_t transferType
Definition: spi_pal.h:93
status_t SPI_SlaveDeinit(const spi_instance_t *const instance)
De-initializes the spi slave module.
Definition: spi_pal.c:717