STMU5 GPDMA BNDT corrupted by suspend/resume
Hello,
I’ve run into what appears to be a documentation error or a H/W bug with the GPDMA on the STM32U585.
I’ve set up a 512-byte circular DMA buffer with HT and TC interrupts to capture UART Rx data. I’ve also enbaled DTE and SUSP interupts because I want to handle UART IDLE detection.
In the UART IRQ handler (caused by IDLE), I suspend the DMA channel. The DMA IRQ handler then triggers on SUSPF and I grab the current BNDT value, update an internal index, and then resume the DMA. The DMA continues until the block is complete (TC), then reloads only the CxDAR from memory (only UDA set in CLLR update bits). According to documentation, the BNDT value should be reloaded from an internal value stored when the channel was enabled. This works as expected until the TC after suspend/resume event. After a suspend/resume, the BNDT appears to reload a different value, and continues to use that new value.
The only work around I found was to add UB1 to the CLLR update bit fields and provide a corresponding UB1 in memory.
Can anyone verify if this is problem with documentation, or a H/W issue?
