Gentlemen,
I'm working on this project on TM4C1294NCPDT. There is a lot of serial communication involved among 6 uarts. They have all been working well until now.
Suddenly one of the boards became slow. Checking every routine, I found that the code is slowing down on UARTCharPut, specifically while waiting for the output buffer to have room:
while(HWREG(ui32Base + UART_O_FR) & UART_FR_TXFF)
This UART is configured at 921600, and it has been working fine. The exact same code runs well on other boards. I'm not asking where to blame on the Tiva MCU, but rather asking for help to better understand this service on the hardware level. What exactly makes the UART not be available?
I do expect that the UART speed, at 921600, is slower than the system clock, and after a while new bytes that come in via software would have to wait until the uart clock actually ticks all bits out of the port... but is there any "successful transmission verification"? I know the uart engine doesn't even care if the other end of the cable is connected to a receiver or not, but is there something that can cause an abnormal delay on the transmission on the HW level? Could a bad RS422 driver on that line cause such behaviour?
Thanks for your inputs in advance!