MultiMediaCard
TM
43
Sep.22.2005
Revision 0.3
All data communication in the Data Transfer Mode is point-to point between the host and the selected card (using
addressed commands). All addressed commands get acknowledged by a response on the CMD line.
The relationship between the various data transfer modes is summarized below (see Figure 6-2):
All data read commands can be aborted any time by the stop command (CMD12). The data transfer will terminate and
the card will return to the
Transfer State.
The read commands are: block read (CMD17), multiple block read (CMD18)
and send write protect (CMD30).
All data write commands can be aborted any time by the stop command (CMD12). The write commands must be
stopped prior to deselecting the card by CMD7. The write commands are: block write (CMD24 and CMD25), write CID
(CMD26), and write CSD (CMD27).
As soon as the data transfer is completed, the card will exit the data write state and move either to the
Programming
State
(transfer is successful) or
Transfer State
(transfer failed).
If a block write operation is stopped and the block length and CRC of the last block are valid, the data will be pro
grammed.
The card may provide buffering for stream and block write. This means that the next block can be sent to the card while
the previous is being programmed.
If all write buffers are full, and as long as the card is in
Programming State
(see MultiMediaCard state diagram
Figure -2), the DAT0 line will be kept low.
There is no buffering option for write CSD, write CID, write protection and erase. This means that while the card is busy
servicing any one of these commands, no other data transfer commands will be accepted. DAT0 line will be kept low as
long as the card is busy and in the
Programming State
.
Parameter set commands are
not
allowed while card is programming.
Parameter set commands are: set block length (CMD16), and erase group selection (CMD35-36).
Read commands are
not
allowed while card is programming.
Moving another card from
Stand-by
to
Transfer State
(using CMD7) will not terminate a programming operation. The
card will switch to the
Disconnect State
and will release the DAT0 line.
A card can be reselected while in the
Disconnect State
, using CMD7. In this case the card will move to the
Program
ming State
and reactivate the busy indication.
Resetting a card (using CMD0 or CMD15) will terminate any pending or active programming operation. This may
destroy the data contents on the card. It is up to the host’s responsibility to prevent this.
Prior to executing the bus testing procedure (CMD19, CMD14), it is recommended to set up the clock frequency used
for data transfer. This way the bus test gives a true result, which might not be the case if the bus testing procedure is
performed with lower clock frequency than the data transfer frequency.
In the following format definitions, all upper case flags and parameters are defined in the CSD (Chapter 5.5.3), and the
other status flags in the Card Status (Chapter 6.9).