HAL_UARTEx_ReceiveToIdle_DMA() only receives 16 bytes.
Hi, I have a problem with the HAL_UARTEx_ReceiveToIdle_DMA() function. I'm using this simple code
main.c:
#define TM_BUS_DATA_RX_BUFFER_SIZE 256
uint8_t TM_BUS_DATA_RX_BUFFER[TM_BUS_DATA_RX_BUFFER_SIZE] = {0x00};HAL_UARTEx_ReceiveToIdle_DMA(&huart3, TM_BUS_DATA_RX_BUFFER, TM_BUS_DATA_RX_BUFFER_SIZE);
__HAL_DMA_DISABLE_IT(&hdma_usart3_rx, DMA_IT_HT);void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size) {
if( huart->Instance == TM_UART_NAME ) {
DEBUG_MSG("TM UART RX: %s [%d]\r\n", TM_BUS_DATA_RX_BUFFER, Size);
HAL_UARTEx_ReceiveToIdle_DMA(&huart3, TM_BUS_DATA_RX_BUFFER, TM_BUS_DATA_RX_BUFFER_SIZE);
__HAL_DMA_DISABLE_IT(&hdma_usart3_rx, DMA_IT_HT);
}
}everything works, for example I tried to send first 5 characters, then 8 characters and everything is fine, but if I try to send a package longer than 16 characters, only the first 16 characters are read and then everything freezes and no more data is received from the UART.
I don't understand why everything crashes with packets longer than 16 characters since my buffer is 256 bytes. Where did this 16 byte limit come from?
Can anyone help me?
