@ -108,7 +108,7 @@ void AudioOutputI2S_F32::begin(void)
dma . TCD - > NBYTES_MLNO = 2 ;
dma . TCD - > NBYTES_MLNO = 2 ;
//dma.TCD->SLAST = -sizeof(i2s_tx_buffer); //original
//dma.TCD->SLAST = -sizeof(i2s_tx_buffer); //original
dma . TCD - > SLAST = - I2S_BUFFER_TO_USE_BYTES ;
dma . TCD - > SLAST = - I2S_BUFFER_TO_USE_BYTES ;
dma . TCD - > DADDR = & I2S0_TDR0 ;
dma . TCD - > DADDR = ( void * ) ( ( uint32_t ) & I2S0_TDR0 + 2 ) ;
dma . TCD - > DOFF = 0 ;
dma . TCD - > DOFF = 0 ;
//dma.TCD->CITER_ELINKNO = sizeof(i2s_tx_buffer) / 2; //original
//dma.TCD->CITER_ELINKNO = sizeof(i2s_tx_buffer) / 2; //original
dma . TCD - > CITER_ELINKNO = I2S_BUFFER_TO_USE_BYTES / 2 ;
dma . TCD - > CITER_ELINKNO = I2S_BUFFER_TO_USE_BYTES / 2 ;
@ -432,21 +432,21 @@ void AudioOutputI2S_F32::config_i2s(void)
I2S0_TMR = 0 ;
I2S0_TMR = 0 ;
I2S0_TCR1 = I2S_TCR1_TFW ( 1 ) ; // watermark at half fifo size
I2S0_TCR1 = I2S_TCR1_TFW ( 1 ) ; // watermark at half fifo size
I2S0_TCR2 = I2S_TCR2_SYNC ( 0 ) | I2S_TCR2_BCP | I2S_TCR2_MSEL ( 1 )
I2S0_TCR2 = I2S_TCR2_SYNC ( 0 ) | I2S_TCR2_BCP | I2S_TCR2_MSEL ( 1 )
| I2S_TCR2_BCD | I2S_TCR2_DIV ( 3 ) ;
| I2S_TCR2_BCD | I2S_TCR2_DIV ( 1 ) ;
I2S0_TCR3 = I2S_TCR3_TCE ;
I2S0_TCR3 = I2S_TCR3_TCE ;
I2S0_TCR4 = I2S_TCR4_FRSZ ( 1 ) | I2S_TCR4_SYWD ( 15 ) | I2S_TCR4_MF
I2S0_TCR4 = I2S_TCR4_FRSZ ( 1 ) | I2S_TCR4_SYWD ( 3 1) | I2S_TCR4_MF
| I2S_TCR4_FSE | I2S_TCR4_FSP | I2S_TCR4_FSD ;
| I2S_TCR4_FSE | I2S_TCR4_FSP | I2S_TCR4_FSD ;
I2S0_TCR5 = I2S_TCR5_WNW ( 15 ) | I2S_TCR5_W0W ( 15 ) | I2S_TCR5_FBT ( 15 ) ;
I2S0_TCR5 = I2S_TCR5_WNW ( 3 1) | I2S_TCR5_W0W ( 3 1) | I2S_TCR5_FBT ( 3 1) ;
// configure receiver (sync'd to transmitter clocks)
// configure receiver (sync'd to transmitter clocks)
I2S0_RMR = 0 ;
I2S0_RMR = 0 ;
I2S0_RCR1 = I2S_RCR1_RFW ( 1 ) ;
I2S0_RCR1 = I2S_RCR1_RFW ( 1 ) ;
I2S0_RCR2 = I2S_RCR2_SYNC ( 1 ) | I2S_TCR2_BCP | I2S_RCR2_MSEL ( 1 )
I2S0_RCR2 = I2S_RCR2_SYNC ( 1 ) | I2S_TCR2_BCP | I2S_RCR2_MSEL ( 1 )
| I2S_RCR2_BCD | I2S_RCR2_DIV ( 3 ) ;
| I2S_RCR2_BCD | I2S_RCR2_DIV ( 1 ) ;
I2S0_RCR3 = I2S_RCR3_RCE ;
I2S0_RCR3 = I2S_RCR3_RCE ;
I2S0_RCR4 = I2S_RCR4_FRSZ ( 1 ) | I2S_RCR4_SYWD ( 15 ) | I2S_RCR4_MF
I2S0_RCR4 = I2S_RCR4_FRSZ ( 1 ) | I2S_RCR4_SYWD ( 3 1) | I2S_RCR4_MF
| I2S_RCR4_FSE | I2S_RCR4_FSP | I2S_RCR4_FSD ;
| I2S_RCR4_FSE | I2S_RCR4_FSP | I2S_RCR4_FSD ;
I2S0_RCR5 = I2S_RCR5_WNW ( 15 ) | I2S_RCR5_W0W ( 15 ) | I2S_RCR5_FBT ( 15 ) ;
I2S0_RCR5 = I2S_RCR5_WNW ( 3 1) | I2S_RCR5_W0W ( 3 1) | I2S_RCR5_FBT ( 3 1) ;
// configure pin mux for 3 clock signals
// configure pin mux for 3 clock signals
CORE_PIN23_CONFIG = PORT_PCR_MUX ( 6 ) ; // pin 23, PTC2, I2S0_TX_FS (LRCLK)
CORE_PIN23_CONFIG = PORT_PCR_MUX ( 6 ) ; // pin 23, PTC2, I2S0_TX_FS (LRCLK)