UART/IrDA Functional Description
12-100
12.9.13
Store and Controlled Transmission
In a store and controlled transmission (SCT), the host (MPU or DSP) first starts
writing data into the TX FIFO. Then, after it writes a part of a frame (for a bigger
frame) or a whole frame (a small frame, that is, supervisory frame), it writes
a 1 to ACREG[2] (deferred TX start) to start transmission. SCT is enabled
when MDR1[5] = 1. This method of transmission is different from the normal
mode, where transmission of data starts immediately after data is written to the
TX FIFO. SCT is useful to send short frames without TX underrun.
12.9.14
Underrun During Transmission
Underrun in transmission occurs when the TX FIFO becomes empty before
the end of the frame is transmitted. When underrun occurs, the device closes
the frame with end-flags but attaches an incorrect CRC value. The receiving
device detects a CRC error and discards the frame; it can then ask for a
retransmission. Underrun also causes an internal flag to be set which disables
further transmission. Before the next frame can be transmitted the system
(host) must:
-
Reset the TX FIFO.
-
Read the RESUME register—this clears the internal flag.
This functionality can be disabled or compensated for by the extension of the
stop bit in transmission, in case the TX FIFO is empty.
12.9.15
Overrun During Receive
Overrun occurs during receive if the RX state machine tries to write data into
the RX FIFO when it is already full. When overrun occurs, the device interrupts
the host (MPU or DSP) with IIR[3] and discards the remaining portion of the
frame. Overrun also causes an internal flag to be set, which disables further
reception. Before the next frame can be received the system (host) must:
-
Reset the RX FIFO.
-
Read the resume register—this clears the internal flag.
12.9.16
Status FIFO
In SIR mode, a status FIFO is used to record the received frame status. When
a complete frame is received, the length of the frame and the error bits associ-
ated with the frame are written into the status FIFO.
The frame length and error status can be read by reading SFREGL/H and
SFLSR. Reading the SFLSR causes the read pointer to be incremented. The
status FIFO is eight entries deep and therefore can hold the status of eight
frames.