WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
DMA

结构体

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,设置寄存器的基地址。
 

详细描述

Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.

Description: Provides hal DMA
History:
2022-10-16, Create file.

类型定义说明

◆ dma_ch_transfer_dir_t

DMA传输方向

◆ hal_dma_address_inc_t

DMA源/目的端地址增量模式长度

◆ hal_dma_burst_transaction_length_t

◆ hal_dma_ch_priority_t

DMA传输优先级

◆ hal_dma_ch_state_t

DMA通道工作状态

◆ hal_dma_data_width_t

DMA传输数据宽度

◆ hal_dma_handshaking_select_t

◆ hal_dma_interrupt_t

DMA中断类型

◆ hal_dma_master_select_t

DMA主机选择

◆ hal_dma_mux_handshaking_status_t

◆ hal_dma_protection_control_t

DMA保护控制位,用于驱动AHB HPRO[3:1]总线

◆ hal_dma_trans_type_t

DMA传输类型

◆ hal_dma_transfer_base_config_t

DMA传输基本配置

◆ hal_dma_transfer_cb_t

typedef void(* hal_dma_transfer_cb_t) (uint8_t intr, uint8_t channel, uintptr_t arg)

hal层DMA通道传输完成/错误所触发的回调函数指针

◆ hal_dma_transfer_peri_config_t

DMA传输外设配置

◆ hal_dma_type_t

区分DMA类型

枚举类型说明

◆ dma_ch_transfer_dir

DMA传输方向

枚举值
HAL_DMA_TRANSFER_DIR_MEM_TO_PERIPHERAL 
HAL_DMA_TRANSFER_DIR_PERIPHERAL_TO_MEM 
HAL_DMA_TRANSFER_DIR_PERIPHERAL_TO_PERIPHERAL 

◆ hal_dma_address_inc

DMA源/目的端地址增量模式长度

枚举值
HAL_DMA_ADDRESS_INC_INCREMENT 
HAL_DMA_ADDRESS_INC_DECREMENT 
HAL_DMA_ADDRESS_INC_NO_CHANGE 
HAL_DMA_ADDRESS_INC_TYPES 

◆ hal_dma_burst_transaction_length

DMA传输burst长度

枚举值
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 

◆ hal_dma_ch_priority

DMA传输优先级

枚举值
HAL_DMA_CH_PRIORITY_0 
HAL_DMA_CH_PRIORITY_1 
HAL_DMA_CH_PRIORITY_2 
HAL_DMA_CH_PRIORITY_3 

◆ hal_dma_ch_state

DMA通道工作状态

枚举值
HAL_DMA_CH_STATE_CLOSED 

DMA通道关闭中

HAL_DMA_CH_STATE_IDLE 

DMA通道已打开,但其配置队列中没有要发送的数据

HAL_DMA_CH_STATE_ACTIVE 

DMA通道正在传输数据或已完成数据传输

HAL_DMA_CH_STATE_ERROR 

DMA通道在传输数据时出错

◆ hal_dma_data_width

DMA传输数据宽度

枚举值
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 

◆ hal_dma_handshaking_select

DMA握手选择

枚举值
HAL_DMA_HARDWARE_HANDSHAKING 
HAL_DMA_SOFTWARE_HANDSHAKING 

◆ hal_dma_interrupt

DMA中断类型

枚举值
HAL_DMA_INTERRUPT_TFR 
HAL_DMA_INTERRUPT_BLOCK 
HAL_DMA_INTERRUPT_SRCTRAN 
HAL_DMA_INTERRUPT_DSTTRAN 
HAL_DMA_INTERRUPT_ERR 

◆ hal_dma_master_select

DMA主机选择

枚举值
HAL_DMA_MASTER_SELECT_DEFAULT 
HAL_DMA_MASTER_SELECT_0 
HAL_DMA_MASTER_SELECT_1 
HAL_DMA_MASTER_SELECT_2 
HAL_DMA_MASTER_SELECT_3 
HAL_DMA_MASTER_SELECT_HIGHEST 
HAL_DMA_MASTER_SELECT_ERROR 

◆ hal_dma_mux_handshaking_status

DMA外设握手状态

枚举值
HAL_DMA_MUX_HANDSHAKING_IDLE 
HAL_DMA_MUX_HANDSHAKING_USING 

◆ hal_dma_protection_control

DMA保护控制位,用于驱动AHB HPRO[3:1]总线

枚举值
HAL_DMA_PROTECTION_CONTROL_NONE 

访问处于用户模式,不能缓存或者cache。

HAL_DMA_PROTECTION_CONTROL_PRIVILEGED 

访问处于特权模式,不能缓存或者cache。

HAL_DMA_PROTECTION_CONTROL_BUFFERABLE 

访问处于用户模式,能缓存但是不能cache。

HAL_DMA_PROTECTION_CONTROL_PRIVILEGED_BUFFERABLE 

访问处于特权模式,能缓存但是不能cache。

HAL_DMA_PROTECTION_CONTROL_CACHEABLE 

访问处于用户模式,不能缓存但是能cache。

HAL_DMA_PROTECTION_CONTROL_PRIVILEGED_CACHEABLE 

访问处于特权模式,不能缓存但是能cache。

HAL_DMA_PROTECTION_CONTROL_BUFFERABLE_CACHEABLE 

访问处于用户模式,能缓存或者cache。

HAL_DMA_PROTECTION_CONTROL_ALL 

访问处于特权模式,能缓存或者cache。

◆ hal_dma_trans_type

DMA传输类型

枚举值
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 

◆ hal_dma_type

区分DMA类型

枚举值
HAL_DMA_TYPE_BDMA 

大dma,用于spi、opi、qspi0、qpsi1

HAL_DMA_TYPE_SDMA 

小dma,用于i2c、uart L0、uart H0、uart H1、IR

函数说明

◆ dma_port_get_master_select()

hal_dma_master_select_t dma_port_get_master_select ( dma_channel_t  ch,
uint32_t  addr 
)

获取master选择.

◆ dma_port_set_channel_handshaking_source()

void dma_port_set_channel_handshaking_source ( hal_dma_hardshaking_channel_t  ch,
hal_dma_handshaking_source_t  source 
)

设置硬件握手选择.

◆ dma_port_set_mux_channel()

errcode_t dma_port_set_mux_channel ( dma_channel_t  ch,
hal_dma_transfer_peri_config_t per_cfg 
)

设置硬件握手号复用

◆ hal_dma_add_lli_transfer()

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层配置链表传输

◆ hal_dma_close()

void hal_dma_close ( void  )

HAL层DMA关闭接口

◆ hal_dma_config_single_block()

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层配置单块传输

◆ hal_dma_deinit()

void hal_dma_deinit ( void  )

HAL层DMA的去初始化接口

◆ hal_dma_enable()

void hal_dma_enable ( dma_channel_t  ch,
bool  en 
)

HAL层通道使能/去使能接口

◆ hal_dma_enable_lli()

void hal_dma_enable_lli ( dma_channel_t  ch,
hal_dma_transfer_cb_t  callback,
uintptr_t  arg 
)

HAL层使能链表传输接口

◆ hal_dma_get_block()

uint32_t hal_dma_get_block ( dma_channel_t  ch)

HAL层获取DMA传输的数据量接口

◆ hal_dma_get_idle_ch()

dma_channel_t hal_dma_get_idle_ch ( hal_dma_handshaking_source_t  source,
hal_dma_burst_transaction_length_t  burst_length 
)

HAL层获取闲置通道接口

◆ hal_dma_init()

errcode_t hal_dma_init ( void  )

HAL层DMA的初始化接口

◆ hal_dma_interrupt_clear()

void hal_dma_interrupt_clear ( dma_channel_t  ch,
hal_dma_interrupt_t  int_type 
)

HAL层清除中断接口

◆ hal_dma_is_enabled()

bool hal_dma_is_enabled ( dma_channel_t  ch)

HAL层检查DMA通道是否使能接口

◆ hal_dma_open()

void hal_dma_open ( void  )

HAL层DMA开启接口

◆ hal_dma_regs_init()

errcode_t hal_dma_regs_init ( void  )

初始化DMA,设置寄存器的基地址。