UART/IrDA Functional Description
12-89
UART Devices
12.9.3 Interrupts
The UART generates interrupts on the UART_nIRQ output pin. All interrupts
can be enabled/disabled by writing to the appropriate bit in the interrupt enable
register (IER). The interrupt status of the device can be checked at any time
by reading the interrupt identification register (IIR).
The UART and IrDA modes have different interrupts in the UART/IrDA module
and therefore different IER and IIR mappings according to the selected mode.
12.9.3.1
Interrupts in MODEM Mode
There are seven possible interrupts, prioritized to six different levels. When an
interrupt is generated, the interrupt identification register (IIR) indicates a
pending interrupt by bringing IIR[0] to logic 0, and it specifies the type of inter-
rupt through IIR[5 - 1]. Table 12–88 summarizes the interrupt control functions.
Table 12–88. Generic Interrupt Functions in Modem Mode
IIR[5 - 0]
Priority
Level
Interrupt
Type
Interrupt Source
Interrupt Reset Method
0 0 0 0 0 1
None
None
None
None
0 0 0 1 1 0
1
Receiver line sta-
tus
OE, FE, PE, or BI errors
occur in characters in the RX
FIFO
FE,PE,BI: All erroneous
characters are read form the
RX FIFO. OE: Read LSR
0 0 1 1 0 0
2
RX time-out
Stale data in RX FIFO
Read RHR
0 0 0 1 0 0
2
RHR interrupt
DRDY (data ready)
(FIFO disable)
RX FIFO above trigger level
(FIFO enable)
Read RHR until interrupt
condition disappears.
0 0 0 0 1 0
3
THR interrupt
TFE (THR empty)
(FIFO disable)
TX FIFO below trigger level
(FIFO enable)
Write to THR until interrupt
condition disappears.
0 0 0 0 0 0
4
Modem status
MSR1:0/ = 0
Read MSR
0 1 0 0 0 0
5
XOFF interrupt/
special character
interrupt
Receive XOFF
characters(s)/special
character
Receive XON character(s), if
XOFF interrupt/read of IIR, if
special character interrupt
1 0 0 0 0 0
6
CTS,RTS, DSR
RTS pin, CTS pin or DSR pin
change state from active
(low) to inactive (high).
Read IIR
Note:
Once LSR[7] (RX_FIFO_STS) is set on FIFO disable (FCR[0]=0), this bit bit cannot be cleared by reading LSR. First,
FCR[1] (RX_FIFO_CLERA) must be set to 1, then LSR[7] can be cleared.