DMA数据传输

  SD主控制器与系统存储空间进行数据传输时使用SDMA或ADMA2传输方式,需要配置的参数包括:一次传输的数据块数、每块数据大小、传输边界、传输方向、传输数据首地址、DMA传输模式等信息
(1)单DMA传输(SDMA)
单DMA传输的流程图如下图所示,在这种模式下,数据搬运通过SDMA完成,无需处理器参与,释放了CPU资源。在SDMA模式下, System Address存储的是数据传输的实际地址 。因此SDMA传输可以从任何字节开始,对地址没有限制。数据传输块大小的定义需要根据FIFO深度来设置,其大小不能超过FIFO数据容量,一次连续传输数据块数与传输的数据量有关。
当传输达到SDMA存储边界时,SDMA控制器将停止当前传输并产生中断给CPU,需要CPU对SDMA数据传输首地址进行更新才能继续进行数据传输,降低数据传输速度!比如系统边界4KB的条件下,传输32KB的数据需要产生的8次中断才能完成数据的传输。
操作步骤:
  1. 系统内存的数据位置被设置为SDMA系统地址寄存器。
  2. 设置BlockSize寄存器,对CMD17, CMD18, CMD24, CMD25访问有效,仅在未发生传输时可以修改。
  3. 设置BlockCount寄存器,仅在多块传输模式下有效,控制器在每传输完一块后自减,只有在空闲时可以修改。设置Argument寄存器,该寄存器需写入SD访问CMD的bit[39:8];
  4. 设置Transfer Mode寄存器,主机驱动选择多块还是单块,使能块计数,数据传输的方向,自动使能CMD12和使能DMA。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值