cancel
Showing results for 
Search instead for 
Did you mean: 

STM32CubeMX 5.0.0 with STM32F413VGTx does not allow configuring Quad SPI DMA

TV
Associate II

Hello,

I'm trying to use the Quad SPI peripheral with DMA. In the DMA tab it does not allow me to click the "Increment Address" on the Memory section.

Worse yet, anything I do in that tab is ignored. I modified every single thing possible and the output still looks like this:

/** 
  * Enable DMA controller clock
  */
static void MX_DMA_Init(void) 
{
  /* DMA controller clock enable */
  __HAL_RCC_DMA2_CLK_ENABLE();
 
  /* DMA interrupt init */
  /* DMA2_Stream7_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(DMA2_Stream7_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(DMA2_Stream7_IRQn);
 
}

Thoughts or workarounds?

1 REPLY 1
TV
Associate II

Sorry! The configurable GUI components does make a difference, the DMA config is in the QSPI config function. Too early in the morning, haven't had my coffee.

But the original problem of the memory not being allowed to increment stays.

 /* QUADSPI DMA Init */
    /* QUADSPI Init */
    hdma_quadspi.Instance = DMA2_Stream7;
    hdma_quadspi.Init.Channel = DMA_CHANNEL_3;
    hdma_quadspi.Init.Direction = DMA_PERIPH_TO_MEMORY;
    hdma_quadspi.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_quadspi.Init.MemInc = DMA_MINC_DISABLE;
    hdma_quadspi.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_quadspi.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_quadspi.Init.Mode = DMA_NORMAL;
    hdma_quadspi.Init.Priority = DMA_PRIORITY_LOW;
    hdma_quadspi.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
    if (HAL_DMA_Init(&hdma_quadspi) != HAL_OK)
    {
      Error_Handler();
    }

I tried manually setting hdma_quadspi.Init.MemInc = DMA_MINC_ENABLE and that worked! Just a GUI problem.