2020-12-11 04:46 AM
Hi,
I'm trying to trig a DMA from the EXTI0 input. There is a good example in the STM32Cube package for the H7: Projects\STM32H743I-EVAL\Examples\DMA\DMAMUX_RequestGen
But this example uses the BDMA and I need to use the DMA1. I tried to make some modifications to the example but without success (see https://community.st.com/s/question/0D53W00000Pnct0SAB/make-the-stm32h7-example-dmamuxrequestgen-work-with-dma1-instead-of-bdma).
Reading the chapter "Block interconnect" I see that the source signal is called "exti_syscfg_exti0" when connected to dmamux2_gen20, but it is called " exti_exti0_it" when connected to dmamux1_gen6. I really don't understand what it means... For sure I use DMAMUX1 with the correct signal ID, but is there something else to change from the example using BDMA/DMAMUX2 ?
Thank you.
Solved! Go to Solution.
2021-01-03 11:46 PM
This is the answer I got from ST:
The behaviour with the EXTI0 is different in domain D3 (triggering BDMA from EXTI0). This is due to the fact that the domain D3 is designed for autonomous mode where both CPU core are OFF. The EXTI0 can only be used as an event. It is automatically cleared.
With DMAMUX1 in domain D2, if a trigger is needed without executing an IRQ handler, the EXTI0 is not the good one. A timer or a DMA event has to be used instead.
More information can be found in the Release Manual (EXTI, DMAMUX, PWR sections) and AN5224 (STM32 DMAMUX: the DMA request router).
2020-12-11 02:24 PM
ST does not care to clarify this.
IMO, input to DMAMUX2 is not coming from EXTI module, ie. it's not the output of EXTI having been already latched, but directly from SYSCFG, i.e. it's the output of the EXTI input multiplexer, i.e. it's directly the pin assigned to given EXTI.
OTOH, input to DMAMUX comes from output of the EXTI latch, so you have to set up also EXTI for the appropriate edge(s); and I'm not quite sure if you can do without clearing it in some way.
https://community.st.com/s/question/0D50X0000Buds3C/stm32h7-triggering-a-spi-tx-transmission-via-dma-with-a-synch-event-on-exti0 although the problem there was somewhat different.
I don't use H7.
JW
2021-01-03 11:46 PM
This is the answer I got from ST:
The behaviour with the EXTI0 is different in domain D3 (triggering BDMA from EXTI0). This is due to the fact that the domain D3 is designed for autonomous mode where both CPU core are OFF. The EXTI0 can only be used as an event. It is automatically cleared.
With DMAMUX1 in domain D2, if a trigger is needed without executing an IRQ handler, the EXTI0 is not the good one. A timer or a DMA event has to be used instead.
More information can be found in the Release Manual (EXTI, DMAMUX, PWR sections) and AN5224 (STM32 DMAMUX: the DMA request router).
2021-01-04 01:39 AM
Thanks for coming back with that response.
I am not even trying to understand it. The H7 is a beast and its documentation is lacking even more than other STM32's. I'm lucky enough to be able to stay away of it so far.
JW