cancel
Showing results for 
Search instead for 
Did you mean: 

I2S fullduplex with DMA (stm32f407)

uuftc
Associate
Posted on March 07, 2012 at 15:22

I configure SPI2 and I2S2_ext for running I2S in fullduplex mode

using DMA1_Stream4 and  DMA1_Stream2.

DMA1_Stream4_IRQHandler called and i2s tx is working fine, but

DMA1_Stream2_IRQHandler not called at all.

Please help me to find the error.

#i2s-dma #stm32f4-dma-i2s2_ext_rx
5 REPLIES 5
tvanek
Associate
Posted on March 10, 2012 at 16:15

I spent couple of hours on the same problem. Finally I wrote a test to find right DMA channels connections. It showed there is an error in the STM32F4 reference manual (RM0090 ver 1).

On page 164, table 20 DMA1 request, row Channel 2, column Stream 2

reads I2S

2

_EXT_RX and should read I2S

3

_EXT_RX

Does read this forum anybody from ST tech support? Or should I resend the doc error as tech support request?

Only DMA1 Stream3 Ch3 can be used for I2S2_EXT_RX.
Nickname12657_O
Associate III
Posted on March 11, 2012 at 00:13

Dear Gentlemen,

Thank you for the valuable post and finding. much appreciated.  We will check and correct  that table for I2S2/I2S3 DMA connections.

Cheers,

STOne-32.
uuftc
Associate
Posted on March 11, 2012 at 14:35

@tomas v

Thank you very much

dp
Associate
Posted on July 22, 2012 at 19:19

Hi Tomas,

When you were testing the DMA channels - did you actually get the DMA channel for I2S3ext_RX to work? I'm curious because I have spent a couple of days getting a 4-channel ADC up and running using I2S3 and I2S3ext (both in RX mode). Polling both peripherals works but I can only get DMA going for SPI3_RX. The DMA buffer on the I2S3_EXT_RX channel is never filled with data.

Thanks,

Dennis

Posted on July 24, 2012 at 17:48

Dennis,

Table 20 indicates, that there is one more DMA1 request input for I2S3_EXT_RX, namely at Stream 0, Channel 3; so there should be two combinations available for your setup (S0Ch0+S2Ch2, or S2Ch0+S0Ch3).

Did you try both of them?

Just to be sure, you double-checked that RXDMAEN bit is set in the CR2 register of the I2S3_Ext controller, right?

JW