硬汉嵌入式论坛

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

[有问必答] 通过SDIO的DMA直接映射到FSMC的问题

[复制链接]

9

主题

46

回帖

73

积分

初级会员

积分
73
发表于 2019-3-17 21:38:10 | 显示全部楼层 |阅读模式
本帖最后由 orta1986 于 2019-3-17 22:07 编辑

大家好,最近打算重新做一个F412的板子(F412RE),412的FSMC是8bit,我是将其链接到一个8位并口TFT屏。

然后,我想从SD卡读取二进制图片文件(提前转好RGB565),然后想通过SDIO的DMA,接收数组直接映射到 FSMC的地址上。
例如,想更新一张图片,则先用过FSMC配合 A0 将TFT屏更新起点设置好,然后,开启SDIO DMA映射,这样就直接将SD卡数据打到TFT上了。

但是有一个问题,SDIO是4bit, 而FSMC是8bit, 应该是每两拍SDIO 时钟 转为一个字节,想问这个转换需要我单独做吗? 还是说DMA会自动帮我整理好并直接从FSMC打出去?想问这个思路可行吗?


我打算这么修改:

SD_DMA_RxConfig((uint32_t *)readbuff, (NumberOfBlocks * BlockSize));

这句话是READ_MULTIBLOCKS 函数中开启DMA的命令。

  /*!< DMA2 Channel4 Config */
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SDIO_FIFO_ADDRESS;
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)BufferDST;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;       
  DMA_InitStructure.DMA_BufferSize = BufferSize / 4;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;       
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;       
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;                          
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;         
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                         
  DMA_Init(DMA2_Channel4, &DMA_InitStructure);


DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)BufferDST;  这句话改为 DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)FSMC_TFT屏数据地址;

其他的都不做修改。

请问这么做就可以实现吗?
回复

使用道具 举报

9

主题

46

回帖

73

积分

初级会员

积分
73
 楼主| 发表于 2019-3-17 22:10:58 | 显示全部楼层
TIM截图20190317220842.jpg

也就是改为

DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)0x60000000;
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119439
QQ
发表于 2019-3-18 02:08:41 | 显示全部楼层
可以。

只有FMC端这种总线接口外设才需要考虑位宽问题。而串口,SPI,SDIO这种外设,是直接操作的他们的数据寄存器或者FIFO,直接上DMA操作即可。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 19:10 , Processed in 0.039304 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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