Skip to main content
Myasu.1
Associate III
April 27, 2026
Question

How does the STM32F769 Ethernet DMA advance to the next descriptor in ring mode?

  • April 27, 2026
  • 0 replies
  • 39 views

I am working with an STM32F769NI and planning to implement my own Ethernet driver without using the HAL. While studying the DMA descriptor system, I found that the hardware supports both ring structure and chain structure descriptors. However, I am having trouble understanding the exact behavior of the ring structure.

For example, suppose I have three TX descriptors: DESC0, DESC1, and DESC2.

  • After the DMA finishes transmitting DESC0, how does it advance to DESC1?

  • Since the descriptor size is fixed, does the hardware simply move to the next descriptor by doing something like: current_descriptor_address + descriptor_size?

  • If that is the case, then I don’t clearly understand what the practical difference is between ring mode and chain mode.

So my questions are:

  1. In the STM32F769 Ethernet DMA, how exactly does the DMA engine move to the next descriptor in ring structure mode? (I would like to understand this at the hardware/register level.)

  2. What is the functional difference between ring structure and chain structure, from the DMA’s point of view? (Both seem to allow continuous descriptor traversal, so I want to understand what changes internally.)

Any detailed explanation of how the DMA walks through descriptors in ring mode vs chain mode would be greatly appreciated.