HW DMA

来自拉普兰德Wiki
跳转至: 导航搜索

固件说明

HW_DMA.c和HW_DMA.h是DMA模数转换模块的固件驱动文件,这里定义了该模块的初始化函数、地址加载以及软件开始DMA服务请求等函数,你可以通过配置相关结构体来配合其他外设模块实现数据的高速传输。

结构体

DMA_InitTypeDef

变量 描述 取值 初始化
uint8 DMA_CHx 选择DMA通道 DMA_CH0~DMA_CH15 必须初始化
uint8 DMA_Req 选择DMA通道对应的请求源 DMA请求源宏定义 必须初始化
boolean DMA_PeriodicTriggerEnable 是否使能DMA的周期触发功能 TRUE-使能周期触发
FALSE-禁用周期触发
不必须初始化,默认FALSE
uint16 DMA_MajorLoopCnt 配置主循环计数 0~0x7FFF--15位无符号整型 必须初始化
uint32 DMA_MinorByteCnt 配置次循环传输字节数 0~0xFFFFFFFF-32位无符号整型 必须初始化
uint32 DMA_SourceAddr 配置源数据地址 地址指针 必须初始化
uint8 DMA_SourceDataSize 配置源数据大小

DMA_SRC_8BIT-8位数据
DMA_SRC_16BIT-16位数据
DMA_SRC_32BIT-32位数据
DMA_SRC_16BYTE-16字节数据

不必须初始化,默认DMA_SRC_8BIT
int16 DMA_SourceAddrOffset 配置源数据地址偏移,即在上次读取后源地址的偏移量 -32768~32767--16位有符号整型 不必须初始化,默认0
int32 DMA_LastSourceAddrAdj 配置源数据地址在主循环完成后的调整量 32位有符号整型 不必须初始化,默认0
uint32 DMA_DestAddr 配置目的数据地址 地址指针 必须初始化
uint8 DMA_DestDataSize 配置目的数据大小

DMA_DST_8BIT-8位数据
DMA_DST_16BIT-16位数据
DMA_DST_32BIT-32位数据
DMA_DST_16BYTE-16字节数据

不必须初始化,默认DMA_DST_8BIT
int16 DMA_DestAddrOffset 配置目的数据地址偏移,即在上次写入后目的地址的偏移量 -32768~32767--16位有符号整型 不必须初始化,默认0
int32 DMA_LastDestAddrAdj 配置目的数据地址在主循环完成后的调整量 32位有符号整型 不必须初始化,默认0
boolean DMA_AutoDisableReq 使能自动禁用请求,使能后通道请求将在主循环结束后禁用 TRUE-使能自动禁用请求
FALSE-禁用自动禁用请求
不必须初始化,默认FALSE
boolean DMA_MajorCompleteIntEnable 使能DMA主循环完成中断 TRUE-使能
FALSE-禁用
不必须初始化,默认FALSE
boolean DMA_MajorHalfCompleteIntEnable 使能DMA主循环完成到一半中断 TRUE-使能
FALSE-禁用
不必须初始化,默认FALSE
DMA_ISR_CALLBACK DMA_Isr DMA中断回调函数 函数必须为无返回值,无参数(eg. void isr(void);) 不必须初始化、如未初始化则不会触发中断

变量

函数

LPLD_DMA_Init()

函数原型

uint8 LPLD_DMA_Init(DMA_InitTypeDef);

描述

初始化eDMA模块

形参

类型 名称 描述 取值
DMA_InitTypeDef dma_init_struct eDMA初始化结构体 结构体定义见DMA_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_DMA_EnableIrq()

函数原型

uint8 LPLD_DMA_EnableIrq(DMA_InitTypeDef);

描述

使能eDMA中断

形参

类型 名称 描述 取值
DMA_InitTypeDef dma_init_struct eDMA初始化结构体 结构体定义见DMA_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_DMA_DisableIrq()

函数原型

uint8 LPLD_DMA_DisableIrq(DMA_InitTypeDef);

描述

禁用eDMA中断

形参

类型 名称 描述 取值
DMA_InitTypeDef dma_init_struct eDMA初始化结构体 结构体定义见DMA_InitTypeDef

输出

0--配置错误
1--配置成功

LPLD_DMA_SoftwareStartService()

函数原型

void LPLD_DMA_SoftwareStartService(DMA_InitTypeDef);

描述

DMA服务请求软件开始

形参

类型 名称 描述 取值
DMA_InitTypeDef dma_init_struct eDMA初始化结构体 结构体定义见DMA_InitTypeDef

输出

其他

LPLD_DMA_EnableReq()

宏定义原型

#define LPLD_DMA_EnableReq(CHX)  (DMA0->ERQ|=(1<<CHX))

描述

使能通道x的DMA请求

形参

类型 名称 描述 取值
CHX DMA通道号 DMA_CH0~DMA_CH15

输出


LPLD_DMA_DisableReq()

宏定义原型

#define LPLD_DMA_DisableReq(CHX) (DMA0->ERQ&=~(1<<CHX))

描述

禁用通道x的DMA请求

形参

类型 名称 描述 取值
CHX DMA通道号 DMA_CH0~DMA_CH15

输出


LPLD_DMA_LoadSrcAddr()

宏定义原型

#define LPLD_DMA_LoadSrcAddr(CHX, ADDR)   (DMA0->TCD[CHX].SADDR=DMA_SADDR_SADDR(ADDR))

描述

加载源地址

形参

类型 名称 描述 取值
CHX DMA通道号 DMA_CH0~DMA_CH15
void * ADDR 地址指针

输出


LPLD_DMA_LoadDstAddr()

宏定义原型

#define LPLD_DMA_LoadDstAddr(CHX, ADDR)   (DMA0->TCD[CHX].DADDR=DMA_DADDR_DADDR(ADDR))

描述

加载目的地址

形参

类型 名称 描述 取值
CHX DMA通道号 DMA_CH0~DMA_CH15
void * ADDR 地址指针

输出

DMA请求源宏定义

下表定义DMA_InitTypeDef结构体DMA_Req变量的取值,该变量取值为表中请求源宏定义一列。

请求源宏定义 编号 描述
UART0_REV_DMAREQ 2 UART0接收
UART0_TRAN_DMAREQ 3 UART0发送
UART1_REV_DMAREQ 4 UART1接收
UART1_TRAN_DMAREQ 5 UART1发送
UART2_REV_DMAREQ 6 UART2接收
UART2_TRAN_DMAREQ 7 UART2发送
UART3_REV_DMAREQ 8 UART3接收
UART3_TRAN_DMAREQ 9 UART3发送
UART4_REV_DMAREQ 10 UART4接收
UART4_TRAN_DMAREQ 11 UART4发送
UART5_REV_DMAREQ 12 UART5接收
UART5_TRAN_DMAREQ 13 UART5发送
I2S0_REV_DMAREQ 14 I2S0接收
I2S0_TRAN_DMAREQ 15 I2S0发送
SPI0_REV_DMAREQ 16 SPI0接收
SPI0_TRAN_DMAREQ 17 SPI0发送
SPI1_REV_DMAREQ 18 SPI1接收
SPI1_TRAN_DMAREQ 19 SPI1发送
I2C0_DMAREQ 22 I2C0
I2C1_DMAREQ 23 I2C1
FTM0_CH0_DMAREQ 24 FTM0通道0
FTM0_CH1_DMAREQ 25 FTM0通道1
FTM0_CH2_DMAREQ 26 FTM0通道2
FTM0_CH3_DMAREQ 27 FTM0通道3
FTM0_CH4_DMAREQ 28 FTM0通道4
FTM0_CH5_DMAREQ 29 FTM0通道5
FTM0_CH6_DMAREQ 30 FTM0通道6
FTM0_CH7_DMAREQ 31 FTM0通道7
FTM1_CH0_DMAREQ 32 FTM1通道0
FTM1_CH1_DMAREQ 33 FTM1通道1
FTM2_CH0_DMAREQ 34 FTM2通道0
FTM2_CH1_DMAREQ 35 FTM2通道1
FTM3_CH0_DMAREQ 36 FTM2通道0
FTM3_CH1_DMAREQ 37 FTM2通道1
FTM3_CH2_DMAREQ 38 FTM2通道2
FTM3_CH3_DMAREQ 39 FTM2通道3
ADC0_DMAREQ 40 ADC0
ADC1_DMAREQ 41 ADC1
CMP0_DMAREQ 42 CMP0
CMP1_DMAREQ 43 CMP1
CMP2_DMAREQ 44 CMP2
DAC0_DMAREQ 45 DAC0
DAC1_DMAREQ 46 DAC1
CMT_DMAREQ 47 CMT
PDB_DMAREQ 48 PDB
PORTA_DMAREQ 49 Port A
PORTB_DMAREQ 50 Port B
PORTC_DMAREQ 51 Port C
PORTD_DMAREQ 52 Port D
PORTE_DMAREQ 53 Port E
FTM3_CH4_DMAREQ 54 FTM3通道4
FTM3_CH5_DMAREQ 55 FTM3通道5
FTM3_CH6_DMAREQ 56 FTM3通道6
FTM3_CH7_DMAREQ 57 FTM3通道7
DMA_MUX_58 58 DMA MUX 58
DMA_MUX_59 59 DMA MUX 59
DMA_MUX_60 60 DMA MUX 60
DMA_MUX_61 61 DMA MUX 61
DMA_MUX_62 62 DMA MUX 62
DMA_MUX_63 63 DMA MUX 63