cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H7's I2C4 using BDMA not triggering Complete Callbacks.

MLuis.1
Associate III

I'm using an STM32H725 to communicate with an i2c sensor. I'm using the I2C4 bus with the HAL DMA functions. I also enabled the BDMA channels for the rx and tx and respective interrupts. The problem is that the complete rx/tx callbacks are not triggered.

I found that this could be related to the problem described here: https://st.my.site.com/community/s/article/FAQ-DMA-is-not-working-on-STM32H7-devices

Any solutions to this problem?

12 REPLIES 12

I use STM32CubeIDE I think it uses GCC compiler

Open the linker script file STM32H725RGVX_FLASH.ld :

  • Make sure that the memory region definition for SRAM4 (RAM_D3) exist.


_legacyfs_online_stmicro_images_0693W00000bl9hVQAQ.pngThen In your source code, Define a custom section: Start by defining a custom section using the __attribute__((section("section_name"))) attribute. For example :

uint8_t __attribute__((section(".RAM_D3"))) Tx_I2C[1];

Foued

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.

I checked both in the FLASH.ld and RAM.ld files and the RAM_D3 exists in both. I retested

uint8_t __attribute__((section(".RAM_D3"))) Tx_I2C[1];

And still not working.