打印

求助:关于SDIO中FIFO不理解

[复制链接]
1929|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wufei608|  楼主 | 2012-9-2 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sd, IO, FIFO, DM, DMA
本帖最后由 wufei608 于 2012-9-2 12:34 编辑

当使用DMA传输SD数据时,为什么FIFO地址不自增啊?没理解SDIO的FIFO,请大家帮菜鸟解决一下。谢谢大家了…………
代码如下:
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SDIO_FIFO_ADDRESS;  //外设地址,fifo
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)BufferDST; //目标地址
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
//外设为原地址
  DMA_InitStructure.DMA_BufferSize = BufferSize / 4;  //1/4缓存大小
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//使能外设地址不自增
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  //使能存储目标地址自增
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;  //外设数据大小为字,32位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;
//外设数据大小为字,32位
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
   //不循环,循环模式主要用在adc上
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
//通道优先级高
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
//非 存储器至存储器模式
  DMA_Init(DMA2_Channel4, &DMA_InitStructure);
沙发
wforest68| | 2012-9-3 13:00 | 只看该作者
FIFO相当于一个队列,更形象的说就是一个管道。你在管道的一头,你操作的对象在管道的一头,管道的两头都是可以双向操作的(写与读),你读一位管道即将此位推出管道,后面一位占领前一位的位置,写也类似,只是方向相反,所以地址不会自增。

使用特权

评论回复
板凳
wufei608|  楼主 | 2012-9-3 21:37 | 只看该作者
原来是这样啊,谢谢你的解答

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

1

粉丝