Just fixed a bug in my custom LPUART driver, which was introduced only because there is a false statement in the RT1050 reference manual (rev. 2, 11/2018). On page 2714, it states (emphasis added):
- RXWATER -- Receive Watermark
When the number of datawords in the receive FIFO/buffer is greater than the value in this register field,
an interrupt or a DMA request is generated. For proper operation, the value in RXWATER must be set to
be less than the receive FIFO/buffer size as indicated by FIFO[RXFIFOSIZE] and FIFO[RXFE] and must
be greater than 0.
The last part of that statement is simply false. If RXWATER is greater than zero (say, N), then my LPUART ISR will not trigger until N+1 characters have been received. Per the manual, I had set RXWATER to 1; this manifested as a bug of the FIFO always retaining the last character received, and only delivering prior characters to my RX stream buffer. I set RXWATER back to zero, and now the driver does exactly what I expect it to, i.e. generate an interrupt on the first character received. I certainly consider this "proper operation".
The underline/bold text above should be removed from the documentation.