
Hardware Description
MFC 2000 Multifunctional Peripheral Controller 2000
100723A
Conexant
15-17
2. The SASIF loads the oldest unused byte from the Tx FIFO to the TxShift Register and clears the TxShfEmpty
status bit. If this is the last byte held within the FIFO, then a TxBufIRQ and TxBufEmpty status bit will be set,
which indicates that the Tx FIFO is ready for next data to be loaded into it.
3. The SASIF transmits, and receives bits 7 through bit 0 (if the L2MSB bit is cleared) or bit 0 through bit 7 (if the
L2MSB bit is set).
4. By the end of the step 3 data shifting, if the Tx FIFO is empty then the ARM will receive the TxBufIRQ and
TxBuffEmpty status bit will be set,
5. If the TxBufEmpty is cleared at the end of the data shifting (meaning there was leftover data in the TxFIFO),
the SASIF will set go back to step 2. However, if the TxBufEmpty bit is set, the SASIF will set the TxShfEmpty
status bit and generate the TxShfIRQ.
6. The ARM gets the TxShfIRQ, which indicates the end of all data shifting. The ARM reads the SASData
Register as many times as it wrote to the SASData Register when filling up the Tx FIFO. After this, the next
batch of data can be written to the Tx FIFO by writing up to sixteen times to SASData. This clears the
TxBufEmpty bit and the TxShfEmpty bit. If no more data needs to be sent, the ARM clears the TxBufIrqEnb
and TxShfIrqEnb bit. If only transmit is desired, the ARM can ignore the data in the Rx FIFO.
15.4.2 SASIF AsyncMode Operations
AsyncMode Setup
1. Set the SASSCLKDivisor Register for proper transmission rate.
2. Set the L2MSB bit for proper shifting order.
3. Set the SASSCLKPol bit for proper SASSCLK polarity.
4. Set the DataLen bit for proper data length.
5. Choose whether to use the transmit fifo or the receive fifo. Either, both, or neither can be used.
6. Clear the TxBufIrqEnb bit, the TxShfIrqEnb, and the RxBufEnb bit for lower CPU interrupt overhead and lower
transfer rate, or set the TxBufIrqEnb bit, the TxShfIrqEnb, and the RxBufEnb bit for higher CPU interrupt
overhead and higher transfer rate.
7. Set the SASMode bit to select AsyncMode operations.
Note
: Steps 1 through 7 can be done in a setup-table load.
Asynchronous Transmitter – FIFO mode disabled
Case when the TxBufIRQ and the TxShfIRQ are enabled:
1. The CPU writes data to the SASData Register (TxBuffer Register). This data is written at that time to the
TxBuffer Register.
2. This data will automatically be transferred to the TxShift Register.
3. The SASIF automatically transmits the start bit.
4. The SASIF automatically clears the TxShfEmpty status bit in the SerCmd Register or the TxBufEmpty bit will
be cleared if the TxShfEmpty was already cleared.
5. The 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 TxBuffer Register contains data (which
will soon be transferred to the TxShift Register), or sets the TxBufEmpty and the TxShfEmpty bit if the
TxBuffer Register is empty. 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 a new byte of data can be written to the SASData Register. In the latter case, the TxShfIRQ will be
cleared and steps 2 through 6 will be repeated.