|
| 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
◆ hal_dma_address_inc_t
◆ hal_dma_burst_transaction_length_t
◆ hal_dma_ch_priority_t
◆ hal_dma_ch_state_t
◆ hal_dma_data_width_t
◆ hal_dma_handshaking_select_t
◆ hal_dma_interrupt_t
◆ hal_dma_master_select_t
◆ hal_dma_mux_handshaking_status_t
◆ hal_dma_protection_control_t
DMA保护控制位,用于驱动AHB HPRO[3:1]总线
◆ hal_dma_trans_type_t
◆ hal_dma_transfer_base_config_t
◆ 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
◆ hal_dma_type_t
◆ 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()
◆ dma_port_set_channel_handshaking_source()
◆ dma_port_set_mux_channel()
◆ hal_dma_add_lli_transfer()
◆ hal_dma_close()
| void hal_dma_close |
( |
void |
| ) |
|
◆ hal_dma_config_single_block()
◆ hal_dma_deinit()
| void hal_dma_deinit |
( |
void |
| ) |
|
◆ hal_dma_enable()
◆ hal_dma_enable_lli()
◆ hal_dma_get_block()
◆ hal_dma_get_idle_ch()
◆ hal_dma_init()
◆ hal_dma_interrupt_clear()
◆ hal_dma_is_enabled()
◆ hal_dma_open()
| void hal_dma_open |
( |
void |
| ) |
|
◆ hal_dma_regs_init()