版本介绍
为了降低代码耦合性,并减少固件大小,APP_DRV实现了外设模块DMA传输模式的分离,将传输接口分为轮询方式传输接口(app_xxx_transmit_sync) 、中断方式传输接口(app_xxx_transmit_async)及DMA方式传输接口(app_xxx_dma_transmit_async)。
以UART为例,下表显示实现外设模块DMA传输模式的分离,增加了DMA模式设置、传输和控制等相关接口,在进行DMA模式传输时需调用这些接口。
API | 芯片 | |||||
---|---|---|---|---|---|---|
GR551x | GR5526 | GR5x25 | GR533x | GR5405 | ||
UART |
app_uart_init | Y | Y | Y | Y | Y |
app_uart_deinit | Y | Y | Y | Y | Y | |
app_uart_transmit_async | Y | Y | Y | Y | Y | |
app_uart_transmit_sync | Y | Y | Y | Y | Y | |
app_uart_receive_async | Y | Y | Y | Y | Y | |
app_uart_receive_sync | Y | Y | Y | Y | Y | |
app_uart_transmit_sem_sync | Y | Y | Y | Y | Y | |
app_uart_receive_sem_sync | Y | Y | Y | Y | Y | |
app_uart_flush | Y | Y | Y | Y | Y | |
app_uart_abort | Y | Y | Y | Y | Y | |
app_uart_abort_transmit | Y | Y | Y | Y | Y | |
app_uart_abort_receive | Y | Y | Y | Y | Y | |
app_uart_get_handle | Y | Y | Y | Y | Y | |
app_uart_dma_init | Y | Y | Y | Y | Y | |
app_uart_dma_deinit | Y | Y | Y | Y | Y | |
app_uart_dma_transmit_async | Y | Y | Y | Y | Y | |
app_uart_dma_receive_async | Y | Y | Y | Y | Y | |
app_uart_transmit_dma_sg_llp | N | Y | Y | N | N | |
app_uart_receive_dma_sg_llp | N | Y | Y | N | N |
Note:
上表中“Y”表示支持;“N”表示不支持。下文表格中同理。
以UART为例,下图展示UART实现DMA传输的流程,在使用DMA方式进行传输,首先需要调用app_uart_dma_init进行DMA初始化,即可使用DMA方式传输接口app_uart_dma_transmit_async进行数据的传输。