I've got a strange (to me) issue with UART flow control on LM4F120XL (on Stallaris LaunchPad, using CCS 5.3).
For testing purpouse I use the UART1 both with FIFO enabled and disabled. When FIFO is enabled I use hardware flow control, when FIFO is disabled I'm trying to use the RX interrupt to perform software flow control (I assert and deassert RTS by code insider the interrupt handling routine).
The thing is the I would like to test various RTS behaviours:
1) RTS off after 2, 4, 8, 12, 14 characters when FIFO is enabled
2) RTS off after every char when FIFO is disabled
But what I see is that when FIFO is enabled (with HW flow control enabled) everything works fine. When I disable FIFO (HW flow control disabled), I continue to see RTS behaves exactly as FIFO was ON. This is very strange to me since I verified that UARTLCRH.FEN and UARTCTL.RTSEN are both 0. I'm also sure that RTS is software handeld, because if I comment the RTS assert/deassert lines inside the UARTIntHandler1 routine RTS stays still. This seems to suggest that the RX interrupt is generated accordingly to FIFO trigger level also if FIFO is disabled while I expect that when FIFO is disabled it will work as a one byte register. Could this be possible?
Maybe I've misinterpreted the UART functional description?
Thanks,
↧
Stellaris LaunchPad - UART flow control with and without FIFO
↧