123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485 |
- /*
- * @brief I2S Registers and control functions
- *
- * @note
- * Copyright(C) NXP Semiconductors, 2012
- * All rights reserved.
- *
- * @par
- * Software that is described herein is for illustrative purposes only
- * which provides customers with programming information regarding the
- * LPC products. This software is supplied "AS IS" without any warranties of
- * any kind, and NXP Semiconductors and its licensor disclaim any and
- * all warranties, express or implied, including all implied warranties of
- * merchantability, fitness for a particular purpose and non-infringement of
- * intellectual property rights. NXP Semiconductors assumes no responsibility
- * or liability for the use of the software, conveys no license or rights under any
- * patent, copyright, mask work right, or any other intellectual property rights in
- * or to any products. NXP Semiconductors reserves the right to make changes
- * in the software without notification. NXP Semiconductors also makes no
- * representation or warranty that such application will be suitable for the
- * specified use without further testing or modification.
- *
- * @par
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, under NXP Semiconductors' and its
- * licensor's relevant copyrights in the software, without fee, provided that it
- * is used in conjunction with NXP Semiconductors microcontrollers. This
- * copyright, permission, and disclaimer notice must appear in all copies of
- * this code.
- */
- #ifndef __I2S_001_H_
- #define __I2S_001_H_
- #include "sys_config.h"
- #include "cmsis.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /** @defgroup IP_I2S_001 IP: I2S register block and driver
- * @ingroup IP_Drivers
- * @{
- */
- /**
- * @brief I2S register block structure
- */
- typedef struct { /*!< I2S Structure */
- __IO uint32_t DAO; /*!< I2S Digital Audio Output Register. Contains control bits for the I2S transmit channel */
- __IO uint32_t DAI; /*!< I2S Digital Audio Input Register. Contains control bits for the I2S receive channel */
- __O uint32_t TXFIFO; /*!< I2S Transmit FIFO. Access register for the 8 x 32-bit transmitter FIFO */
- __I uint32_t RXFIFO; /*!< I2S Receive FIFO. Access register for the 8 x 32-bit receiver FIFO */
- __I uint32_t STATE; /*!< I2S Status Feedback Register. Contains status information about the I2S interface */
- __IO uint32_t DMA1; /*!< I2S DMA Configuration Register 1. Contains control information for DMA request 1 */
- __IO uint32_t DMA2; /*!< I2S DMA Configuration Register 2. Contains control information for DMA request 2 */
- __IO uint32_t IRQ; /*!< I2S Interrupt Request Control Register. Contains bits that control how the I2S interrupt request is generated */
- __IO uint32_t TXRATE; /*!< I2S Transmit MCLK divider. This register determines the I2S TX MCLK rate by specifying the value to divide PCLK by in order to produce MCLK */
- __IO uint32_t RXRATE; /*!< I2S Receive MCLK divider. This register determines the I2S RX MCLK rate by specifying the value to divide PCLK by in order to produce MCLK */
- __IO uint32_t TXBITRATE; /*!< I2S Transmit bit rate divider. This register determines the I2S transmit bit rate by specifying the value to divide TX_MCLK by in order to produce the transmit bit clock */
- __IO uint32_t RXBITRATE; /*!< I2S Receive bit rate divider. This register determines the I2S receive bit rate by specifying the value to divide RX_MCLK by in order to produce the receive bit clock */
- __IO uint32_t TXMODE; /*!< I2S Transmit mode control */
- __IO uint32_t RXMODE; /*!< I2S Receive mode control */
- } IP_I2S_001_Type;
- /**
- * @brief I2S configuration parameter defines
- */
- /** I2S Wordwidth bit */
- #define I2S_WORDWIDTH_8 (0UL << 0)
- #define I2S_WORDWIDTH_16 (1UL << 0)
- #define I2S_WORDWIDTH_32 (3UL << 0)
- /** I2S Channel bit */
- #define I2S_STEREO (0UL << 2)
- #define I2S_MONO (1UL << 2)
- /** I2S Master/Slave mode bit */
- #define I2S_MASTER_MODE (0UL << 5)
- #define I2S_SLAVE_MODE (1UL << 5)
- /** I2S Stop bit */
- #define I2S_STOP_ENABLE (0UL << 3)
- #define I2S_STOP_DISABLE (1UL << 3)
- /** I2S Reset bit */
- #define I2S_RESET_ENABLE (1UL << 4)
- #define I2S_RESET_DISABLE (0UL << 4)
- /** I2S Mute bit */
- #define I2S_MUTE_ENABLE (1UL << 15)
- #define I2S_MUTE_DISABLE (0UL << 15)
- /**
- * @brief Macro defines for DAO-Digital Audio Output register
- */
- /** I2S wordwide - the number of bytes in data*/
- #define I2S_DAO_WORDWIDTH_8 ((uint32_t) (0)) /** 8 bit */
- #define I2S_DAO_WORDWIDTH_16 ((uint32_t) (1)) /** 16 bit */
- #define I2S_DAO_WORDWIDTH_32 ((uint32_t) (3)) /** 32 bit */
- #define I2S_DAO_WORDWIDTH_MASK ((uint32_t) (3))
- /** I2S control mono or stereo format */
- #define I2S_DAO_MONO ((uint32_t) (1 << 2))
- /** I2S control stop mode */
- #define I2S_DAO_STOP ((uint32_t) (1 << 3))
- /** I2S control reset mode */
- #define I2S_DAO_RESET ((uint32_t) (1 << 4))
- /** I2S control master/slave mode */
- #define I2S_DAO_SLAVE ((uint32_t) (1 << 5))
- /** I2S word select half period minus one */
- #define I2S_DAO_WS_HALFPERIOD(n) ((uint32_t) ((n & 0x1FF) << 6))
- #define I2S_DAO_WS_HALFPERIOD_MASK ((uint32_t) ((0x1FF) << 6))
- /** I2S control mute mode */
- #define I2S_DAO_MUTE ((uint32_t) (1 << 15))
- /**
- * @brief Macro defines for DAI-Digital Audio Input register
- */
- /** I2S wordwide - the number of bytes in data*/
- #define I2S_DAI_WORDWIDTH_8 ((uint32_t) (0)) /** 8 bit */
- #define I2S_DAI_WORDWIDTH_16 ((uint32_t) (1)) /** 16 bit */
- #define I2S_DAI_WORDWIDTH_32 ((uint32_t) (3)) /** 32 bit */
- #define I2S_DAI_WORDWIDTH_MASK ((uint32_t) (3))
- /** I2S control mono or stereo format */
- #define I2S_DAI_MONO ((uint32_t) (1 << 2))
- /** I2S control stop mode */
- #define I2S_DAI_STOP ((uint32_t) (1 << 3))
- /** I2S control reset mode */
- #define I2S_DAI_RESET ((uint32_t) (1 << 4))
- /** I2S control master/slave mode */
- #define I2S_DAI_SLAVE ((uint32_t) (1 << 5))
- /** I2S word select half period minus one (9 bits)*/
- #define I2S_DAI_WS_HALFPERIOD(n) ((uint32_t) ((n & 0x1FF) << 6))
- #define I2S_DAI_WS_HALFPERIOD_MASK ((uint32_t) ((0x1FF) << 6))
- /**
- * @brief Macro defines for STAT register (Status Feedback register)
- */
- /** I2S Status Receive or Transmit Interrupt */
- #define I2S_STATE_IRQ ((uint32_t) (1))
- /** I2S Status Receive or Transmit DMA1 */
- #define I2S_STATE_DMA1 ((uint32_t) (1 << 1))
- /** I2S Status Receive or Transmit DMA2 */
- #define I2S_STATE_DMA2 ((uint32_t) (1 << 2))
- /** I2S Status Current level of the Receive FIFO (5 bits)*/
- #define I2S_STATE_RX_LEVEL(n) ((uint32_t) ((n & 1F) << 8))
- /** I2S Status Current level of the Transmit FIFO (5 bits)*/
- #define I2S_STATE_TX_LEVEL(n) ((uint32_t) ((n & 1F) << 16))
- /**
- * @brief Macro defines for DMA1 register (DMA1 Configuration register)
- */
- /** I2S control DMA1 for I2S receive */
- #define I2S_DMA1_RX_ENABLE ((uint32_t) (1))
- /** I2S control DMA1 for I2S transmit */
- #define I2S_DMA1_TX_ENABLE ((uint32_t) (1 << 1))
- /** I2S set FIFO level that trigger a receive DMA request on DMA1 */
- #define I2S_DMA1_RX_DEPTH(n) ((uint32_t) ((n & 0x1F) << 8))
- /** I2S set FIFO level that trigger a transmit DMA request on DMA1 */
- #define I2S_DMA1_TX_DEPTH(n) ((uint32_t) ((n & 0x1F) << 16))
- /**
- * @brief Macro defines for DMA2 register (DMA2 Configuration register)
- */
- /** I2S control DMA2 for I2S receive */
- #define I2S_DMA2_RX_ENABLE ((uint32_t) (1))
- /** I2S control DMA1 for I2S transmit */
- #define I2S_DMA2_TX_ENABLE ((uint32_t) (1 << 1))
- /** I2S set FIFO level that trigger a receive DMA request on DMA1 */
- #define I2S_DMA2_RX_DEPTH(n) ((uint32_t) ((n & 0x1F) << 8))
- /** I2S set FIFO level that trigger a transmit DMA request on DMA1 */
- #define I2S_DMA2_TX_DEPTH(n) ((uint32_t) ((n & 0x1F) << 16))
- /**
- * @brief Macro defines for IRQ register (Interrupt Request Control register)
- */
- /** I2S control I2S receive interrupt */
- #define I2S_IRQ_RX_ENABLE ((uint32_t) (1))
- /** I2S control I2S transmit interrupt */
- #define I2S_IRQ_TX_ENABLE ((uint32_t) (1 << 1))
- /** I2S set the FIFO level on which to create an irq request */
- #define I2S_IRQ_RX_DEPTH(n) ((uint32_t) ((n & 0x0F) << 8))
- #define I2S_IRQ_RX_DEPTH_MASK ((uint32_t) ((0x0F) << 8))
- /** I2S set the FIFO level on which to create an irq request */
- #define I2S_IRQ_TX_DEPTH(n) ((uint32_t) ((n & 0x0F) << 16))
- #define I2S_IRQ_TX_DEPTH_MASK ((uint32_t) ((0x0F) << 16))
- /**
- * @brief Macro defines for TXRATE/RXRATE register (Transmit/Receive Clock Rate register)
- */
- /** I2S Transmit MCLK rate denominator */
- #define I2S_TXRATE_Y_DIVIDER(n) ((uint32_t) (n & 0xFF))
- /** I2S Transmit MCLK rate denominator */
- #define I2S_TXRATE_X_DIVIDER(n) ((uint32_t) ((n & 0xFF) << 8))
- /** I2S Receive MCLK rate denominator */
- #define I2S_RXRATE_Y_DIVIDER(n) ((uint32_t) (n & 0xFF))
- /** I2S Receive MCLK rate denominator */
- #define I2S_RXRATE_X_DIVIDER(n) ((uint32_t) ((n & 0xFF) << 8))
- /**
- * @brief Macro defines for TXBITRATE & RXBITRATE register (Transmit/Receive Bit Rate register)
- */
- #define I2S_TXBITRATE(n) ((uint32_t) (n & 0x3F))
- #define I2S_RXBITRATE(n) ((uint32_t) (n & 0x3F))
- /**
- * @brief Macro defines for TXMODE/RXMODE register (Transmit/Receive Mode Control register)
- */
- /** I2S Transmit select clock source (2 bits)*/
- #define I2S_TXMODE_CLKSEL(n) ((uint32_t) (n & 0x03))
- /** I2S Transmit control 4-pin mode */
- #define I2S_TXMODE_4PIN_ENABLE ((uint32_t) (1 << 2))
- /** I2S Transmit control the TX_MCLK output */
- #define I2S_TXMODE_MCENA ((uint32_t) (1 << 3))
- /** I2S Receive select clock source */
- #define I2S_RXMODE_CLKSEL(n) ((uint32_t) (n & 0x03))
- /** I2S Receive control 4-pin mode */
- #define I2S_RXMODE_4PIN_ENABLE ((uint32_t) (1 << 2))
- /** I2S Receive control the TX_MCLK output */
- #define I2S_RXMODE_MCENA ((uint32_t) (1 << 3))
- /**
- * @brief I2S transmit/receive mode for configuration
- */
- typedef enum {
- I2S_TX_MODE,
- I2S_RX_MODE,
- } IP_I2S_TRxMode_Type;
- /**
- * @brief I2S DMA request channel define
- */
- typedef enum {
- IP_I2S_DMA_REQUEST_NUMBER_1,
- IP_I2S_DMA_REQUEST_NUMBER_2,
- } IP_I2S_DMARequestNumber_Type;
- /**********************************************************************************
- * I2S Init/DeInit functions
- *********************************************************************************/
- /**
- * @brief Initialize for I2S
- * @param pI2S : The base of I2S peripheral on the chip
- * @return Nothing
- */
- void IP_I2S_Init(IP_I2S_001_Type *pI2S);
- /**
- * @brief Shutdown I2S
- * @param pI2S : The base of I2S peripheral on the chip
- * @return Nothing
- * Reset all relative registers (DMA, transmit/receive control, interrupt) to default value
- */
- void IP_I2S_DeInit(IP_I2S_001_Type *pI2S);
- /**********************************************************************************
- * I2S configuration functions
- *********************************************************************************/
- /**
- * @brief Selects the number of bytes in data
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param wordwidth : Data width, should be :
- * - I2S_WORDWIDTH_8
- * - I2S_WORDWIDTH_16
- * - I2S_WORDWIDTH_32
- * @return Nothing
- */
- void IP_I2S_SetWordWidth(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t wordwidth);
- /**
- * @brief Set I2S data format is monaural or stereo
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param mono : Data channel, should be
- * - I2S_STEREO
- * - I2S_MONO
- * @return Nothing
- */
- void IP_I2S_SetMono(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t mono);
- /**
- * @brief Set I2S interface in master/slave mode
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param mode : Interface mode, should be
- * - I2S_MASTER_MODE
- * - I2S_SLAVE_MODE
- * @return Nothing
- */
- void IP_I2S_SetMasterSlaveMode(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t mode);
- /**
- * @brief Set the clock frequency for I2S interface
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param mclk_divider : Clock divider. This value plus one is used to divide MCLK to produce the clock frequency for I2S interface
- * @return Nothing
- * The value depends on the audio sample rate desired and the data size and format(stereo/mono) used.
- * For example, a 48 kHz sample rate for 16-bit stereo data requires a bit rate of 48 000 x 16 x 2 = 1.536 MHz. So the mclk_divider should be MCLK/1.536 MHz
- */
- void IP_I2S_SetBitRate(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t mclk_divider);
- /**
- * @brief Set the MCLK rate by using a fractional rate generator, dividing down the frequency of PCLK
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param x_divider : I2S transmit MCLK rate numerator
- * @param y_devider : I2S transmit MCLK rate denominator
- * @return Nothing
- * Values of the numerator (X) and the denominator (Y) must be chosen to
- * produce a frequency twice that desired for the transmitter MCLK, which
- * must be an integer multiple of the transmitter bit clock rate.
- * The equation for the fractional rate generator is:
- * MCLK = PCLK * (X/Y) /2
- * Note: If the value of X or Y is 0, then no clock is generated. Also, the value of Y must be
- * greater than or equal to X.
- */
- void IP_I2S_SetXYDivider(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint8_t x_divider, uint8_t y_devider);
- /**
- * @brief Set word select (WS) half period
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param ws_halfperiod : I2S word select half period minus one
- * @return Nothing
- * The Word Select period is configured separately for I2S input and I2S output.
- * For example: if the WS is 64clk period -> ws_halfperiod = 31
- */
- void IP_I2S_SetWS_Halfperiod(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t ws_halfperiod);
- /**
- * @brief Set the I2S operating modes
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param clksel : Clock source selection for the receive bit clock divider
- * @param fpin : Receive 4-pin mode selection
- * @param mcena : Enable for the RX_MCLK output
- * @return Nothing
- * In addition to master and slave modes, which are independently configurable for
- * the transmitter and the receiver, several different clock sources are possible,
- * including variations that share the clock and/or WS between the transmitter and
- * receiver. It also allows using I2S with fewer pins, typically four.
- */
- void IP_I2S_ModeConfig(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t clksel, uint32_t fpin, uint32_t mcena);
- /**
- * @brief Get the current level of the Transmit/Receive FIFO
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @return Current level of the Transmit/Receive FIFO
- */
- uint8_t IP_I2S_GetLevel(IP_I2S_001_Type *pI2S, uint8_t TRMode);
- /**********************************************************************************
- * I2S operate functions
- *********************************************************************************/
- /**
- * @brief Send a 32-bit data to TXFIFO for transmition
- * @param pI2S : The base of I2S peripheral on the chip
- * @param data : Data to be transmited
- * @return Nothing
- * The function writes to TXFIFO without checking any condition.
- */
- void IP_I2S_Send(IP_I2S_001_Type *pI2S, uint32_t data);
- /**
- * @brief Get received data from RXFIFO
- * @param pI2S : The base of I2S peripheral on the chip
- * @return Data received in RXFIFO
- * The function reads from RXFIFO without checking any condition.
- */
- uint32_t IP_I2S_Receive(IP_I2S_001_Type *pI2S);
- /**
- * @brief Start the I2S
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @return Nothing
- */
- void IP_I2S_Start(IP_I2S_001_Type *pI2S, uint8_t TRMode);
- /**
- * @brief Disables accesses on FIFOs, places the transmit channel in mute mode
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @return Nothing
- */
- void IP_I2S_Pause(IP_I2S_001_Type *pI2S, uint8_t TRMode);
- /**
- * @brief Transmit channel sends only zeroes
- * @param pI2S : The base of I2S peripheral on the chip
- * @param NewState : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @return Nothing
- * The data output from I2S transmit channel is always zeroes
- */
- void IP_I2S_Mute(IP_I2S_001_Type *pI2S, FunctionalState NewState);
- /**
- * @brief Stop I2S asynchronously
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @return Nothing
- * Pause, resets the transmit channel and FIFO asynchronously
- */
- void IP_I2S_Stop(IP_I2S_001_Type *pI2S, uint8_t TRMode);
- /**********************************************************************************
- * I2S DMA functions
- *********************************************************************************/
- /**
- * @brief Set the FIFO level on which to create an DMA request
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param DMANum : I2S DMA request number, should be
- * - IP_I2S_DMA_REQUEST_NUMBER_1
- * - IP_I2S_DMA_REQUEST_NUMBER_2
- * @param depth : FIFO level on which to create an DMA request
- * @return Nothing
- * DMA request is generated when rx_depth_dma <= rx_level or tx_depth_dma >= tx_level
- */
- void IP_I2S_SetFIFODepthDMA(IP_I2S_001_Type *pI2S, uint8_t TRMode, IP_I2S_DMARequestNumber_Type DMANum, uint32_t depth);
- /**
- * @brief Enable/Disable DMA for the I2S
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param DMANum : I2S DMA request number, should be
- * - IP_I2S_DMA_REQUEST_NUMBER_1
- * - IP_I2S_DMA_REQUEST_NUMBER_2
- * @param NewState : ENABLE or DISABLE DMA
- * @return Nothing
- */
- void IP_I2S_DMACmd(IP_I2S_001_Type *pI2S, IP_I2S_DMARequestNumber_Type DMANum, uint8_t TRMode, FunctionalState NewState);
- /**********************************************************************************
- * I2S IRQ functions
- *********************************************************************************/
- /**
- * @brief Enable/Disable interrupt for the I2S
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param NewState : ENABLE or DISABLE Interrupt
- * @return Nothing
- * Interrupt request is generated when rx_depth_irq <= rx_level or tx_depth_irq >= tx_level
- */
- void IP_I2S_InterruptCmd(IP_I2S_001_Type *pI2S, uint8_t TRMode, FunctionalState NewState);
- /**
- * @brief Set the FIFO level on which to create an irq request
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @param depth : FIFO level on which to create an irq request
- * @return Nothing
- */
- void IP_I2S_SetFIFODepthIRQ(IP_I2S_001_Type *pI2S, uint8_t TRMode, uint32_t depth);
- /**
- * @brief Get the status of I2S interrupt
- * @param pI2S : The base of I2S peripheral on the chip
- * @param TRMode : Transmit/Receive mode, should be I2S_RX_MODE or I2S_TX_MODE
- * @return I2S interrupt status, SET or RESET
- */
- Status IP_I2S_GetIntStatus(IP_I2S_001_Type *pI2S, uint8_t TRMode);
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __I2S_001_H_ */
|