AnsweredAssumed Answered

STM32F407 - I2S2ext clock must be on PB13...?

Question asked by waclawek.jan on Jun 4, 2012
Latest reply on Jul 20, 2012 by rad.radham
While working on I2S on STM32F407, I came across an issue I believe is a bug in silicon.

I need duplex I2S, so I have configured I2S2 as Master Receiver and I2S2ext as Slave Transmitter, with outputs on port I, i.e. PI0 as I2S2_WS, PI1 as I2S2_CK, PI2 as I2S2ext_SD (to Tx) and PI3 as I2S2_SD. While I2S2 functioned as expected - there were valid clocks on PI0 and PI1 and PI3 was floating - I2S2ext's output at PI2 was stuck at 0, and I2S2ext appeared to be inoperational (no DMA interrupts).

Further experimentation revealed, that bit TXE in I2S2ext->SR was permanently at 0. When the DMA which was feeding the I2S2ext's data register was disabled, upon restart the TXE bit was at 1, and after writing a single halfword to I2S2ext->DR it went to 0 and remained there. Couldn't be clearer that there is no clock to I2S2ext.

More experiments, and after setting PB13 (which is the other possible pin for I2S2_CK) to Alternative Function and setting it's AF to I2S2 - voila, I2S2ext running as expected. The function of I2S2ext appears to be independent of PI1's setting.

IMHO that means, that internally, I2S2ext's CK is incorrectly connected directly to PB13, rather than to the "merged" input of both PB13 and PI1, as is should be. More experiments with I2S2 set to Slave Receiver confirmed, that such "merged" input does exist and connected to I2S2's CK as expected, so only I2S2ext is affected.

I did not try for I2S3/I2S3ext. My hardware is the ST3240G-EVAL board, fitted with the chip marked as STM32F457 rev. A, responding with MCU ID 0x20006411.

Can somebody please try to confirm or reject these findings?