Go to the documentation of this file.
52 #ifndef __GR55xx_HAL_DMA_H__
53 #define __GR55xx_HAL_DMA_H__
221 #define HAL_DMA_ERROR_NONE ((uint32_t)0x00000000U)
222 #define HAL_DMA_ERROR_TE ((uint32_t)0x00000001U)
223 #define HAL_DMA_ERROR_NO_XFER ((uint32_t)0x00000004U)
224 #define HAL_DMA_ERROR_TIMEOUT ((uint32_t)0x00000020U)
230 #define DMA_REQUEST_SPIM_TX LL_DMA_PERIPH_SPIM_TX
231 #define DMA_REQUEST_SPIM_RX LL_DMA_PERIPH_SPIM_RX
232 #define DMA_REQUEST_SPIS_TX LL_DMA_PERIPH_SPIS_TX
233 #define DMA_REQUEST_SPIS_RX LL_DMA_PERIPH_SPIS_RX
234 #define DMA_REQUEST_QSPI0_TX LL_DMA_PERIPH_QSPI0_TX
235 #define DMA_REQUEST_QSPI0_RX LL_DMA_PERIPH_QSPI0_RX
236 #define DMA_REQUEST_I2C0_TX LL_DMA_PERIPH_I2C0_TX
237 #define DMA_REQUEST_I2C0_RX LL_DMA_PERIPH_I2C0_RX
238 #define DMA_REQUEST_I2C1_TX LL_DMA_PERIPH_I2C1_TX
239 #define DMA_REQUEST_I2C1_RX LL_DMA_PERIPH_I2C1_RX
240 #define DMA_REQUEST_I2S_S_TX LL_DMA_PERIPH_I2S_S_TX
241 #define DMA_REQUEST_I2S_S_RX LL_DMA_PERIPH_I2S_S_RX
242 #define DMA_REQUEST_UART0_TX LL_DMA_PERIPH_UART0_TX
243 #define DMA_REQUEST_UART0_RX LL_DMA_PERIPH_UART0_RX
244 #define DMA_REQUEST_QSPI1_TX LL_DMA_PERIPH_QSPI1_TX
245 #define DMA_REQUEST_QSPI1_RX LL_DMA_PERIPH_QSPI1_RX
246 #define DMA_REQUEST_I2S_M_TX LL_DMA_PERIPH_I2S_M_TX
247 #define DMA_REQUEST_I2S_M_RX LL_DMA_PERIPH_I2S_M_RX
248 #define DMA_REQUEST_SNSADC LL_DMA_PERIPH_SNSADC
249 #define DMA_REQUEST_MEM LL_DMA_PERIPH_MEM
251 #define DMA0_REQUEST_SPIM_TX DMA_REQUEST_SPIM_TX
252 #define DMA0_REQUEST_SPIM_RX DMA_REQUEST_SPIM_RX
253 #define DMA0_REQUEST_SPIS_TX DMA_REQUEST_SPIS_TX
254 #define DMA0_REQUEST_SPIS_RX DMA_REQUEST_SPIS_RX
255 #define DMA0_REQUEST_QSPI0_TX DMA_REQUEST_QSPI0_TX
256 #define DMA0_REQUEST_QSPI0_RX DMA_REQUEST_QSPI0_RX
257 #define DMA0_REQUEST_I2C0_TX DMA_REQUEST_I2C0_TX
258 #define DMA0_REQUEST_I2C0_RX DMA_REQUEST_I2C0_RX
259 #define DMA0_REQUEST_I2C1_TX DMA_REQUEST_I2C1_TX
260 #define DMA0_REQUEST_I2C1_RX DMA_REQUEST_I2C1_RX
261 #define DMA0_REQUEST_I2S_S_TX DMA_REQUEST_I2S_S_TX
262 #define DMA0_REQUEST_I2S_S_RX DMA_REQUEST_I2S_S_RX
263 #define DMA0_REQUEST_UART0_TX DMA_REQUEST_UART0_TX
264 #define DMA0_REQUEST_UART0_RX DMA_REQUEST_UART0_RX
265 #define DMA0_REQUEST_QSPI1_TX DMA_REQUEST_QSPI1_TX
266 #define DMA0_REQUEST_QSPI1_RX DMA_REQUEST_QSPI1_RX
267 #define DMA0_REQUEST_I2S_M_TX DMA_REQUEST_I2S_M_TX
268 #define DMA0_REQUEST_I2S_M_RX DMA_REQUEST_I2S_M_RX
269 #define DMA0_REQUEST_SNSADC DMA_REQUEST_SNSADC
270 #define DMA0_REQUEST_MEM DMA_REQUEST_MEM
276 #define DMA_MEMORY_TO_MEMORY LL_DMA_DIRECTION_MEMORY_TO_MEMORY
277 #define DMA_MEMORY_TO_PERIPH LL_DMA_DIRECTION_MEMORY_TO_PERIPH
278 #define DMA_PERIPH_TO_MEMORY LL_DMA_DIRECTION_PERIPH_TO_MEMORY
279 #define DMA_PERIPH_TO_PERIPH LL_DMA_DIRECTION_PERIPH_TO_PERIPH
285 #define DMA_SRC_INCREMENT LL_DMA_SRC_INCREMENT
286 #define DMA_SRC_DECREMENT LL_DMA_SRC_DECREMENT
287 #define DMA_SRC_NO_CHANGE LL_DMA_SRC_NO_CHANGE
293 #define DMA_DST_INCREMENT LL_DMA_DST_INCREMENT
294 #define DMA_DST_DECREMENT LL_DMA_DST_DECREMENT
295 #define DMA_DST_NO_CHANGE LL_DMA_DST_NO_CHANGE
301 #define DMA_SDATAALIGN_BYTE LL_DMA_SDATAALIGN_BYTE
302 #define DMA_SDATAALIGN_HALFWORD LL_DMA_SDATAALIGN_HALFWORD
303 #define DMA_SDATAALIGN_WORD LL_DMA_SDATAALIGN_WORD
309 #define DMA_DDATAALIGN_BYTE LL_DMA_DDATAALIGN_BYTE
310 #define DMA_DDATAALIGN_HALFWORD LL_DMA_DDATAALIGN_HALFWORD
311 #define DMA_DDATAALIGN_WORD LL_DMA_DDATAALIGN_WORD
317 #define DMA_NORMAL LL_DMA_MODE_SINGLE_BLOCK
318 #define DMA_CIRCULAR LL_DMA_MODE_MULTI_BLOCK_ALL_RELOAD
325 #define DMA_PRIORITY_LOW LL_DMA_PRIORITY_0
326 #define DMA_PRIORITY_MEDIUM LL_DMA_PRIORITY_2
327 #define DMA_PRIORITY_HIGH LL_DMA_PRIORITY_5
328 #define DMA_PRIORITY_VERY_HIGH LL_DMA_PRIORITY_7
342 #define IS_DMA_ALL_INSTANCE(__instance__) (((__instance__) == DMA_Channel0) || \
343 ((__instance__) == DMA_Channel1) || \
344 ((__instance__) == DMA_Channel2) || \
345 ((__instance__) == DMA_Channel3) || \
346 ((__instance__) == DMA_Channel4) || \
347 ((__instance__) == DMA_Channel5) || \
348 ((__instance__) == DMA_Channel6) || \
349 ((__instance__) == DMA_Channel7))
355 #define IS_DMA_ALL_REQUEST(__REQUEST__) (((__REQUEST__) == DMA_REQUEST_SPIM_TX) || \
356 ((__REQUEST__) == DMA_REQUEST_SPIM_RX) || \
357 ((__REQUEST__) == DMA_REQUEST_SPIS_TX) || \
358 ((__REQUEST__) == DMA_REQUEST_SPIS_RX) || \
359 ((__REQUEST__) == DMA_REQUEST_QSPI0_TX) || \
360 ((__REQUEST__) == DMA_REQUEST_QSPI0_RX) || \
361 ((__REQUEST__) == DMA_REQUEST_I2C0_TX) || \
362 ((__REQUEST__) == DMA_REQUEST_I2C0_RX) || \
363 ((__REQUEST__) == DMA_REQUEST_I2C1_TX) || \
364 ((__REQUEST__) == DMA_REQUEST_I2C1_RX) || \
365 ((__REQUEST__) == DMA_REQUEST_I2S_S_TX) || \
366 ((__REQUEST__) == DMA_REQUEST_I2S_S_RX) || \
367 ((__REQUEST__) == DMA_REQUEST_UART0_TX) || \
368 ((__REQUEST__) == DMA_REQUEST_UART0_RX) || \
369 ((__REQUEST__) == DMA_REQUEST_QSPI1_TX) || \
370 ((__REQUEST__) == DMA_REQUEST_QSPI1_RX) || \
371 ((__REQUEST__) == DMA_REQUEST_I2S_M_TX) || \
372 ((__REQUEST__) == DMA_REQUEST_I2S_M_RX) || \
373 ((__REQUEST__) == DMA_REQUEST_SNSADC) || \
374 ((__REQUEST__) == DMA_REQUEST_MEM))
380 #define IS_DMA_DIRECTION(__DIRECTION__) (((__DIRECTION__) == DMA_MEMORY_TO_MEMORY) || \
381 ((__DIRECTION__) == DMA_MEMORY_TO_PERIPH) || \
382 ((__DIRECTION__) == DMA_PERIPH_TO_MEMORY) || \
383 ((__DIRECTION__) == DMA_PERIPH_TO_PERIPH))
389 #define IS_DMA_BUFFER_SIZE(__SIZE__) (((__SIZE__) >= 0x1) && ((__SIZE__) < 0xFFF))
395 #define IS_DMA_SOURCE_INC_STATE(__STATE__) (((__STATE__) == DMA_SRC_INCREMENT) || \
396 ((__STATE__) == DMA_SRC_DECREMENT) || \
397 ((__STATE__) == DMA_SRC_NO_CHANGE))
403 #define IS_DMA_DESTINATION_INC_STATE(__STATE__) (((__STATE__) == DMA_DST_INCREMENT) || \
404 ((__STATE__) == DMA_DST_DECREMENT) || \
405 ((__STATE__) == DMA_DST_NO_CHANGE))
411 #define IS_DMA_SOURCE_DATA_SIZE(__SIZE__) (((__SIZE__) == DMA_SDATAALIGN_BYTE) || \
412 ((__SIZE__) == DMA_SDATAALIGN_HALFWORD) || \
413 ((__SIZE__) == DMA_SDATAALIGN_WORD))
419 #define IS_DMA_DESTINATION_DATA_SIZE(__SIZE__) (((__SIZE__) == DMA_DDATAALIGN_BYTE) || \
420 ((__SIZE__) == DMA_DDATAALIGN_HALFWORD) || \
421 ((__SIZE__) == DMA_DDATAALIGN_WORD ))
427 #define IS_DMA_MODE(__MODE__) (((__MODE__) == DMA_NORMAL ) || \
428 ((__MODE__) == DMA_CIRCULAR))
434 #define IS_DMA_PRIORITY(__PRIORITY__) (((__PRIORITY__) == DMA_PRIORITY_LOW ) || \
435 ((__PRIORITY__) == DMA_PRIORITY_MEDIUM) || \
436 ((__PRIORITY__) == DMA_PRIORITY_HIGH) || \
437 ((__PRIORITY__) == DMA_PRIORITY_VERY_HIGH))
hal_lock_t
HAL Lock structures definition.
uint32_t hal_dma_get_error(dma_handle_t *p_dma)
Return the DMA error code.
DMA Configuration Structure definition.
struct _dma_handle dma_handle_t
DMA handle Structure definition.
hal_dma_state_t
HAL DMA State Enumerations definition.
hal_status_t hal_dma_start_it(dma_handle_t *p_dma, uint32_t src_address, uint32_t dst_address, uint32_t data_length)
Start the DMA Transfer with interrupt enabled.
hal_status_t hal_dma_abort_it(dma_handle_t *p_dma)
Aborts the DMA Transfer in Interrupt mode.
void hal_dma_irq_handler(dma_handle_t *p_dma)
Handle DMA interrupt request.
void(* xfer_blk_callback)(struct _dma_handle *p_dma)
hal_status_t hal_dma_suspend_reg(dma_handle_t *p_dma)
Suspend some registers related to DMA configuration before sleep.
Header file containing functions prototypes of DMA LL library.
@ HAL_DMA_XFER_ABORT_CB_ID
hal_status_t hal_dma_register_callback(dma_handle_t *p_dma, hal_dma_callback_id_t id, void(*callback)(dma_handle_t *p_dma))
Register callbacks.
hal_status_t hal_dma_poll_for_transfer(dma_handle_t *p_dma, uint32_t timeout)
Polling for transfer complete.
hal_status_t hal_dma_start(dma_handle_t *p_dma, uint32_t src_address, uint32_t dst_address, uint32_t data_length)
Start the DMA Transfer.
hal_status_t hal_dma_resume_reg(dma_handle_t *p_dma)
Restore some registers related to DMA configuration after sleep. This function must be used in conjun...
__IO hal_dma_state_t state
hal_status_t hal_dma_init(dma_handle_t *p_dma)
Initialize the DMA according to the specified parameters in the dma_init_t and initialize the associa...
void(* xfer_error_callback)(struct _dma_handle *p_dma)
hal_dma_callback_id_t
HAL DMA Callback ID Enumerations definition.
void(* xfer_tfr_callback)(struct _dma_handle *p_dma)
void(* xfer_abort_callback)(struct _dma_handle *p_dma)
struct _dma_init dma_init_t
DMA Configuration Structure definition.
hal_status_t
HAL Status structures definition.
hal_dma_state_t hal_dma_get_state(dma_handle_t *p_dma)
Return the DMA hande state.
hal_status_t hal_dma_unregister_callback(dma_handle_t *p_dma, hal_dma_callback_id_t id)
UnRegister callbacks.
uint32_t dst_data_alignment
hal_status_t hal_dma_abort(dma_handle_t *p_dma)
Abort the DMA Transfer.
@ HAL_DMA_XFER_ERROR_CB_ID
uint32_t src_data_alignment
DMA handle Structure definition.
This file contains HAL common definitions, enumeration, macros and structures definitions.
hal_status_t hal_dma_deinit(dma_handle_t *p_dma)
De-initialize the DMA peripheral.
dma_channel_t
HAL DMA Channel Enumerations definition.