
MFC2000 Multifunctional Peripheral Controller 2000
Hardware Description
15-18
Conexant
100723A
Asynchronous Transmitter – FIFO mode disabled
Case when the TxBufIRQ and the TxShfIRQ are enabled:
1. The CPU writes up to 16 bytes in a row of data to the SASData Register (TxBuffer Register). This data will be
written to the most current empty locations within the transmit fifo.
2. Upon first writing to the transmit fifo, the data will automatically be transferred to the TxShift Register if the
TxShift Register is currently empty.
3. The SASIF automatically transmits the start bit.
4. The SASIF automatically clears the TxShfEmpty status bit in the SerCmd Register.
5. SASIF automatically sends bits 0 through bit 6 (if 7 bit data is selected) or bit 7 (if 8 bit data is selected).
6. The SASIF transmits the stop bit, sets the TxBufEmpty bit only if the Tx FIFO is out of data (or is transfering
its last byte to the TxShift Register), or sets the TxBufEmpty and the TxShfEmpty bit if the Tx FIFO is empty
and has no data to give to the TxShift Register. If the TxBufEmpty status bit is set and the TxBufEnb is set,
the the ARM will receive a TxBufIRQ. If the TxShfEmpty status bit is set and the TxShfEnb is set, the the
ARM will receive a TxShfIRQ.
7. Upon receiving these interrupts, the TxShfEnb or TxBufEnb can be cleared if no more data is wished to be
sent, or steps 1 through 6 can be repeated.
Asynchronous Receiver – FIFO mode disabled
1. The receiver is in idle state (SASRXD high) when the SASIF receiver is waiting for falling a edge of the
SASRXD (start bit)
2. The start bit activates the SASIF receiver.
3. After receiving 7 or 8 data bits, SASIF receiver looks for stop bit.
4. After receiving the stop bit, the SASIF receiver will set the RxBufFull bit, and will generate a RxBufIRQ if the
RxBufEnb interrupt enable bit is set.
5. This serially received data is automatically transferred to the RxBuffer Register.
6. An ARM Read of the SASData Register will retreive the data from the Rx Buffer Register and will clear the
RxBufFull status bit and the RxBufIRQ.
Asynchronous Receiver – FIFO mode enabled
1. The receiver is in idle state (SASRXD high) when the SASIF receiver is waiting for falling a edge of the
SASRXD (start bit)
2. The start bit activates the SASIF receiver.
3. After receiving 7 or 8 data bits, SASIF receiver looks for stop bit.
4. After receiving the stop bit, the SASIF receiver will set the RxBufFull bit, and will generate a RxBufIRQ if the
RxBufEnb interrupt enable bit is set.
5. This serially received data is automatically transferred to the current open location in the Rx FIFO. If the
addition of this data makes the Rx FIFO full, then the RxBufIRQ will be activated (if the RxBufEnb is set).
When an interrupt is received, 16 bytes have been stored in the Rx FIFO.
6. An ARM Read of the Rx FIFO Register (SASData Register) will clear the RxBufFull status bit and the
RxBufIRQ, however it is advised that 16 consecutives reads take place at this time to fully empty out the Rx
FIFO.
7. In the case that less than 16 bytes reside in the Rx FIFO but no more will be sent, if the RxTimerEnb is set,
then after the Rx Timer times out, then a RxTimeoutIRQ will be sent to the ARM.
Note
: Each mention in the above descritions of RxTimeoutIRQ, RxBufIRQ, TxShfEmpty, and
TxBufEmpty are actually all received by the ARM as a single interrupt: SERIRQ. In order to
figure out which interrupt was received, the SASIrqStatus Register must be read, and then the
appropriate action be taken.