硬汉嵌入式论坛

 找回密码
 立即注册
查看: 980|回复: 1
收起左侧

[技术讨论] 关于DMA2中内存到内存的几个问题

[复制链接]

7

主题

3

回帖

24

积分

新手上路

积分
24
发表于 2024-6-14 16:38:46 | 显示全部楼层 |阅读模式

我计划使用dma优化fsmc和muc屏的lcd刷新效率,遇到了以下几个问题
1.当使用mem2mem模式时,内存地址和外设地址要如何设置。

2.数据格式要如何设置。
3.初始化完成之后如何开始使用dma传输数据
以下是代码部分

void fsmc_dma_init()
{
   
  DMA_InitTypeDef fsmc_dma_init;
        fsmc_dma_init.DMA_BufferSize=0;//传输的数据大小 初始化为0 后续设置
        fsmc_dma_init.DMA_Channel=DMA_Channel_1;//通道1
        fsmc_dma_init.DMA_DIR=DMA_DIR_MemoryToMemory ;//从内存到内存  LCD的ram到FSMC
        fsmc_dma_init.DMA_FIFOMode=DMA_FIFOMode_Enable;//当开启内存到内存时需要将开启
        fsmc_dma_init.DMA_FIFOThreshold=DMA_FIFOThreshold_Full;
       
        fsmc_dma_init.DMA_Memory0BaseAddr=(uint32_t)TFTLCD->LCD_RAM  ;
        fsmc_dma_init.DMA_MemoryBurst= DMA_MemoryBurst_INC8   ;
        fsmc_dma_init.DMA_MemoryDataSize=DMA_MemoryDataSize_HalfWord  ;//根据sram的数据位=16bit 算则
        fsmc_dma_init.DMA_MemoryInc=DMA_MemoryInc_Disable ;//因将LCD的ram映射为内存 所以将fsmc上的数据传输到lcdram中 所以地址不自增
        fsmc_dma_init.DMA_Mode=DMA_Mode_Normal   ;//正常模式
       
        fsmc_dma_init.DMA_PeripheralBaseAddr=FSMC_Bank1_NORSRAM1;//连接到FSMC bank1
        fsmc_dma_init.DMA_PeripheralBurst=DMA_PeripheralBurst_INC8;
        fsmc_dma_init.DMA_PeripheralDataSize=DMA_PeripheralDataSize_HalfWord;//半字16位
        fsmc_dma_init.DMA_PeripheralInc=DMA_PeripheralInc_Enable ;//外设地址递增 将
        fsmc_dma_init.DMA_Priority=DMA_Priority_Low ;
       
        DMA_Init(DMA2_Stream0,&fsmc_dma_init  );//DMA2 数据流0

}

void fsmc_lcd_dma_tx(u16 ndtr ,uint32_t MemoryBaseAddr )
{
        DMA_MemoryTargetConfig(DMA2_Stream0, MemoryBaseAddr,DMA_Memory_0);
       
        DMA_Cmd(DMA2_Stream0, DISABLE);                      //关闭DMA传输
       
        while (DMA_GetCmdStatus(DMA2_Stream0) != DISABLE){}        //确保DMA可以被设置  
               
        DMA_SetCurrDataCounter(DMA2_Stream0,ndtr);          //数据传输量  

               
        DMA_Cmd(DMA2_Stream0, ENABLE);                      //开启DMA传输


}


回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-15 08:50:46 | 显示全部楼层
参考我这个吧

【原创开源应用第4期】给ili9488,RA8875等类显示屏的emWin底层增加DMA加速,提供RTX,uCOS和FreeRTOS版本
https://forum.anfulai.cn/forum.p ... 7501&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:20 , Processed in 0.035561 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表