cancel
Showing results for 
Search instead for 
Did you mean: 

CubeMX has no NVIC (interrupt) setting for I2S unit 1,4,5 ?

nNg.1
Associate II

I am using the CubeMX to set up a STM32F413 to receive audio signal form the I2S unit 1 . But then I found that the CubeMX do not allow set up of NVIC for unit 1, 4,5 of the I2S. Only unit 2,3 which have full duplex function have NVIC setting. This means one has to do polling to check whether data is received. And then the DMA setting only allow TX, not RX mode.

But nothing in the manual RM0430 mentioned that unit 1, 4,5 are different from the unit 2 & 3 in this way.

My understanding from the manual is all I2S units can be configured to generate interrupt by TXE or RXNE and DMA is available for both TX and RX.

I misunderstood the manual or there is a bug in the CubeMX such that I have to hand code unit 1 of the I2S?

1 ACCEPTED SOLUTION

Accepted Solutions
Petr DAVID
ST Employee

Hello nNg.1,

about the missing global interrupt for the I2S1,I2S4 and I2S5t seems like a bug in the STM32CubeMX. I have reported this and I will let you know when I will have more information. I was not able to reproduce the problem with the DMA setting, but you could have problem with RX setting, because you need to first select receiving transmission mode in the Generic Parameters located under Parameter Settings tab for the peripheral. For the IT mode you should be able to enable the interrupt in your code let me know, if you will need a help with that.

With the best regard,

Petr David

View solution in original post

3 REPLIES 3
Petr DAVID
ST Employee

Hello nNg.1,

about the missing global interrupt for the I2S1,I2S4 and I2S5t seems like a bug in the STM32CubeMX. I have reported this and I will let you know when I will have more information. I was not able to reproduce the problem with the DMA setting, but you could have problem with RX setting, because you need to first select receiving transmission mode in the Generic Parameters located under Parameter Settings tab for the peripheral. For the IT mode you should be able to enable the interrupt in your code let me know, if you will need a help with that.

With the best regard,

Petr David

Thanks. I hand coded it and it worked but I found the I2S is troublesome in handling 24/32 bits signal because it will be split into 2 calls of 16 bits each. It means I have to do some programming to decide which is 1st or 2nd 16 bits. So I switched to the SAI already. 

Hello nNG.1,

I am glad that you have found a way that works for you. Just for your information the bug was confirmed and registered and we are working on a solution. Best regards.