SemiDrive E3 MCAL 开发系列(11)– Dma 模块的使用

一、概述

本文将会介绍 SemiDrive E3 MCAL DMA 模块的简介以及基本配置。此外会结合实际操作的介绍,帮助新手快速了解并掌握这个模块的使用,文中的 MCAL 是基于 PTG3.0 的版本,开发板是官方的 E3640 网关板。

二、   DMA 模块简介

SemiDrvie E3 系列芯片中包含有 DMA_SF0、DMA_SF1、DMA_AP 3 个控制器,其中 DMA_SF0 和 DMA_SF1 有 24 个通道(注:E3206/E3205/E3106/E3104 有 16 个通道),DMA_AP 有 8 个通道。

其中 DMA_SF0 和 DMA_SF1 支持 Lockstep 模式,开启该模式后只能使用 DMA_SF0,DMA_SF1 负责校验。

另外裸机模式下 DMA 初始化时会根据中断向量表配置自动注册中断, OS 模式下则需要用户手动进行配置。

三、   DMA 模块的主要配置

下面介绍 DMA 模块的配置,配置分为两个部分,一个是通用配置,另一部分是 DMA 通道配置,通用配置比较简单,如下图所示,主要有两个选项。

图 3.1 DMA 模块通用配置

DmaLockstepMode:该选项用于配置是否使能 Lockstep 模式。

DmaDynamicMode:该选项用于配置是否使能动态通道配置,若需要用到多核,则不支持动态通道配置。

    接着配置 DMA 通道,主要有以下选项:

DmaHwUnitId:配置 Dma 硬件单元,可选择 DMA_INSTANCE_SF0、DMA_INSTANCE_SF_1、DMA_INSTANCE_AP。

DmaChannelId:选择使用哪个 DMA 通道,DMA_INSTANCE_SF_0、DMA_INSTANCE_SF_1 最大可以使用的通道数为 24(选项值可以选择 0 ~23),DMA_INSTANCE_AP 最大可用的通道数为 8(选项值可以选择 0~7)。

DmaSubId:用来标志需要用到 Dma 的外设的功能,支持的功能列表如下所示:

Peripherals

DmaSubId

ADC

ADC_FIFO0

ADC_FIFO1

ADC_FIFO2

ADC_FIFO3

SPI

SPI_TX

SPI_RX

PWM

PWM_FIFO_A

PWM_FIFO_B

PWM_FIFO_C

PWM_CE

ICU

ICU_CPT_A

ICU_CPT_B

PWM_FIFO_D

PWM_CE

ICU_CPT_A

ICU_CPT_C

ICU_CPT_D

XSPI

XSPI_PORTA_RD

XSPI_PORTA_WR

XSPI_PORTB_RD

XSPI_PORTB_WR

表 3.1 E3 DMA 支持的外设

DmaResourceRef:选择配置在该 Dma 通道的外设信息,一定要和 DmaSubId 保持一致。

四、   实际操作

实际操作我们采用 MCAL 的例程,该例程是通过 DMA 实现内存和内存之间数据的搬运。具体操作步骤如下图所示,将 MCAL 测试例程烧录到板子后,接上串口,上电运行,输入测试命令“runcase 2801”,该测试命令会调用 dma_mem2mem_memcpy_test 这个测试函数。通过串口 LOG 可以看到 “dma memcpy success”时,则说明 DMA 搬运成功。具体测试代码如图 4.2 所示。

图 4.1 DMA 测试步骤


图 4.2 DMA 测试代码

五、  参考资料

1.《SemiDrive_E3_MCAL_User_Guide_Rev03.00.pdf》,2023.08

点击此处登录大大通,获取更多相关系列技术内容吧! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值