|
|
#define | HAL_DMA_DRIVER_VERSION (MAKE_VERSION(1, 0, 0)) |
| | Версия драйвера
|
| |
|
#define | DMA_AHB_MAX_BLOCK_SIZE (4095U) |
| | Максимальный размер транзакции на AHB шине
|
| |
|
#define | HAL_FEATURE_DMA_NUMBER_OF_CHANNELS (8U) |
| | Число каналов одного контроллера DMA.
|
| |
|
#define | HAL_FEATURE_DMA_MAX_NUMBER_HW_HANDSHAKES (16U) |
| | Максимальное число аппаратных интерфейсов запросов DMA.
|
| |
|
#define | HAL_FEATURE_DMA_ALL_CHANNELS (HAL_FEATURE_DMA_NUMBER_OF_CHANNELS * 2U) |
| | Общее число каналов DMA.
|
| |
|
#define | HAL_FEATURE_DMA_LINK_DESCRIPTOR_ALIGN_SIZE (4U) |
| | Размер выравнивания дескриптора
|
| |
|
#define | DMA_ALLOCATE_HEAD_DESCRIPTORS(name, number) dma_descriptor_t name[number] __attribute__((aligned(HAL_FEATURE_DMA_LINK_DESCRIPTOR_ALIGN_SIZE))) |
| | Объявление дескриптора и выравнивание адреса дескриптора
|
| |
|
#define | REG_OFFSET (0x58) |
| | Разница адресов идентичных регистров из соседних каналов
|
| |
|
#define | DMA_HANDSHAKE_UART0_TX (0U) |
| | Номер handshake запроса UART0 TX.
|
| |
|
#define | DMA_HANDSHAKE_UART0_RX (1U) |
| | Номер handshake запроса UART0 RX.
|
| |
|
#define | DMA_HANDSHAKE_UART1_TX (2U) |
| | Номер handshake запроса UART1 TX.
|
| |
|
#define | DMA_HANDSHAKE_UART1_RX (3U) |
| | Номер handshake запроса UART1 RX.
|
| |
|
#define | DMA_HANDSHAKE_UART2_TX (0U) |
| | Номер handshake запроса UART2 TX.
|
| |
|
#define | DMA_HANDSHAKE_UART2_RX (1U) |
| | Номер handshake запроса UART2 RX.
|
| |
|
#define | DMA_HANDSHAKE_UART3_TX (2U) |
| | Номер handshake запроса UART3 TX.
|
| |
|
#define | DMA_HANDSHAKE_UART3_RX (3U) |
| | Номер handshake запроса UART3 RX.
|
| |
|
#define | DMA_HANDSHAKE_SPI0_TX (4U) |
| | Номер handshake запроса SPI0 TX.
|
| |
|
#define | DMA_HANDSHAKE_SPI0_RX (5U) |
| | Номер handshake запроса SPI0 RX.
|
| |
|
#define | DMA_HANDSHAKE_SPI1_TX (6U) |
| | Номер handshake запроса SPI1 TX.
|
| |
|
#define | DMA_HANDSHAKE_SPI1_RX (7U) |
| | Номер handshake запроса SPI1 RX.
|
| |
|
#define | DMA_HANDSHAKE_SPI2_TX (8U) |
| | Номер handshake запроса SPI2 TX.
|
| |
|
#define | DMA_HANDSHAKE_SPI2_RX (9U) |
| | Номер handshake запроса SPI2 RX.
|
| |
|
#define | DMA_HANDSHAKE_I2C0_TX (10U) |
| | Номер handshake запроса I2C0 TX.
|
| |
|
#define | DMA_HANDSHAKE_I2C0_RX (11U) |
| | Номер handshake запроса I2C0 RX.
|
| |
|
#define | DMA_HANDSHAKE_I2C1_TX (12U) |
| | Номер handshake запроса I2C1 TX.
|
| |
|
#define | DMA_HANDSHAKE_I2C1_RX (13U) |
| | Номер handshake запроса I2C1 RX.
|
| |
|
#define | DMA_HANDSHAKE_QSPI_TX (14U) |
| | Номер handshake запроса QSPI TX.
|
| |
|
#define | DMA_HANDSHAKE_QSPI_RX (15U) |
| | Номер handshake запроса QSPI RX.
|
| |
|
|
| void | DMA_Init (DMA_Type *base) |
| | Включение DMA.
|
| |
| void | DMA_Deinit (DMA_Type *base) |
| | Отключение DMA.
|
| |
| dma_status_t | DMA_CreateHandle (dma_handle_t *handle, DMA_Type *base, uint32_t channel) |
| | Инициализация структуры dma_handle_t.
|
| |
| static void | DMA_EnableChannel (DMA_Type *base, uint32_t channel) |
| | Активация канала
|
| |
| void | DMA_DisableChannel (DMA_Type *base, uint32_t channel) |
| | Выключение канала
|
| |
| static void | DMA_EnableChannelPeriphRq (DMA_Type *base, uint32_t channel) |
| | Установка запроса на передачу с периферией
|
| |
| void | DMA_HardwareHandshakeEnable (dma_handle_t *handle, bool enable, uint32_t req_num) |
| | Установка аппаратного интерфейса запроса DMA.
|
| |
| void | DMA_SetChannelPriority (DMA_Type *base, uint32_t channel, dma_priority_t priority) |
| | Установка приоритета канала
|
| |
| void | DMA_SetCallback (dma_handle_t *handle, dma_callback callback, void *user_data) |
| | Установка функции обратного вызова
|
| |
| static bool | DMA_ChannelIsActive (DMA_Type *base, uint32_t channel) |
| | Функция для проверки работы DMA канала
|
| |
| dma_priority_t | DMA_GetChannelPriority (DMA_Type *base, uint32_t channel) |
| | Получение информации о приоритете канала
|
| |
| uint64_t | DMA_GetCTLCfgMask (struct dma_channel_ctl_cfg *ctlxcfg) |
| | Получение маски для конфигурации пересылки
|
| |
| void | DMA_PrepareChannelTransfer (dma_channel_config_t *config, void *src_addr, void *dst_addr, uint64_t xfer_cfg) |
| | Подготовка канала к передаче
|
| |
| dma_status_t | DMA_SubmitChannelTransfer (dma_handle_t *handle, dma_channel_config_t *config) |
| | Отправление конфигурации передачи
|
| |
| void | DMA_SubmitChannelDescriptor (dma_handle_t *handle, dma_descriptor_t *descriptor) |
| | Отправка дескриптора передачи
|
| |
| uint32_t | DMA_GetDescriptorCount (uint32_t size_bytes, uint8_t transfer_width) |
| | Расчёт количества дескрипторов многоблочной передачи
|
| |
| void | DMA_AbortTransfer (dma_handle_t *handle) |
| | Прерывание передачи без потери данных
|
| |
| dma_status_t | DMA_StartTransfer (dma_handle_t *handle) |
| | Начать транзакцию
|
| |
| void | DMA_EnableChannelInterrupt (DMA_Type *base, uint32_t channel, uint8_t int_mask) |
| | Разрешение источника прерывания
|
| |
| void | DMA_DisableChannelInterrupt (DMA_Type *base, uint32_t channel, uint8_t int_mask) |
| | Отключение источника прерывания
|
| |
| void | DMA_SetupDescriptor (dma_descriptor_t *desc, uint64_t xfercfg, void *src_addr, void *dst_addr, void *next_desc) |
| | Инициализация дескриптора
|
| |
| dma_status_t | DMA_SubmitChannelTransferParameter (dma_handle_t *handle, uint64_t xfer_cfg, void *src_addr, void *dst_addr) |
| | Отправка конфигурации передачи в таблицу дескрипторов
|
| |
| void | DMA_ChannelIRQHandle (dma_handle_t *handle) |
| | Обработчик прерываний
|
| |
| void | DMA_ScatterGatherEnable (struct dma_channel_ctl_cfg *ctlxcfg, bool scatter_en, bool gather_en) |
| | Разрешение режимов Разброса/Сбора
|
| |
| void | DMA_SetupSrcGather (dma_handle_t *handle, uint32_t count, uint32_t interval) |
| | Настройка режима сбора источника
|
| |
| void | DMA_SetupDstScatter (dma_handle_t *handle, uint32_t count, uint32_t interval) |
| | Настройка режима разброса приемника
|
| |
| void | DMA_InitMultiblockDescriptor (dma_descriptor_t *desc, dma_multiblock_config_t *config) |
| | Функция, инициализирующая DMA дескрипторы многоблочной передачи.
|
| |
|
| #define | DMA_CHANNEL_CTL_BLOCKSIZE_MASK (0xFFF00000000ULL) |
| |
| #define | DMA_CHANNEL_CTL_BLOCKSIZE_SHIFT (32ULL) |
| |
|
#define | DMA_CHANNEL_CTL_BLOCKSIZE(x) (((uint64_t)((uint64_t)(x)) << DMA_CHANNEL_CTL_BLOCKSIZE_SHIFT) & DMA_CHANNEL_CTL_BLOCKSIZE_MASK) |
| | Размер блока
|
| |
| #define | DMA_CHANNEL_CTL(blockSize, srcEnChain, dstEnChain, transferType, scatter, gather, srcMSize, dstMSize, sInc, dInc, srcTransferWidth, dstTransferWidth, int_en) |
| | Конфигурация регистра CTL.
|
| |
| enum | |
| | Разрядность передачи канала DMA. Подробнее...
|
| |
| enum | |
| | Размер пакета передачи в словах данных разрядностью DMA_TransferBitWidth. Подробнее...
|
| |
| enum | |
| | Тип изменения адреса при пересылке Подробнее...
|
| |
| enum | _dma_status |
| | Статусы возврата из функций для драйвера DMA. Подробнее...
|
| |
| enum | _dma_priority |
| | Приоритеты каналов Подробнее...
|
| |
| enum | _dma_int |
| | Источники прерываний DMA. Подробнее...
|
| |
| enum | _dma_transfer_type |
| | Тип пересылок DMA и управление размером блока Подробнее...
|
| |
|
typedef enum _dma_status | dma_status_t |
| | Статусы возврата из функций для драйвера DMA.
|
| |
|
typedef enum _dma_priority | dma_priority_t |
| | Приоритеты каналов
|
| |
|
typedef enum _dma_int | dma_irq_t |
| | Источники прерываний DMA.
|
| |
|
typedef enum _dma_transfer_type | dma_transfer_type_t |
| | Тип пересылок DMA и управление размером блока
|
| |
|
typedef struct _dma_descriptor | dma_descriptor_t |
| | Описатель следующего блока DMA (LLI)
|
| |
|
typedef struct _dma_channel_reg | dma_channel_regs |
| | Дескриптор на регистры канала DMA.
|
| |
|
typedef struct _dma_channel_config | dma_channel_config_t |
| | Конфигурация канала DMA.
|
| |
|
typedef void(* | dma_callback) (struct _dma_handle *handle, void *user_data, dma_irq_t intmode) |
| | Функция обратного вызова
|
| |
|
typedef struct _dma_handle | dma_handle_t |
| | Управляющая структура передачи
|
| |
|
typedef struct _dma_multiblock_config | dma_multiblock_config_t |
| | Конфигурация многоблочной передачи
|
| |
Интерфейс драйвера прямого доступа к памяти