Classes | Macros | Typedefs | Functions
gr55xx_ll_i2s.h File Reference

Header file containing functions prototypes of I2S LL library. More...

`#include "gr55xx.h"`
Include dependency graph for gr55xx_ll_i2s.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Classes
struct | _ll_i2s_init_t
| LL I2S init structures definition. More...

## Macros
#define | LL_I2S_STATUS_TXFO I2S_INTSTAT_TXFO
| TX FIFO write overflow flag More...
#define | LL_I2S_STATUS_TXFE I2S_INTSTAT_TXFE
| TX FIFO threshold level is not reached flag. More...
#define | LL_I2S_STATUS_RXFO I2S_INTSTAT_RXFO
| RX FIFO receive overflow flag More...
#define | LL_I2S_STATUS_RXDA I2S_INTSTAT_RXDA
| RX FIFO threshold level is reached flag More...
#define | LL_I2S_INT_TXFO I2S_INTMASK_TXFO
| TX FIFO write overflow interrupt More...
#define | LL_I2S_INT_TXFE I2S_INTMASK_TXFE
| TX FIFO threshold level is not reached interrupt. More...
#define | LL_I2S_INT_RXFO I2S_INTMASK_RXFO
| RX FIFO receive overflow interrupt More...
#define | LL_I2S_INT_RXDA I2S_INTMASK_RXDA
| RX FIFO threshold level is reached interrupt More...
#define | LL_I2S_CLOCK_SRC_96M (0x00000000UL)
| I2S clock source select: 96M More...
#define | LL_I2S_CLOCK_SRC_32M (1UL << 18)
| I2S clock source select: 32M More...
#define | LL_I2S_DATASIZE_IGNORE (0x00000000UL)
| Data size for I2S transfer: 32 bits. More...
#define | LL_I2S_DATASIZE_12BIT (1UL << I2S_RXSIZE_WLEN_Pos)
| Data size for I2S transfer: 12 bits. More...
#define | LL_I2S_DATASIZE_16BIT (2UL << I2S_RXSIZE_WLEN_Pos)
| Data size for I2S transfer: 16 bits. More...
#define | LL_I2S_DATASIZE_20BIT (3UL << I2S_RXSIZE_WLEN_Pos)
| Data size for I2S transfer: 20 bits. More...
#define | LL_I2S_DATASIZE_24BIT (4UL << I2S_RXSIZE_WLEN_Pos)
| Data size for I2S transfer: 24 bits. More...
#define | LL_I2S_DATASIZE_32BIT (5UL << I2S_RXSIZE_WLEN_Pos)
| Data size for I2S transfer: 32 bits. More...
#define | LL_I2S_SIMPLEX_TX (1UL)
| Simplex TX mode. More...
#define | LL_I2S_SIMPLEX_RX (2UL)
| Simplex RX mode. More...
#define | LL_I2S_FULL_DUPLEX (3UL)
| Full-Duplex mode. More...
#define | LL_I2S_THRESHOLD_1FIFO (0x00000000UL)
| Trigger level for FIFO: 1 depth. More...
#define | LL_I2S_THRESHOLD_2FIFO (1UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 2 depth. More...
#define | LL_I2S_THRESHOLD_3FIFO (2UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 3 depth. More...
#define | LL_I2S_THRESHOLD_4FIFO (3UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 4 depth. More...
#define | LL_I2S_THRESHOLD_5FIFO (4UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 5 depth. More...
#define | LL_I2S_THRESHOLD_6FIFO (5UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 6 depth. More...
#define | LL_I2S_THRESHOLD_7FIFO (6UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 7 depth. More...
#define | LL_I2S_THRESHOLD_8FIFO (7UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 8 depth. More...
#define | LL_I2S_THRESHOLD_9FIFO (8UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 9 depth. More...
#define | LL_I2S_THRESHOLD_10FIFO (9UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 10 depth. More...
#define | LL_I2S_THRESHOLD_11FIFO (10UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 11 depth. More...
#define | LL_I2S_THRESHOLD_12FIFO (11UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 12 depth. More...
#define | LL_I2S_THRESHOLD_13FIFO (12UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 13 depth. More...
#define | LL_I2S_THRESHOLD_14FIFO (13UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 14 depth. More...
#define | LL_I2S_THRESHOLD_15FIFO (14UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 15 depth. More...
#define | LL_I2S_THRESHOLD_16FIFO (15UL << I2S_RXFIFO_TL_Pos)
| Trigger level for FIFO: 16 depth. More...
#define | LL_I2S_WS_CYCLES_16 (0x00000000UL)
| 16 SCLK cycles in word select line. More...
#define | LL_I2S_WS_CYCLES_24 (0x1UL << I2S_CLKCONFIG_WSS_Pos)
| 24 SCLK cycles in word select line. More...
#define | LL_I2S_WS_CYCLES_32 (0x2UL << I2S_CLKCONFIG_WSS_Pos)
| 32 SCLK cycles in word select line. More...
#define | LL_I2S_SCLKG_NONE (0x00000000UL)
| Clock gating is disabled. More...
#define | LL_I2S_SCLKG_CYCLES_12 (0x1UL << I2S_CLKCONFIG_SCLKG_Pos)
| Gating after 12 sclk cycles. More...
#define | LL_I2S_SCLKG_CYCLES_16 (0x2UL << I2S_CLKCONFIG_SCLKG_Pos)
| Gating after 16 sclk cycles. More...
#define | LL_I2S_SCLKG_CYCLES_20 (0x3UL << I2S_CLKCONFIG_SCLKG_Pos)
| Gating after 20 sclk cycles. More...
#define | LL_I2S_SCLKG_CYCLES_24 (0x4UL << I2S_CLKCONFIG_SCLKG_Pos)
| Gating after 24 sclk cycles. More...
#define | LL_I2S_RESOLUTION_12BIT (0UL)
| 12 bits resolution. More...
#define | LL_I2S_RESOLUTION_16BIT (1UL)
| 16 bits resolution. More...
#define | LL_I2S_RESOLUTION_20BIT (2UL)
| 20 bits resolution. More...
#define | LL_I2S_RESOLUTION_24BIT (3UL)
| 24 bits resolution. More...
#define | LL_I2S_RESOLUTION_32BIT (4UL)
| 32 bits resolution. More...
#define | LL_I2S_CHANNEL_NUM_1 (0UL)
| 1 channel. More...
#define | LL_I2S_CHANNEL_NUM_2 (1UL)
| 2 channels. More...
#define | LL_I2S_CHANNEL_NUM_3 (2UL)
| 3 channels. More...
#define | LL_I2S_CHANNEL_NUM_4 (3UL)
| 4 channels. More...
#define | LL_I2S_FIFO_DEPTH_2 (0UL)
| FIFO depth is 2 . More...
#define | LL_I2S_FIFO_DEPTH_4 (1UL)
| FIFO depth is 4 . More...
#define | LL_I2S_FIFO_DEPTH_8 (2UL)
| FIFO depth is 8 . More...
#define | LL_I2S_FIFO_DEPTH_16 (3UL)
| FIFO depth is 16. More...
#define | LL_I2S_APB_WIDTH_8BIT (0UL)
| 8 bits APB data width. More...
#define | LL_I2S_APB_WIDTH_16BIT (1UL)
| 16 bits APB data width. More...
#define | LL_I2S_APB_WIDTH_32BIT (2UL)
| 32 bits APB data width. More...
#define | LL_I2S_DEFAULT_CONFIG
| LL I2S InitStrcut default configuartion. More...
#define | LL_I2S_WriteReg(__instance__, __REG__, __VALUE__) WRITE_REG(__instance__->__REG__, (__VALUE__))
| Write a value in I2S register. More...
#define | LL_I2S_ReadReg(__instance__, __REG__) READ_REG(__instance__->__REG__)
| Read a value in I2S register. More...

## Typedefs
typedef struct _ll_i2s_init_t | ll_i2s_init_t
| LL I2S init structures definition. More...

## Functions
__STATIC_INLINE void | ll_i2s_enable (i2s_regs_t *I2Sx)
| Enable I2S. More...
__STATIC_INLINE void | ll_i2s_disable (i2s_regs_t *I2Sx)
| Disable I2S. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled (i2s_regs_t *I2Sx)
| Check if I2S is enabled. More...
__STATIC_INLINE void | ll_i2s_enable_rxblock (i2s_regs_t *I2Sx)
| Enable I2S RX block. More...
__STATIC_INLINE void | ll_i2s_disable_rxblock (i2s_regs_t *I2Sx)
| Disable I2S RX block. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_rxblock (i2s_regs_t *I2Sx)
| Check if I2S RX block is enabled. More...
__STATIC_INLINE void | ll_i2s_enable_txblock (i2s_regs_t *I2Sx)
| Enable I2S TX block. More...
__STATIC_INLINE void | ll_i2s_disable_txblock (i2s_regs_t *I2Sx)
| Disable I2S TX block. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_txblock (i2s_regs_t *I2Sx)
| Check if I2S TX block is enabled. More...
__STATIC_INLINE void | ll_i2s_enable_clock (i2s_regs_t *I2Sx)
| Enable I2S clock. More...
__STATIC_INLINE void | ll_i2s_disable_clock (i2s_regs_t *I2Sx)
| Disable I2S clock. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_clock (i2s_regs_t *I2Sx)
| Check if I2S clock is enabled. More...
__STATIC_INLINE void | ll_i2s_set_wss (i2s_regs_t *I2Sx, uint32_t cycles)
| Set word select line cycles for left or right sample. More...
__STATIC_INLINE uint32_t | ll_i2s_get_wss (i2s_regs_t *I2Sx)
| Get word select line cycles for left or right sample. More...
__STATIC_INLINE void | ll_i2s_set_sclkg (i2s_regs_t *I2Sx, uint32_t cycles)
| Set the gating of sclk. More...
__STATIC_INLINE uint32_t | ll_i2s_get_sclkg (i2s_regs_t *I2Sx)
| Get the gating of sclk. More...
__STATIC_INLINE void | ll_i2s_clr_rxfifo_all (i2s_regs_t *I2Sx)
| Clear I2S RX FIFO in all channels. More...
__STATIC_INLINE void | ll_i2s_clr_txfifo_all (i2s_regs_t *I2Sx)
| Clear I2S TX FIFO in all channels. More...
__STATIC_INLINE void | ll_i2s_set_clock_div (uint32_t div)
| Set I2S clock divider. More...
__STATIC_INLINE uint32_t | ll_i2s_get_clock_div (void)
| Get I2S clock divider. More...
__STATIC_INLINE void | ll_i2s_enable_clock_div (void)
| Enable I2S clock divider. More...
__STATIC_INLINE void | ll_i2s_disable_clock_div (void)
| Disable I2S clock divider. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_clock_div (void)
| Check if I2S clock divider is enabled. More...
__STATIC_INLINE void | ll_i2s_set_clock_src (uint32_t src)
| Set I2S clock source. More...
__STATIC_INLINE uint32_t | ll_i2s_get_clock_src (void)
| Get I2S clock source. More...
__STATIC_INLINE uint32_t | ll_i2s_receive_ldata (i2s_regs_t *I2Sx, uint8_t channel)
| Read one data from left RX FIFO in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_receive_rdata (i2s_regs_t *I2Sx, uint8_t channel)
| Read one data from right RX FIFO in a channel. More...
__STATIC_INLINE void | ll_i2s_transmit_ldata (i2s_regs_t *I2Sx, uint8_t channel, uint32_t data)
| Write one data to left TX FIFO in a channel. More...
__STATIC_INLINE void | ll_i2s_transmit_rdata (i2s_regs_t *I2Sx, uint8_t channel, uint32_t data)
| Write one data to right TX FIFO in a channel. More...
__STATIC_INLINE void | ll_i2s_enable_rx (i2s_regs_t *I2Sx, uint8_t channel)
| Enable RX in a channel. More...
__STATIC_INLINE void | ll_i2s_disable_rx (i2s_regs_t *I2Sx, uint8_t channel)
| Disable RX in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_rx (i2s_regs_t *I2Sx, uint8_t channel)
| Check if RX in a channel is enabled. More...
__STATIC_INLINE void | ll_i2s_enable_tx (i2s_regs_t *I2Sx, uint8_t channel)
| Enable TX in a channel. More...
__STATIC_INLINE void | ll_i2s_disable_tx (i2s_regs_t *I2Sx, uint8_t channel)
| Disable TX in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_tx (i2s_regs_t *I2Sx, uint8_t channel)
| Check if TX in a channel is enabled. More...
__STATIC_INLINE void | ll_i2s_set_rxsize (i2s_regs_t *I2Sx, uint8_t channel, uint32_t size)
| Set receive data width in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_get_rxsize (i2s_regs_t *I2Sx, uint8_t channel)
| Get receive data width in a channel. More...
__STATIC_INLINE void | ll_i2s_set_txsize (i2s_regs_t *I2Sx, uint8_t channel, uint32_t size)
| Set transmit data width in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_get_txsize (i2s_regs_t *I2Sx, uint8_t channel)
| Get transmit data width in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_get_it_flag (i2s_regs_t *I2Sx, uint8_t channel)
| Get interrupt flag in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_is_active_it_flag (i2s_regs_t *I2Sx, uint8_t channel, uint32_t flag)
| Check interrupt flag in a channel. More...
__STATIC_INLINE void | ll_i2s_enable_it (i2s_regs_t *I2Sx, uint8_t channel, uint32_t mask)
| Enable interrupt in a channel. More...
__STATIC_INLINE void | ll_i2s_disable_it (i2s_regs_t *I2Sx, uint8_t channel, uint32_t mask)
| Disable interrupt in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_it (i2s_regs_t *I2Sx, uint8_t channel, uint32_t mask)
| Check if interrupt in a channel is enabled. More...
__STATIC_INLINE uint32_t | ll_i2s_clear_it_rxovr (i2s_regs_t *I2Sx, uint8_t channel)
| Clear RX FIFO data overrun interrupt flag in a channel. More...
__STATIC_INLINE uint32_t | ll_i2s_clear_it_txovr (i2s_regs_t *I2Sx, uint8_t channel)
| Clear TX FIFO data overrun interrupt flag in a channel. More...
__STATIC_INLINE void | ll_i2s_set_rx_fifo_threshold (i2s_regs_t *I2Sx, uint8_t channel, uint32_t threshold)
| Set threshold of RXFIFO in a channel that triggers an RXDA event. More...
__STATIC_INLINE uint32_t | ll_i2s_get_rx_fifo_threshold (i2s_regs_t *I2Sx, uint8_t channel)
| Get threshold of RXFIFO in a channel that triggers an RXDA event. More...
__STATIC_INLINE void | ll_i2s_set_tx_fifo_threshold (i2s_regs_t *I2Sx, uint8_t channel, uint32_t threshold)
| Set threshold of TXFIFO in a channel that triggers an TXFE event. More...
__STATIC_INLINE uint32_t | ll_i2s_get_tx_fifo_threshold (i2s_regs_t *I2Sx, uint8_t channel)
| Get threshold of TXFIFO in a channel that triggers an TXFE event. More...
__STATIC_INLINE void | ll_i2s_clr_rxfifo_channel (i2s_regs_t *I2Sx, uint8_t channel)
| Clear RX FIFO data in a channel. More...
__STATIC_INLINE void | ll_i2s_clr_txfifo_channel (i2s_regs_t *I2Sx, uint8_t channel)
| Clear TX FIFO data in a channel. More...
__STATIC_INLINE void | ll_i2s_rst_rxdma (i2s_regs_t *I2Sx)
| Reset RX block DMA. More...
__STATIC_INLINE void | ll_i2s_rst_txdma (i2s_regs_t *I2Sx)
| Reset TX block DMA. More...
__STATIC_INLINE void | ll_i2s_enable_dma (i2s_regs_t *I2Sx)
| Enable I2S DMA. More...
__STATIC_INLINE void | ll_i2s_disable_dma (i2s_regs_t *I2Sx)
| Disable I2S DMA. More...
__STATIC_INLINE uint32_t | ll_i2s_is_enabled_dma (i2s_regs_t *I2Sx)
| Check if I2S DMA is enabled. More...
__STATIC_INLINE uint32_t | ll_i2s_get_rx_resolution (i2s_regs_t *I2Sx, uint8_t channel)
| Get I2S component paramenters: rx resolution. More...
__STATIC_INLINE uint32_t | ll_i2s_get_tx_resolution (i2s_regs_t *I2Sx, uint8_t channel)
| Get I2S component paramenters: tx resolution. More...
__STATIC_INLINE uint32_t | ll_i2s_get_tx_channels (i2s_regs_t *I2Sx)
| Get I2S component paramenters: the number of tx channels. More...
__STATIC_INLINE uint32_t | ll_i2s_get_rx_channels (i2s_regs_t *I2Sx)
| Get I2S component paramenters: the number of rx channels. More...
__STATIC_INLINE uint32_t | ll_i2s_get_rx_block (i2s_regs_t *I2Sx)
| Get I2S component paramenters: whether the receiver block is enabled or not. More...
__STATIC_INLINE uint32_t | ll_i2s_get_tx_block (i2s_regs_t *I2Sx)
| Get I2S component paramenters: whether the transmitter block is enabled or not. More...
__STATIC_INLINE uint32_t | ll_i2s_get_master_mode (i2s_regs_t *I2Sx)
| Get I2S component paramenters: whether the master mode is enabled or not. More...
__STATIC_INLINE uint32_t | ll_i2s_get_fifo_depth (i2s_regs_t *I2Sx)
| Get I2S component paramenters: FIOF depth. More...
__STATIC_INLINE uint32_t | ll_i2s_get_apb_width (i2s_regs_t *I2Sx)
| Get I2S component paramenters: APB data width. More...
__STATIC_INLINE uint32_t | ll_i2s_get_version (i2s_regs_t *I2Sx)
| Get I2S component version. More...
__STATIC_INLINE uint32_t | ll_i2s_get_type (i2s_regs_t *I2Sx)
| Get I2S component type. More...
error_status_t | ll_i2s_deinit (i2s_regs_t *I2Sx)
| De-initialize I2S registers (Registers restored to their default values). More...
error_status_t | ll_i2s_init (i2s_regs_t *I2Sx, ll_i2s_init_t *p_i2s_init)
| Initialize I2S_M registers according to the specified parameters in p_i2s_init. More...
void | ll_i2s_struct_init (ll_i2s_init_t *p_i2s_init)
| Set each field of a ll_i2s_init_t type structure to default value. More...

## Detailed Description

Header file containing functions prototypes of I2S LL library.

Author
  BLE Driver Team

Attention

  ##### Copyright (c) 2019 GOODIX

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of GOODIX nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Definition in file gr55xx_ll_i2s.h.