Can I use DMA1 in Memory-to-peripheral mode to transfer a data over USART2?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-12-17 4:31 PM
I'm lerning Cortex-M7 (stm32f722) and I don't fully understand how DMA1 works. On the one side DMA1 not connected with AHB therefore PORTs and SRAM not available. On the other side in datasheet didn't type that Peripheral-to-memory and Memory-to-peripheral modes not available for DMA1. Can I use DMA1 in Memory-to-peripheral mode that transfer a data over USART2? Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-12-17 8:12 PM
DMA (Direct Memory Access) without memory access? ;) Take a look on AN4667 "Figure 1. STM32F7 Series system architecture".
The RM0431 "Table 26. DMA1 request mapping" clearly shows USART2 on channel 4 of streams 5 and 6.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-12-18 2:23 AM
But SRAM connected to AHB BUS. And DMA1 not available AHB BUS. Or I don't right?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-12-18 4:30 AM
Yes you can use DMA1 to access USART2, which is on APB1:
JW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-12-18 6:19 AM
The place, you encircled, literally shows that the DMA1 is also connected to the same AHB bus matrix.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2022-12-18 11:01 AM
Whilst it is not true on all STM, the STM32F2/4/7 the DMA1 associates with APB1, and the "Peripherals" on that bus, and DMA2 to APB2. But here DMA2 also supports Memory-to-Memory which has broader reach, but also involves more bus cycles/sequencing to "load-then-store" across different or conflicting paths, whereas others more direct/local actions can be done in a "feed-thru".
Also peripherals on APB1 can trigger action on DMA1, like UART or TIM
By localizing traffic you can avoid conflicting, and slowing, other usage, most especially code execution
Up vote any posts that you find helpful, it shows what's working..
