cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H750 + I2S Full Duplex Master + DMA (TX and RX)

PSalm.1
Associate

Hello,

I managed to get full duplex I2S + DMA working on an STM32F405 with Cube + HAL, however have now switched to an STM32H750 for more processing power.

In STM32CubeIDE version 1.3.1, while there is an option to add a DMA stream for TX, there is unfortunately NO option to add an additional I2S DMA stream for RX.

Furthermore, the HAL driver "stm32h7xx_hal_i2s_ex.c" is also completely empty.

Has anyone successfully implemented full duplex I2S on an STM32H7 with both DMA streams and is willing to share how they got there?

This issue has been mentioned before in https://community.st.com/s/question/0D50X0000CArlTH/fullduplex-i2s-with-master-clock-output-on-stm32h7-in-stm32cubeide. See user "dpp"'s comment:

"just to document the absurdity of it: i have just updated to STM32CubeIDE 1.3.0 and now it is possible to check the *Master Clock Output* in the *Device Configuration Tool* ( which produces pretty much the code i posted above ) however now the option to create a second DMA channel is gone … well *SIGH*"

An ST employee had stated they were working on a fix.. I do hope that'll be sometime soon.

Many thanks for your help,

Phil

2 REPLIES 2
Piranha
Chief II

Anyway for I2S and audio needs SAI peripheral is way better than SPI/I2S peripheral.

The 'H7 family does not have what ST calls fulldiplex I2S in the 'F4/'F2 family (i.e. an additional stripped-down I2S-slave-only module with internally connected clocks), only simplex I2S, so you'd need to tie two together with clocks externally for fullduplex. Cube/CubeMX probably reflects this.

As Piranha said above, it may be better to use SAI for I2S.

JW