WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
hal_dma.h 文件参考
#include <stdint.h>
#include <stdbool.h>
#include "common_def.h"
#include "errcode.h"
#include "dma_porting.h"
hal_dma.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

结构体

struct  hal_dma_transfer_base_config
 DMA传输基本配置 更多...
 
struct  hal_dma_transfer_peri_config
 DMA传输外设配置 更多...
 

类型定义

typedef void(* hal_dma_transfer_cb_t) (uint8_t intr, uint8_t channel, uintptr_t arg)
 hal层DMA通道传输完成/错误所触发的回调函数指针
 
typedef enum hal_dma_data_width hal_dma_data_width_t
 DMA传输数据宽度
 
typedef enum hal_dma_burst_transaction_length hal_dma_burst_transaction_length_t
 DMA传输burst长度
 
typedef enum hal_dma_address_inc hal_dma_address_inc_t
 DMA源/目的端地址增量模式长度
 
typedef enum hal_dma_ch_priority hal_dma_ch_priority_t
 DMA传输优先级
 
typedef enum hal_dma_trans_type hal_dma_trans_type_t
 DMA传输类型
 
typedef enum hal_dma_protection_control hal_dma_protection_control_t
 DMA保护控制位,用于驱动AHB HPRO[3:1]总线
 
typedef enum hal_dma_mux_handshaking_status hal_dma_mux_handshaking_status_t
 DMA外设握手状态
 
typedef enum dma_ch_transfer_dir dma_ch_transfer_dir_t
 DMA传输方向
 
typedef enum hal_dma_handshaking_select hal_dma_handshaking_select_t
 DMA握手选择
 
typedef enum hal_dma_interrupt hal_dma_interrupt_t
 DMA中断类型
 
typedef enum hal_dma_master_select hal_dma_master_select_t
 DMA主机选择
 
typedef enum hal_dma_ch_state hal_dma_ch_state_t
 DMA通道工作状态
 
typedef struct hal_dma_transfer_base_config hal_dma_transfer_base_config_t
 DMA传输基本配置
 
typedef struct hal_dma_transfer_peri_config hal_dma_transfer_peri_config_t
 DMA传输外设配置
 
typedef enum hal_dma_type hal_dma_type_t
 区分DMA类型
 

枚举

enum  hal_dma_data_width {
  HAL_DMA_TRANSFER_WIDTH_8 , HAL_DMA_TRANSFER_WIDTH_16 , HAL_DMA_TRANSFER_WIDTH_32 , HAL_DMA_TRANSFER_WIDTH_64 ,
  HAL_DMA_TRANSFER_WIDTH_128 , HAL_DMA_TRANSFER_WIDTH_256
}
 DMA传输数据宽度 更多...
 
enum  hal_dma_burst_transaction_length {
  HAL_DMA_BURST_TRANSACTION_LENGTH_1 , HAL_DMA_BURST_TRANSACTION_LENGTH_4 , HAL_DMA_BURST_TRANSACTION_LENGTH_8 , HAL_DMA_BURST_TRANSACTION_LENGTH_16 ,
  HAL_DMA_BURST_TRANSACTION_LENGTH_32 , HAL_DMA_BURST_TRANSACTION_LENGTH_64 , HAL_DMA_BURST_TRANSACTION_LENGTH_128 , HAL_DMA_BURST_TRANSACTION_LENGTH_256
}
 DMA传输burst长度 更多...
 
enum  hal_dma_address_inc { HAL_DMA_ADDRESS_INC_INCREMENT , HAL_DMA_ADDRESS_INC_DECREMENT , HAL_DMA_ADDRESS_INC_NO_CHANGE , HAL_DMA_ADDRESS_INC_TYPES }
 DMA源/目的端地址增量模式长度 更多...
 
enum  hal_dma_ch_priority { HAL_DMA_CH_PRIORITY_0 , HAL_DMA_CH_PRIORITY_1 , HAL_DMA_CH_PRIORITY_2 , HAL_DMA_CH_PRIORITY_3 }
 DMA传输优先级 更多...
 
enum  hal_dma_trans_type {
  HAL_DMA_TRANS_MEMORY_TO_MEMORY_DMA , HAL_DMA_TRANS_MEMORY_TO_PERIPHERAL_DMA , HAL_DMA_TRANS_PERIPHERAL_TO_MEMORY_DMA , HAL_DMA_TRANS_PERIPHERAL_TO_PERIPHERAL_DMA ,
  HAL_DMA_TRANS_PERIPHERAL_TO_MEMORY_PERIPHERAL , HAL_DMA_TRANS_PERIPHERAL_TO_PERIPHERAL_SRC , HAL_DMA_TRANS_MEMORY_TO_PERIPHERAL_PERIPHERAL , HAL_DMA_TRANS_PERIPHERAL_TO_PERIPHERAL_DST
}
 DMA传输类型 更多...
 
enum  hal_dma_protection_control {
  HAL_DMA_PROTECTION_CONTROL_NONE , HAL_DMA_PROTECTION_CONTROL_PRIVILEGED , HAL_DMA_PROTECTION_CONTROL_BUFFERABLE , HAL_DMA_PROTECTION_CONTROL_PRIVILEGED_BUFFERABLE ,
  HAL_DMA_PROTECTION_CONTROL_CACHEABLE , HAL_DMA_PROTECTION_CONTROL_PRIVILEGED_CACHEABLE , HAL_DMA_PROTECTION_CONTROL_BUFFERABLE_CACHEABLE , HAL_DMA_PROTECTION_CONTROL_ALL
}
 DMA保护控制位,用于驱动AHB HPRO[3:1]总线 更多...
 
enum  hal_dma_mux_handshaking_status { HAL_DMA_MUX_HANDSHAKING_IDLE , HAL_DMA_MUX_HANDSHAKING_USING }
 DMA外设握手状态 更多...
 
enum  dma_ch_transfer_dir { HAL_DMA_TRANSFER_DIR_MEM_TO_PERIPHERAL , HAL_DMA_TRANSFER_DIR_PERIPHERAL_TO_MEM , HAL_DMA_TRANSFER_DIR_PERIPHERAL_TO_PERIPHERAL }
 DMA传输方向 更多...
 
enum  hal_dma_handshaking_select { HAL_DMA_HARDWARE_HANDSHAKING = 0x0 , HAL_DMA_SOFTWARE_HANDSHAKING = 0x1 }
 DMA握手选择 更多...
 
enum  hal_dma_interrupt {
  HAL_DMA_INTERRUPT_TFR , HAL_DMA_INTERRUPT_BLOCK , HAL_DMA_INTERRUPT_SRCTRAN , HAL_DMA_INTERRUPT_DSTTRAN ,
  HAL_DMA_INTERRUPT_ERR
}
 DMA中断类型 更多...
 
enum  hal_dma_master_select {
  HAL_DMA_MASTER_SELECT_DEFAULT = 0x0 , HAL_DMA_MASTER_SELECT_0 = 0x0 , HAL_DMA_MASTER_SELECT_1 = 0x1 , HAL_DMA_MASTER_SELECT_2 = 0x2 ,
  HAL_DMA_MASTER_SELECT_3 = 0x3 , HAL_DMA_MASTER_SELECT_HIGHEST = 0x3 , HAL_DMA_MASTER_SELECT_ERROR = 0x4
}
 DMA主机选择 更多...
 
enum  hal_dma_ch_state { HAL_DMA_CH_STATE_CLOSED , HAL_DMA_CH_STATE_IDLE , HAL_DMA_CH_STATE_ACTIVE , HAL_DMA_CH_STATE_ERROR }
 DMA通道工作状态 更多...
 
enum  hal_dma_type { HAL_DMA_TYPE_BDMA , HAL_DMA_TYPE_SDMA }
 区分DMA类型 更多...
 

函数

errcode_t hal_dma_init (void)
 HAL层DMA的初始化接口
 
void hal_dma_deinit (void)
 HAL层DMA的去初始化接口
 
void hal_dma_open (void)
 HAL层DMA开启接口
 
void hal_dma_close (void)
 HAL层DMA关闭接口
 
void hal_dma_enable (dma_channel_t ch, bool en)
 HAL层通道使能/去使能接口
 
uint32_t hal_dma_get_block (dma_channel_t ch)
 HAL层获取DMA传输的数据量接口
 
void hal_dma_interrupt_clear (dma_channel_t ch, hal_dma_interrupt_t int_type)
 HAL层清除中断接口
 
dma_channel_t hal_dma_get_idle_ch (hal_dma_handshaking_source_t source, hal_dma_burst_transaction_length_t burst_length)
 HAL层获取闲置通道接口
 
errcode_t hal_dma_config_single_block (dma_channel_t ch, const hal_dma_transfer_base_config_t *base_cfg, hal_dma_transfer_peri_config_t *periph_cfg)
 HAL层配置单块传输
 
errcode_t hal_dma_add_lli_transfer (dma_channel_t ch, const hal_dma_transfer_base_config_t *base_cfg, hal_dma_transfer_peri_config_t *periph_cfg)
 HAL层配置链表传输
 
bool hal_dma_is_enabled (dma_channel_t ch)
 HAL层检查DMA通道是否使能接口
 
void hal_dma_enable_lli (dma_channel_t ch, hal_dma_transfer_cb_t callback, uintptr_t arg)
 HAL层使能链表传输接口
 
errcode_t dma_port_set_mux_channel (dma_channel_t ch, hal_dma_transfer_peri_config_t *per_cfg)
 设置硬件握手号复用
 
void dma_port_set_channel_handshaking_source (hal_dma_hardshaking_channel_t ch, hal_dma_handshaking_source_t source)
 设置硬件握手选择.
 
hal_dma_master_select_t dma_port_get_master_select (dma_channel_t ch, uint32_t addr)
 获取master选择.
 
errcode_t hal_dma_regs_init (void)
 初始化DMA,设置寄存器的基地址。