cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7 SPI6 with BDMA

ANeam.1
Associate II

Hi,

I have a project with an IOC configuring an STM32H733. In the IOC I configured the SPI6 in Full-Duplex Master. I also configured the BDMA channel 0 to serve requests of SPI6_TX. The project is pretty old and when I configured it like this I only enabled the BDMA channel 0 global interrupt (I did not really need to enable SPI6 global interrupt).

Recently I wanted to make modifications to my IOC and I had to migrate the project to the STM32CubeMX V6.7.0 with STM32Cube FW_H7 V1.11.0. With this migration now it seems that the STM32CubeMX forces the SPI6 global interrupt to be enabled and I cannot disable it (it is grayed out).

After some testing, I figured that this automatic force is caused by enabling BDMA for this SPI. I tried to find an answer without success in the release notes of the STM32CubeMX. I would like to know why the new version of IOC now forces the SPI6 global interrupt to be enabled. Can someone help me and shed some light on this?

Thank you!

4 REPLIES 4
Imen.D
ST Employee

Hello @ANeam.1​ and welcome to the Community 🙂

Do you mean that you cannot "check/checkout" the SPI6 global interrupt t as in the below screenshot?

0693W00000Y9hICQAZ.png 0693W00000Y9hHsQAJ.png 

Imen

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

Hi Imen,

Yes, when the BDMA is configured, this checkbox you show in the picture is automatically checked and grayed out, so I cannot uncheck it :(

I have the BDMA configured like so 0693W00000Y9iboQAB.png 

and now the checkbox is grayed out and cannot be disabled

0693W00000Y9ic8QAB.png 

Of course, if I have no BDMA configured, I can check or uncheck the SPI6 global interrupt.

0693W00000Y9id1QAB.png0693W00000Y9id6QAB.png0693W00000Y9idkQAB.png

Hi @ANeam.1​,

BDMA is used with the SPI6 as BDMA_REQUEST_SPI6_RX/TX, because SPI6 itself is in D3.

The basic-DMA controller (BDMA) located in the D3 domain has only access to the resources located in that domain including Backup SRAM.

Imen

When your question is answered, please close this topic by clicking "Accept as Solution".
Thanks
Imen

Hi @Imen DAHMEN​ 

Thank you for the reply. Yes, I understand why we use the BDMA instead of DMA because the DMA has only access to D1 and D2 demains. Because the SPI6 is in the D3 domain I get that we need to use BDMA. But, that is not really my question.

I would like to understand why the STM32CubeMX forces us to enable the SPI6 global interrupt once the BDMA is configured. This was not the case when I was using STM32CubeMX V6.6.1. In the old version (V6.6.1) I was able to configure the BDMA and enable its interrupt but I was not forced to also enable the interrupt of the SPI6. In the newer version of the STM32CubeMX V6.7.0, the behavior has changed. Now, once the BDMA is configured the SPI6 interrupt is enabled automatically.

I would like to understand why the behavior has changed. Why it is now mandatory to enable the SPI6 interrupt once the BDMA is configured, this was not the case in V6.6.1 of STM32CubeMX. I was not able to find anything related to this in the release notes of the STM32CubeMX.

Thank you!

Alex