Do transmit interrupts interfere with receive interrupts, causing packet drops?
I have a simple application with the goal to fill a ring buffer with bytes received on the uart, while always transmitting 'E' at the same time. The UART uses both the RX and TX FIFOs. The only code running in the main thread is :
uint8_t data = 0x45; // 'E'
while(1)
{
HAL_UART_Transmit(&huart3, &data, 1);
}I handle the receives with my own huart->RxIsr, I do the following:
while(huart->Instance->ISR & USART_ISR_RXNE_RXFNE)
{
dataReg = (uint16_t) READ_REG(huart->Instance->RDR);
data = (uint8_t)(dataReg & (uint8_t)mask);
ringBuffer->add(data);
}When I attempt to send 1000 bytes from real term to my evaluation board, I do not receive all 1000 bytes. I get 488 or 232 bytes. When debugging, I do not see an overrun interrupt, so I don't see why I would be dropping packets. Even with full-duplex, can the continuous transmit interrupts cause the UART to miss bytes?