60 #include "../inc/hw_types.h" 61 #include "../inc/hw_ints.h" 62 #include "../inc/hw_memmap.h" 63 #include "../inc/hw_i2s.h" 72 #define I2S_CLK_SRC_SOC_CLK I2S_CLKCFG_CLKSEL_SEL_1 73 #define I2S_CLK_SRC_SOC_PLL_CLK I2S_CLKCFG_CLKSEL_SEL_2 74 #define I2S_CLK_SRC_HFXT_CLK I2S_CLKCFG_CLKSEL_SEL_3 81 #define I2S_SD0_DIS I2S_AIFDIRCFG_AD0_DIS 82 #define I2S_SD0_IN I2S_AIFDIRCFG_AD0_IN 83 #define I2S_SD0_OUT I2S_AIFDIRCFG_AD0_OUT 84 #define I2S_SD1_DIS I2S_AIFDIRCFG_AD1_DIS 85 #define I2S_SD1_IN I2S_AIFDIRCFG_AD1_IN 86 #define I2S_SD1_OUT I2S_AIFDIRCFG_AD1_OUT 93 #define I2S_CHAN0_MASK 0x00000001 94 #define I2S_CHAN1_MASK 0x00000002 95 #define I2S_CHAN2_MASK 0x00000004 96 #define I2S_CHAN3_MASK 0x00000008 97 #define I2S_CHAN4_MASK 0x00000010 98 #define I2S_CHAN5_MASK 0x00000020 99 #define I2S_CHAN6_MASK 0x00000040 100 #define I2S_CHAN7_MASK 0x00000080 107 #define I2S_MEM_LENGTH_16 I2S_AIFFMTCFG_LEN32__16BIT 108 #define I2S_MEM_LENGTH_32 I2S_AIFFMTCFG_LEN32__32BIT 109 #define I2S_POS_EDGE I2S_AIFFMTCFG_SMPLEDGE_POS 110 #define I2S_NEG_EDGE I2S_AIFFMTCFG_SMPLEDGE_NEG 117 #define I2S_STMP_SATURATION 0x0000FFFF 124 #define I2S_INT_XCNT_CAPTURE I2S_IRQFLAGS_XCNTCPT 125 #define I2S_INT_DMA_IN I2S_IRQFLAGS_AIFDMAIN 126 #define I2S_INT_DMA_OUT I2S_IRQFLAGS_AIFDMAOUT 127 #define I2S_INT_TIMEOUT I2S_IRQFLAGS_WCLKTOUT 128 #define I2S_INT_BUS_ERR I2S_IRQFLAGS_BUSERR 129 #define I2S_INT_WCLK_ERR I2S_IRQFLAGS_WCLKERR 130 #define I2S_INT_PTR_ERR I2S_IRQFLAGS_PTRERR 131 #define I2S_INT_ALL \ 132 (I2S_INT_XCNT_CAPTURE | I2S_INT_DMA_IN | I2S_INT_DMA_OUT | I2S_INT_TIMEOUT | I2S_INT_BUS_ERR | I2S_INT_WCLK_ERR | \ 141 #ifdef DRIVERLIB_DEBUG 156 static bool I2SBaseValid(uint32_t base)
188 ASSERT(I2SBaseValid(base));
220 ASSERT(I2SBaseValid(base));
254 ASSERT(I2SBaseValid(base));
295 ASSERT(I2SBaseValid(base));
322 ASSERT(I2SBaseValid(base));
343 ASSERT(I2SBaseValid(base));
386 ASSERT(I2SBaseValid(base));
422 ASSERT(I2SBaseValid(base));
465 uint32_t memoryLength,
466 uint32_t samplingEdge,
468 uint8_t bitsPerSample)
471 ASSERT(I2SBaseValid(base));
472 ASSERT(bitsPerSample <= 24);
473 ASSERT(bitsPerSample >= 8);
529 ASSERT(I2SBaseValid(base));
595 ASSERT(I2SBaseValid(base));
613 if (dualPhase ==
false)
689 ASSERT(I2SBaseValid(base));
717 ASSERT(I2SBaseValid(base));
734 ASSERT(I2SBaseValid(base));
751 ASSERT(I2SBaseValid(base));
768 ASSERT(I2SBaseValid(base));
785 ASSERT(I2SBaseValid(base));
805 ASSERT(I2SBaseValid(base));
826 ASSERT(I2SBaseValid(base));
849 ASSERT(I2SBaseValid(base));
871 ASSERT(I2SBaseValid(base));
879 minusValue = (uint16_t)(-value);
896 ASSERT(I2SBaseValid(base));
913 ASSERT(I2SBaseValid(base));
930 ASSERT(I2SBaseValid(base));
949 ASSERT(I2SBaseValid(base));
970 ASSERT(I2SBaseValid(base));
1036 ASSERT(I2SBaseValid(base));
1056 ASSERT(I2SBaseValid(base));
__STATIC_INLINE void I2SStart(uint32_t base, uint16_t dmaLength)
Starts the I2S.
Definition: i2s.h:383
#define I2S_O_AIFWMASK1
Definition: hw_i2s.h:60
#define I2S_STMPCTL_STMPEN_M
Definition: hw_i2s.h:509
__STATIC_INLINE void I2SConfigureOutSampleStampTrigger(uint32_t base, uint16_t trigValue)
Configure the output sample stamp trigger.
Definition: i2s.h:823
#define I2S_AIFFMTCFG_DUALPHASE_S
Definition: hw_i2s.h:292
__STATIC_INLINE void I2SConfigureWclkCounter(uint32_t base, int16_t value)
Confiugre the WCLK counter value.
Definition: i2s.h:866
#define I2S_ADFSCTRL2_DIV_M
Definition: hw_i2s.h:1412
__STATIC_INLINE void I2SDisableAdfs(uint32_t base)
Disables the ADFS (Adaptive Digital Frequency Synthesizer) module.
Definition: i2s.h:1053
__STATIC_INLINE void I2SConfigureClocks(uint32_t base, bool isController, bool invertWclk, bool dualPhase, uint32_t cclkDiv, uint32_t wclkDiv, uint32_t bclkDiv)
Configure the I2S clocks (CCLK, WCLK and BCLK).
Definition: i2s.h:586
#define I2S_O_AIFBCLKDIV
Definition: hw_i2s.h:126
#define HWREG(x)
Definition: hw_types.h:78
#define I2S_O_AIFDMACFG
Definition: hw_i2s.h:48
#define __STATIC_INLINE
Definition: hw_types.h:57
__STATIC_INLINE void I2SEnableControllerClocks(uint32_t base)
Enable the I2S controller clocks (CCLK, WCLK and BCLK).
Definition: i2s.h:644
__STATIC_INLINE void I2SResetWclkCounter(uint32_t base)
Reset the WCLK count.
Definition: i2s.h:893
#define I2S_O_ADFSCTRL2
Definition: hw_i2s.h:141
#define I2S_O_AIFINPTNXT
Definition: hw_i2s.h:63
#define I2S_O_STMPWPER
Definition: hw_i2s.h:87
#define I2S_O_IRQCLR
Definition: hw_i2s.h:120
__STATIC_INLINE void I2SConfigureWclkCounterPeriod(uint32_t base, uint16_t period)
Configure the WCLK counter period.
Definition: i2s.h:846
#define I2S_O_AIFMCLKDIV
Definition: hw_i2s.h:123
uint32_t I2SGetSampleStamp(uint32_t base, uint32_t channel)
Get the current value of a sample stamp counter.
Definition: i2s.c:43
#define I2S_O_STMPINTRIG
Definition: hw_i2s.h:90
#define I2S_AIFWCLKSRC_WBCLKSRC_INT
Definition: hw_i2s.h:169
#define I2S_CLKCFG_ADFSEN_M
Definition: hw_i2s.h:1350
#define I2S_ADFSCTRL2_DELTASIGN_M
Definition: hw_i2s.h:1400
__STATIC_INLINE void I2SSetInPointer(uint32_t base, uint32_t nextPointer)
Set the next input buffer pointer.
Definition: i2s.h:686
__STATIC_INLINE void I2SConfigureFrame(uint32_t base, uint8_t sd0Usage, uint8_t sd0Channels, uint8_t sd1Usage, uint8_t sd1Channels)
Setup the two interfaces SD0 and SD1 (also called AD0 and AD1).
Definition: i2s.h:522
#define I2S_AIFCLKCTL_WBEN
Definition: hw_i2s.h:1269
#define I2S_AIFWCLKSRC_WCLKINV
Definition: hw_i2s.h:183
#define I2S_O_AIFDIRCFG
Definition: hw_i2s.h:51
#define I2S_O_IRQFLAGS
Definition: hw_i2s.h:114
#define I2S_ADFSCTRL2_DELTASIGN_S
Definition: hw_i2s.h:1401
__STATIC_INLINE void I2SDisableControllerClocks(uint32_t base)
Disable the I2S controller clocks (CCLK, WCLK and BCLK).
Definition: i2s.h:660
#define I2S_O_CLKCFG
Definition: hw_i2s.h:135
#define I2S_AIFFMTCFG_WORDLEN_S
Definition: hw_i2s.h:277
#define I2S_O_AIFOUTPTR
Definition: hw_i2s.h:72
__STATIC_INLINE void I2SDisableInt(uint32_t base, uint32_t intFlags)
Disables individual I2S interrupt sources.
Definition: i2s.h:217
#define I2S_O_AIFFMTCFG
Definition: hw_i2s.h:54
__STATIC_INLINE void I2SSetOutPointer(uint32_t base, uint32_t nextPointer)
Set the next output buffer pointer.
Definition: i2s.h:714
#define I2S_CLKCFG_CLKSEL_M
Definition: hw_i2s.h:1334
__STATIC_INLINE void I2SEnableInt(uint32_t base, uint32_t intFlags)
Enables individual I2S interrupt sources.
Definition: i2s.h:185
__STATIC_INLINE void I2SDisableClk(uint32_t base)
Disables the clock source.
Definition: i2s.h:927
__STATIC_INLINE uint32_t I2SGetInPointerNext(uint32_t base)
Get value of the next input pointer.
Definition: i2s.h:731
#define I2S_AIFCLKCTL_MEN
Definition: hw_i2s.h:1293
__STATIC_INLINE uint32_t I2SGetOutPointerNext(uint32_t base)
Get value of the next output pointer.
Definition: i2s.h:748
#define I2S_O_AIFOPTNXT
Definition: hw_i2s.h:69
#define HWREGH(x)
Definition: hw_types.h:84
__STATIC_INLINE void I2SEnableClk(uint32_t base)
Enables the clock source.
Definition: i2s.h:910
#define I2S_ADFSCTRL2_DELTA_M
Definition: hw_i2s.h:1388
__STATIC_INLINE void I2SConfigureAdfs(uint32_t base, uint32_t tref, uint32_t delta, uint32_t deltaSign, uint32_t div)
Configures the Adaptive Digital Frequency Synthesizer (ADFS) module.
Definition: i2s.h:1033
#define I2S_AIFFMTCFG_DATADELAY_S
Definition: hw_i2s.h:346
__STATIC_INLINE uint32_t I2SGetOutPointer(uint32_t base)
Get value of the current output pointer.
Definition: i2s.h:782
__STATIC_INLINE void I2SDisableSampleStamp(uint32_t base)
Disable the Sample Stamp generator.
Definition: i2s.h:340
#define ASSERT(expr)
Definition: debug.h:81
#define I2S_BASE
Definition: hw_memmap.h:97
#define I2S_AIFCLKCTL_WCLKPHASE_S
Definition: hw_i2s.h:1283
#define I2S_O_STMPWADD
Definition: hw_i2s.h:99
#define I2S_AIFDMACFG_ENDFRAMIDX_M
Definition: hw_i2s.h:203
__STATIC_INLINE void I2SSelectAdfsInputClk(uint32_t base, uint32_t source)
Selects the ADFS inpt clock (Fref)
Definition: i2s.h:967
#define I2S_O_STMPCTL
Definition: hw_i2s.h:75
#define I2S_ADFSCTRL1_TREF_M
Definition: hw_i2s.h:1369
#define I2S_O_AIFINPTR
Definition: hw_i2s.h:66
#define I2S_O_IRQMASK
Definition: hw_i2s.h:111
__STATIC_INLINE uint32_t I2SGetInPointer(uint32_t base)
Get value of the current input pointer.
Definition: i2s.h:765
#define I2S_O_ADFSCTRL1
Definition: hw_i2s.h:138
__STATIC_INLINE void I2SStop(uint32_t base)
Stops the I2S module for operation.
Definition: i2s.h:419
__STATIC_INLINE uint32_t I2SIntStatus(uint32_t base, bool masked)
Gets the current interrupt status.
Definition: i2s.h:249
#define I2S_O_AIFWMASK0
Definition: hw_i2s.h:57
#define I2S_O_AIFWCLKDIV
Definition: hw_i2s.h:129
__STATIC_INLINE void I2SConfigureFormat(uint32_t base, uint8_t dataDelay, uint32_t memoryLength, uint32_t samplingEdge, bool dualPhase, uint8_t bitsPerSample)
Configure the serial format of the I2S module.
Definition: i2s.h:463
#define I2S_O_STMPOTRIG
Definition: hw_i2s.h:93
#define I2S_CLKCFG_EN_M
Definition: hw_i2s.h:1317
__STATIC_INLINE void I2SConfigureInSampleStampTrigger(uint32_t base, uint16_t trigValue)
Configure the input sample stamp trigger.
Definition: i2s.h:802
__STATIC_INLINE void I2SEnableSampleStamp(uint32_t base)
Enable the Sample Stamp generator.
Definition: i2s.h:319
#define I2S_O_AIFCLKCTL
Definition: hw_i2s.h:132
__STATIC_INLINE void I2SClearInt(uint32_t base, uint32_t intFlags)
Clears I2S interrupt sources.
Definition: i2s.h:292
#define I2S_AIFWCLKSRC_WBCLKSRC_EXT
Definition: hw_i2s.h:168
#define HWREGB(x)
Definition: hw_types.h:90
__STATIC_INLINE void I2SEnableAdfs(uint32_t base)
Enables the ADFS (Adaptive Digital Frequency Synthesizer) module.
Definition: i2s.h:946
#define I2S_O_STMPWSET
Definition: hw_i2s.h:96
#define I2S_ADFSCTRL2_DIV_S
Definition: hw_i2s.h:1413
#define I2S_O_AIFWCLKSRC
Definition: hw_i2s.h:45