Rainbow Electronics AT89C5132 User Manual
Page 92
92
AT8xC5132
4173A–8051–08/02
Figure 66. Data Controller Configuration Flows
Data Transmitter
Configuration
For transmitting data to the card, user must first configure the data controller in trans-
mission mode by setting the DATDIR bit in MMCON1 register.
Figure 67 summarizes the data stream transmission flows in both polling and interrupt
modes while Figure 68 summarizes the data block transmission flows in both polling
and interrupt modes, these flows assume that block length is greater than 16 data.
Data Loading
Data is loaded in the FIFO by writing to MMDAT register. Number of data loaded may
vary from 1 to 16 Bytes. Then if necessary (more than 16 Bytes to send) user must wait
that one FIFO becomes empty (F1EI or F2EI set) before loading 8 new data.
Data Transmission
Transmission is enabled by setting and clearing DATEN bit in MMCON1 register.
Data is transmitted immediately if the response has already been received, or is delayed
after the response reception if its status is correct. In both cases transmission is delayed
if a card sends a busy state on the data line until the end of this busy condition.
According to the MMC specification, the data transfer from the host to the card may not
start sooner than 2 MMC clock periods after the card response was received (formally
N
WR
parameter). To address all card types, this delay can be programmed using
DATD1:0 Bits in MMCON2 register from 2 MMC clock periods when DATD1:0 Bits are
cleared to 8 MMC clock periods when DATD2:0 Bits are set, by step of 2 MMC clock
periods.
End of Transmission
The end of data frame (block or stream) transmission is signalled by the EOFI flag in
MMINT register. This flag may generate an MMC interrupt request as detailed in Section
"Interrupt", page 97.
In data stream mode, EOFI flag is set, after reception of the End bit. This assumes user
has previously sent the STOP command to the card, which is the only way to stop
stream transfer.
In data block mode, EOFI flag is set, after reception of the CRC status token (see
Figure 55). Two other flags in MMSTA register: DATFS and CRC16S report a status on
the frame sent. DATFS indicates if the CRC status token format is correct or not, and
CRC16S indicates if the card has found the CRC16 of the block correct or not.
Busy Status
As shown in Figure 55 the card uses a busy token during a block write operation. This
busy status is reported by the CBUSY flag in MMSTA register and by the MCBI flag in
MMINT which is set every time CBUSY toggles, i.e. when the card enters and exits its
busy state. This flag may generate an MMC interrupt request as detailed in Section
"Interrupt", page 97.
Data Single Block
Configuration
Data Stream
Configuration
Configure Format
DFMT = 0
Data Multi-block
Configuration
Configure Format
DFMT = 1
MBLOCK = 1
BLEN3:0 = XXXXb
Configure Format
DFMT = 1
MBLOCK = 0
BLEN3:0 = XXXXb