DMA on a Pixhawk

Here’s a list of all the DMA channels we currently use in ArduCopter on pixhawk ( aka fmu-v2 in the build system) and what they are used for ( others will be similar )… you’ll see that of the 16 totally possible to be used, we are using most of them! .
USART6 RX => DMA2 STREAM2 CH5 ( usart 6 is used for high-speed comms to the IO cpu )
USART6 TX => DMA2 STREAM7 CH5
SDIO => DMA2 STREAM6 CH4
SPI1 RX => DMA2 STREAM0 CH3
SPI1 TX => DMA2 STREAM5 CH3
SPI2 RX => DMA1 STREAM3 CH0
SPI2 TX => DMA1 STREAM4 CH0
SPI4 RX => DMA2 STREAM3 CH5
SPI4 TX => DMA2 STREAM4 CH5
USART2 RX => DMA1 STREAM5 CH4
USART3 RX => DMA1 STREAM1 CH4
USART4 RX => DMA1 STREAM2 CH4
USART8 RX => DMA1 STREAM6 CH5

here’s the DMA table from the cpu/chip manufacturer:

2 Likes

Awesome post Buzz - thanks!

@DavidBuzz Get this on the wiki, please :slight_smile: too relevant to be “lost” here.

It’s also worth noting that the pixhawk2 ( fmu-v2 or v3 , depends) and pixracer ( fmu-v4) boards have a slightly different set of DMA assignments, but are pretty similar generally.

I don’t have complete DMA table for the pixracer (fmu-v4) but here’s a change that was made today that tweaks the assignments on v4:

Hi, I’m a complete n00b to Ardupilot. I watched a video on YouTube that states that I need a UART that has DMA access to make a CRSF receiver to work. How do I know which UART is the one that has it on a 3DR Pixhawk PX4?

Thanks in advance!

Hi, Dario_HxC, you can get your answer from this https://discuss.ardupilot.org/t/help-understanding-uart-dma-requirements/77034