?? hal_edma.h
字號:
/*
* 測試硬件平臺:LPLD_K60 Card
* 版權所有:北京拉普蘭德電子技術有限公司
* 網絡銷售:http://laplenden.taobao.com
* 公司門戶:http://www.lpld.cn
*
* 文件名: HAL_eDAM.c
* 用途: eDMA底層模塊相關函數
* 最后修改日期: 20120321
*
* 開發者使用協議:
* 本代碼面向所有使用者開放源代碼,開發者可以隨意修改源代碼。但本段及以上注釋應
* 予以保留,不得更改或刪除原版權所有者姓名。二次開發者可以加注二次版權所有者,
* 但應在遵守此協議的基礎上,開放源代碼、不得出售代碼本身。
*/
#ifndef __HAL_EDMA_H__
#define __HAL_EDMA_H__
//=====================================
// DMA request sources Number
// 外設的DMA請求號
//=====================================
#define UART0_REV_DMAREQ 2
#define UART0_TRAN_DMAREQ 3
#define UART1_REV_DMAREQ 4
#define UART1_TRAN_DMAREQ 5
#define UART2_REV_DMAREQ 6
#define UART2_TRAN_DMAREQ 7
#define UART3_REV_DMAREQ 8
#define UART3_TRAN_DMAREQ 9
#define UART4_REV_DMAREQ 10
#define UART4_TRAN_DMAREQ 11
#define UART5_REV_DMAREQ 12
#define UART5_TRAN_DMAREQ 13
#define I2S0_REV_DMAREQ 14
#define I2S0_TRAN_DMAREQ 15
#define SPI0_REV_DMAREQ 16
#define SPI0_TRAN_DMAREQ 17
#define SPI1_REV_DMAREQ 18
#define SPI1_TRAN_DMAREQ 19
#define I2C0_DMAREQ 22
#define I2C1_DMAREQ 23
#define FTM0_CH0_DMAREQ 24
#define FTM0_CH1_DMAREQ 25
#define FTM0_CH2_DMAREQ 26
#define FTM0_CH3_DMAREQ 27
#define FTM0_CH4_DMAREQ 28
#define FTM0_CH5_DMAREQ 29
#define FTM0_CH6_DMAREQ 30
#define FTM0_CH7_DMAREQ 31
#define FTM1_CH0_DMAREQ 32
#define FTM1_CH1_DMAREQ 33
#define FTM2_CH0_DMAREQ 34
#define FTM2_CH1_DMAREQ 35
#define FTM3_CH0_DMAREQ 36
#define FTM3_CH1_DMAREQ 37
#define FTM3_CH2_DMAREQ 38
#define FTM1_CH3_DMAREQ 39
#define ADC0_DMAREQ 40
#define ADC1_DMAREQ 41
#define CMP0_DMAREQ 42
#define CMP1_DMAREQ 43
#define CMP2_DMAREQ 44
#define DAC0_DMAREQ 45
#define DAC1_DMAREQ 46
#define CMT_DMAREQ 47
#define PDB_DMAREQ 48
#define PORTA_DMAREQ 49
#define PORTB_DMAREQ 50
#define PORTC_DMAREQ 51
#define PORTD_DMAREQ 52
#define PORTE_DMAREQ 53
#define FTM3_CH4_DMAREQ 54
#define FTM3_CH5_DMAREQ 55
#define FTM3_CH6_DMAREQ 56
#define FTM3_CH7_DMAREQ 57
//===========================================
// DMA 傳輸的數據長度
// 源地址數據長度分為: 8bit、16bit、32bit
// 目的地址數據長度分為:8bit、16bit、32bit
//===========================================
#define DMA_SRC_8BIT DMA_ATTR_SSIZE(0)
#define DMA_SRC_16BIT DMA_ATTR_SSIZE(1)
#define DMA_SRC_32BIT DMA_ATTR_SSIZE(2)
#define DMA_DST_8BIT DMA_ATTR_DSIZE(0)
#define DMA_DST_16BIT DMA_ATTR_DSIZE(1)
#define DMA_DST_32BIT DMA_ATTR_DSIZE(2)
//==========================================
// 執行完一次DMA操作以后,地址是否偏移
// =1 地址加一
// =0 地址不累加
//==========================================
#define ADDR_INCREASE 1
#define ADDR_HOLD 0
//==========================================
// 定義DMA通道號
//==========================================
#define DMA_CH0 0
#define DMA_CH1 1
#define DMA_CH2 2
#define DMA_CH3 3
#define DMA_CH4 4
#define DMA_CH5 5
#define DMA_CH6 6
#define DMA_CH7 7
#define DMA_CH8 8
#define DMA_CH9 9
#define DMA_CH10 10
#define DMA_CH11 11
#define DMA_CH12 12
#define DMA_CH13 13
#define DMA_CH14 14
#define DMA_CH15 15
typedef void (*DMA_ISR_CALLBACK)(void);
typedef struct
{
uint8_t Channelx; //通道編號
uint8_t Peri_DmaReq; //外設的DMA請求號
uint16_t Minor_loop_Length; //設置數據長度
uint32_t Trans_bytesNum; //每一次DMA請求后,傳輸的字節個數
uint32_t Source_Addr ; //源地址
uint8_t Source_Size ; //源數據的寬度 即每一次傳輸數據的寬度 8bit、16bit、32bit三種數據寬度
uint8_t Source_Addr_inc; //在執行完一個地址之后,地址是否累加 1:累加 0:不累加
uint32_t Source_Adj_Addr; //當主的計數次數(major iteration count)達到后,是否重新更改源地址
uint32_t Dest_Addr ; //目的地址
uint8_t Dest_Size ; //目的地址的寬度 即每一次傳輸數據的寬度 8bit、16bit、32bit三種數據寬度
uint8_t Dest_Addr_inc; //在執行完一個地址之后,地址是否累加 1:累加 0:不累加
uint32_t Dest_Adj_Addr; //當主的計數次數(major iteration count)達到后,是否重新更改目的地址
uint8_t Dma_irqc; //Dma中斷選擇
//00 關閉中斷
//01 主循環計數器計數減到一半,產生中斷
//02 主循環計數器計數減到零時,產生中斷
uint8_t Dma_AutoClose; //當主循環計數器減少到零的時候,是否關閉DMA
//00 開啟自動關閉
//01 關閉自動關閉
DMA_ISR_CALLBACK isr_func; //定義回調函數
}LPLD_eDMA_Cfg_t;
uint8_t LPLD_DMA_Init(LPLD_eDMA_Cfg_t *DMA_Config);
void LPLD_DMA_Start(uint8_t ChxNum,uint8_t isEnable);
uint8_t LPLD_eDMA_Config(LPLD_eDMA_Cfg_t *DMA_Config);
void LPLD_DMA_Reload(uint8_t ChxNum,uint32_t Dest_Base_Addr,uint32_t Dest_Addr_Offset,uint16_t Minor_Loop_Length);
void LPLD_DMA_Isr(void);
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -