i2s_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 I2S_PAL_H
19 #define I2S_PAL_H
20 
21 #include "i2s_pal_mapping.h"
22 #include "status.h"
23 #include "callbacks.h"
24 
32 /*******************************************************************************
33  * Definitions
34  ******************************************************************************/
40 typedef enum
41 {
45 
51 typedef enum
52 {
53  I2S_MASTER = 0U,
54  I2S_SLAVE = 1U,
55 } i2s_mode_t;
56 
62 typedef struct
63 {
66  uint32_t baudRate;
67  uint8_t wordWidth;
71  void *callbackParam;
72  uint8_t rxDMAChannel;
73  uint8_t txDMAChannel;
74  void *extension;
76 
77 #if (defined (I2S_OVER_FLEXIO))
78 
81 typedef struct
82 {
83  uint8_t txPin;
84  uint8_t rxPin;
85  uint8_t sckPin;
86  uint8_t wsPin;
87 } extension_flexio_for_i2s_t;
88 #endif
89 
90 /*******************************************************************************
91  * API
92  ******************************************************************************/
93 
104 status_t I2S_Init(const i2s_instance_t* instance, const i2s_user_config_t * config);
105 
113 status_t I2S_Deinit(const i2s_instance_t* instance);
114 
124 status_t I2S_GetBaudRate(const i2s_instance_t* instance,
125  uint32_t * configuredBaudRate);
126 
137 status_t I2S_SetTxBuffer(const i2s_instance_t* instance,
138  const uint8_t * txBuff,
139  uint32_t txSize);
140 
151 status_t I2S_SetRxBuffer(const i2s_instance_t* instance,
152  uint8_t * rxBuff,
153  uint32_t rxSize);
154 
168  const i2s_instance_t* instance,
169  const uint8_t * txBuff,
170  uint32_t txSize,
171  uint32_t timeout);
172 
184 status_t I2S_SendData(const i2s_instance_t* instance,
185  const uint8_t * txBuff,
186  uint32_t txSize);
187 
202 status_t I2S_GetStatus(const i2s_instance_t* instance,
203  uint32_t * countRemaining);
204 
218  const i2s_instance_t* instance,
219  uint8_t * rxBuff,
220  uint32_t rxSize,
221  uint32_t timeout);
222 
234 status_t I2S_ReceiveData(const i2s_instance_t* instance,
235  uint8_t * rxBuff,
236  uint32_t rxSize);
237 
243 status_t I2S_Abort(const i2s_instance_t* instance);
244 
245 
246 #if defined(__cplusplus)
247 extern "C" {
248 #endif
249 
250 #if defined(__cplusplus)
251 }
252 #endif
253 
256 #endif /* I2S_PAL_H */
257 
258 /*******************************************************************************
259  * EOF
260  ******************************************************************************/
i2s_transfer_type_t transferType
Definition: i2s_pal.h:64
status_t I2S_GetBaudRate(const i2s_instance_t *instance, uint32_t *configuredBaudRate)
Returns the i2s baud rate.
Definition: i2s_pal.c:473
i2s_transfer_type_t
Defines the transfer type.
Definition: i2s_pal.h:40
status_t I2S_ReceiveDataBlocking(const i2s_instance_t *instance, uint8_t *rxBuff, uint32_t rxSize, uint32_t timeout)
Perform a blocking I2S reception.
Definition: i2s_pal.c:787
status_t I2S_SendDataBlocking(const i2s_instance_t *instance, const uint8_t *txBuff, uint32_t txSize, uint32_t timeout)
Perform a blocking I2S transmission.
Definition: i2s_pal.c:505
I2S user configuration structure.
Definition: i2s_pal.h:62
i2s_callback_t callback
Definition: i2s_pal.h:70
status_t I2S_Deinit(const i2s_instance_t *instance)
De-initializes the I2S module.
Definition: i2s_pal.c:432
uint32_t baudRate
Definition: i2s_pal.h:66
uint8_t rxDMAChannel
Definition: i2s_pal.h:72
i2s_mode_t
Master or slave.
Definition: i2s_pal.h:51
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
status_t I2S_ReceiveData(const i2s_instance_t *instance, uint8_t *rxBuff, uint32_t rxSize)
Perform a non-blocking I2S reception.
Definition: i2s_pal.c:837
Structure storing PAL instance information.
status_t I2S_SetRxBuffer(const i2s_instance_t *instance, uint8_t *rxBuff, uint32_t rxSize)
Keep receiving.
Definition: i2s_pal.c:551
status_t I2S_Init(const i2s_instance_t *instance, const i2s_user_config_t *config)
Initializes the I2S module.
Definition: i2s_pal.c:269
status_t I2S_Abort(const i2s_instance_t *instance)
Terminates a non-blocking transfer early.
Definition: i2s_pal.c:673
void * extension
Definition: i2s_pal.h:74
status_t I2S_SendData(const i2s_instance_t *instance, const uint8_t *txBuff, uint32_t txSize)
Perform a non-blocking I2S transmission.
Definition: i2s_pal.c:628
void(* i2s_callback_t)(i2s_event_t event, void *userData)
Definition: callbacks.h:142
void * callbackParam
Definition: i2s_pal.h:71
status_t I2S_GetStatus(const i2s_instance_t *instance, uint32_t *countRemaining)
Get the status of the current I2S transfer.
Definition: i2s_pal.c:728
status_t I2S_SetTxBuffer(const i2s_instance_t *instance, const uint8_t *txBuff, uint32_t txSize)
Keep sending.
Definition: i2s_pal.c:590
i2s_mode_t mode
Definition: i2s_pal.h:65
uint8_t txDMAChannel
Definition: i2s_pal.h:73
uint8_t wordWidth
Definition: i2s_pal.h:67