bl_iot_sdk icon indicating copy to clipboard operation
bl_iot_sdk copied to clipboard

how to use uart in both dma and int mode?

Open Dandjinh opened this issue 1 year ago • 0 comments

I wanna use DMA RX and RTO/RX END interrupt to get variable length data.

Code is like below

hosal_uart_init()
hosal_uart_callback_set(HOSAL_UART_RX_CALLBACK, _rx_callback)
hosal_uart_ioctl(HOSAL_UART_MODE_SET, HOSAL_UART_MODE_INT)

hosal_uart_ioctl(HOSAL_UART_DMA_RX_START)
... waiting rx int ...
rx_size = DMA_Channel_TranferSize(uart->dma_rx_chan)
hosal_dma_chan_stop(uart->dma_rx_chan)

// rx_size is always the same of config size in dma_config

The log shows rx int was triggered by UART_INT_RX_FIFO_REQ and the buffer dma was being used had nothing with incoming data.

Demo code project here, bl_uart_test.zip

Dandjinh avatar Apr 26 '23 05:04 Dandjinh