alex8248 发表于 2018-11-14 12:48:03

STM32F469 使用16位SDRM时dma如何配置?

hi :
有个问题请教一下大家, STM469官方例程中使用 32位 SDRAM时 DMA配置如下:

/* Configure common DMA parameters */
    dma_handle.Init.Channel             = SDRAM_DMAx_CHANNEL;
    dma_handle.Init.Direction         = DMA_MEMORY_TO_MEMORY;
    dma_handle.Init.PeriphInc         = DMA_PINC_ENABLE;
    dma_handle.Init.MemInc            = DMA_MINC_ENABLE;
   

    dma_handle.Init.PeriphDataAlignment = DMA_PDATAALIGN_WORD;
    dma_handle.Init.MemDataAlignment    = DMA_MDATAALIGN_WORD;

   
    dma_handle.Init.Mode                = DMA_NORMAL;
    dma_handle.Init.Priority            = DMA_PRIORITY_HIGH;
    dma_handle.Init.FIFOMode            = DMA_FIFOMODE_DISABLE;
    dma_handle.Init.FIFOThreshold       = DMA_FIFO_THRESHOLD_FULL;
    dma_handle.Init.MemBurst            = DMA_MBURST_SINGLE;
    dma_handle.Init.PeriphBurst         = DMA_PBURST_SINGLE;

    dma_handle.Instance = SDRAM_DMAx_STREAM;

    /* Associate the DMA handle */
    __HAL_LINKDMA(hsdram, hdma, dma_handle);

    /* Deinitialize the stream for new transfer */
    HAL_DMA_DeInit(&dma_handle);

    /* Configure the DMA stream */
    HAL_DMA_Init(&dma_handle);
我现在SDRAM改为 16bit数据宽度后 DMA是否也要做相应修改,如果修改的话请问在配置里应该如何修改?

非常感谢!

xmshao 发表于 2018-11-21 11:13:44

第8句 第9句,还有相关内存数组定义数据定义也调整下。

cruelfox 发表于 2018-11-26 11:19:50

片外SDRAM的接口数据位宽不论是16-bit还是32-bit, 在FMC的AHB接口这边都是可以用8/16/32-bit随机访问, FMC会将AHB对内存的访问转换成外部操作时序,而且它有FIFO. 对程序而言读写操作都是一样的。
DMA对FMC的访问,我想用16-bit还是32-bit都可以,都能成功。效率上也许有差别,要试试。

tanic 发表于 2018-11-26 14:55:32

授人以渔
找官方用16位SDram的板子的demo
或者用CUBEMAX生成选择16位,看看生成的代码是啥
页: [1]
查看完整版本: STM32F469 使用16位SDRM时dma如何配置?