国产DSP FT-M6678开发-DMA

简介

        DMA 是 FT-M6678 的数据传输引擎之一,是 CrossNet 的主要主机。而CrossNet 是所有设备的数据交换中心, 可提供所有的外围设备、片内存储、 DSP 核之间进行无阻塞的高速数据交换。DMA 在 FT-M6678 中处于数据交换中枢的位置,通过 CrossNet 总线,对内连接 8 个 DSP 核的核内存储资源(L1D、 L1P 和 L2),对外连接 DDR3、 SRIO、EMIF32、 GPIO、 I2C、 SPI 等片上外设和 FFT 等加速器件。

        DMA 控制器由以下几部分组成:

        1. DMA 逻辑通道, 8 个 DSP 核共享 3 组逻辑通道, 分别为 DMA0、DMA1和 DMA2。其中DMA0包含 16 个 DMA 通道和 8 个 QDMA通道,DMA1包含 64 个 DMA 通道和 8 个 QDMA 通道,DMA2包含 64 个 DMA通道和 8 个 QDMA 通道。每个 DMA 通道都有一个事件与之关联,由这些事件触发启动相应通道。 每组逻辑通道都有一组寄存器进行配置。DMA 通道优先于 QDMA 通道,序号低的逻辑通道优先于序号高的逻辑通道。

        2. DMA 传输控制器,主要由不同的传输控制逻辑组成, DMA 设置 10 个通用 DMA 传输控制器;10 个传输控制器分为 3 组,第 0 组包含 2 个传输控制器,第 1 组和第 2 组各包含 4 个传输控制器, 3 组传输控制器由 8 个 DSP 核共享。

        3. CrossNet 总线接口,高速存储总线接口,数据总线位宽为 256 位,主要用于访问 MSMC和 DDR3;低速存储总线接口,数据总线位宽 128 位,主要用于访问除 MSMC和 DDR3 外的其他存储资源;配置总线接口,数据总线位宽 32 位,主要用于访问 FT-M6678 的配置寄存器空间。

开发接口

        从工程师角度来说DMA就是将数据从一个地址空间,拷贝到另外一个地址空间,中间不需要CPU参与。官方提供的接口主要是三个:

        1. DMA配置函数:DMA_ParaConfig

/*******************************************************************************
*函数名:DMA_ParaConfig(int DMA_Numb,int Numb ,int SourceAddr,int Acount,int Bcount,int DestinationAddr,int IntEnable)
*功    能: DMA配置函数
*参    数:DMA_Numb为DMA部件的选择,为DMA0,DMA1,DMA2其中的一个;Numb为通道号;
*     SourceAddr为源地址;Acount为数据字节数;Bcount为数据帧数;
*     DestinationAddr为目的地址;IntEnable为中断使能
*******************************************************************************/
void DMA_ParaConfig(int DMA_Numb,int Numb ,int SourceAddr,int Acount,int Bcount,int DestinationAddr,int IntEnable)

        2. DMA启动传输函数:DMA_Start

/*******************************************************************************
*函数名:DMA_Start(int DMA_Numb , int Numb)
*功    能: DMA启动传输函数
*参    数:DMA_Numb为DMA部件的选择,为DMA0,DMA1,DMA2其中的一个;Numb为通道号。
*******************************************************************************/
void DMA_Start(int DMA_Numb , int Numb)

        3. DMA传输状态查询函数:DMA_TransState

/*******************************************************************************
*函数名:DMA_TransState(int DMA_Numb , int Numb)
*功    能: DMA传输状态查询函数
*参    数:DMA_Numb为DMA部件的选择,为DMA0,DMA1,DMA2其中的一个;Numb为通道号。
*******************************************************************************/
int DMA_TransState(int DMA_Numb , int Numb)

        注:传输状态查询可用于轮询方式进行DMA状态,而DMA传输时可使用中断方式,来完成,个人比较喜欢轮询方式。

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值