diff options
author | Fredrik Thulin <fredrik@thulin.net> | 2016-06-02 14:56:56 +0200 |
---|---|---|
committer | Fredrik Thulin <fredrik@thulin.net> | 2016-06-02 14:56:56 +0200 |
commit | ae1ecf87f6b8d7c34b32af0547f118ff7697c2ef (patch) | |
tree | ad7923423ba64b3a40f2646b210617340d96eaf2 /stm-uart.h | |
parent | 1b3870dd4e0429e1809ce40b70a8f558ffb5df3a (diff) |
Use DMA for UART RX instead of interrupts.
DMA is more efficient and less prone to miss characters than interrupts.
An open question is if circular mode is really the best. If someone
copy-pastes more than the RX buffer size of configuration into the CLI,
we risk the DMA controller catching up with the reader and overwriting
data not yet read.
Since we don't have flow control back to the users terminal, we will
always fail if too much data is entered before we can process it. The
question is if failing to stuff new data at the end of a buffer might be
better than data being overwritten - thus messing up the commands in
unpredictable ways.
Diffstat (limited to 'stm-uart.h')
-rw-r--r-- | stm-uart.h | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -48,6 +48,9 @@ enum stm_uart_port { extern UART_HandleTypeDef huart_mgmt; extern UART_HandleTypeDef huart_user; +extern DMA_HandleTypeDef hdma_usart_mgmt_rx; +extern DMA_HandleTypeDef hdma_usart_user_rx; + extern HAL_StatusTypeDef uart_send_char(uint8_t ch); extern HAL_StatusTypeDef uart_recv_char(uint8_t *cp); |