2023-02-21 05:17 AM
Hi,
I use an STM32H730 with default bootloader. After I programmed the chip, if I use the "jump to application" feature, USART3 RX DMA in my application does not work anymore. (this DMA works fine when starting the MCU directly in application mode with BOOT0=low).
I use HAL and everything seems correct (no error codes, status registers for the DMA and UART look the same between the cold start to application or the jump from bootloader).
I use other DMAs in my application (for SPI and ADC) and they work fine after the bootloader jumps to the application, it's only USART3 RX that is giving trouble (TX works)
I read the NDTR register and compare it with my counter to handle incoming data :
(DMA_Stream_TypeDef *)((&huart3)->hdmarx->Instance))->NDTR
When application starts from bootloader, NDTR never changes, it stays to zero.
DMA is in circular mode, it writes in a 256 byte buffer which is located into D2 ram, in a section I prevent from caching with MPU (I did this because I use I-cache and D-cache). I don't know if that's useful information, because I do the same thing for DMA SPI and DMA ADC and it works fine when application starts from bootloader.. Just that USART3 RX which is stuck.
Do you have any suggestions, things to try, to solve my problem?