Part Number: TL16C2550
Other Parts Discussed in Thread: TL16C550D, TL16C752D
Dear Technical Support Team,
While debugging the TL16C2550IPFB, we observed a phenomenon that appears to be inconsistent with the data sheet.
[Observed Phenomenon]
A. Undefined values are read from the IIR
When reading the IIR (Interrupt Identification Register) to check for interrupt causes, values such as “0xC3” and “0xC5”—
which cannot be interpreted as normal IIR values according to the data sheet—are output at a low frequency.
This tends to occur when the INT state change and the IIR read timing are close together.
We have since modified the process to read the IIR only after confirming that the INT for the target channel is active; we have not observed this phenomenon since making this change.
B. Inconsistency between Character Timeout Indication and Data Ready States
During receive interrupt processing, we observed the following conditions:
IIR = 0xCC (Character Timeout Indication)
LSR = 0x60 (Data Ready = 0)
RXRDY for the target channel = Low (Active)
We understand that Character Timeout Indication and RXRDY indicate the presence of received data in the RX FIFO.
On the other hand, LSR’s Data Ready = 0 indicates that the RX FIFO is empty; therefore, the states of these signals and registers appear to be inconsistent.
In our implementation, we read the RBR only when Data Ready = 1.
Therefore, when this phenomenon occurs, we are unable to read the received data, and the interrupt handling may not complete normally.
[Similar Cases Confirmed on the TI E2E Forum, etc.]
Although we could not find any publicly reported cases specifically related to the TL16C2550, cases that are believed to be related have been reported for the following similar UART products.
■TL16C550D
A case where IIR = 0xCC and LSR = 0x60, preventing the receive interrupt from being processed normally
■TL16C752D
A case where, even after reading the RX FIFO, the state remains IIR = 0xCC, LSR = 0x60, and INT = Active
Additionally, cases have been reported where “0x03” is read from the IIR, a value that is difficult to interpret as a normal interrupt state.
■TL16C752B
Errata (SLLZ049) indicates that if the timing of an IIR read operation conflicts with the setting of the THRE Interrupt Condition, the THRE Interrupt Condition may be
unintentionally cleared.
Based on this information, we recognize that some TI UARTs have known issues related to the timing of internal interrupt state updates and register access.
[Questions]
1. Regarding the TL16C2550IPFB, are there any cases, known issues, or usage precautions that are the same as or similar to the two phenomena described above?
2. Is it possible that this is caused by internal circuitry or interrupt control logic shared with previous products such as the TL16C752B?
3. Please advise us of any known workarounds, recommended register access procedures, access intervals, etc.
4. We are also planning to adopt the TL16C752D for another product. Please confirm whether there are any similar known defects or issues with the TL16C752D.
If necessary, we can provide the acquired register values, bus access waveforms, and INT and RXRDY waveforms.
Best Regards,
ttd