Revision 1.0 MultiMediaCardRS-MultiMediaCard Product Manual
© 2004 SanDisk Corporation 4-6
051304
4.2.1 Data Read Format
When data is not being transmitted, the DAT bus line is high. A transmitted data block consists of a start bit low, followed by a continuous data stream. The data stream contains
the net payload data, and error correction bits if an off-card ECC is used. The data stream ends with an end bit high. The data transmission is synchronous to the clock signal
The payload for a block-oriented data transfer is preserved by a CRC checksum. The generator polynomial is standard CCITT format: x
16
+ x
12
+ x
5
+ 1.
Block Read
The basic unit of data transfer is a block whose maximum size is defined by READ_BL_LEN in the CSD. Smaller blocks with a starting and ending address contained
entirely within one physical block, as defined by READ_BL_LEN, may also be transmitted. A CRC appended to the end of each block ensures data transfer integrity.
CMD17 or READ_SINGLE_BLOCK starts a block read and returns the card to the Transfer State after a complete transfer. CMD18 or READ_MULTIPLE_BLOCK starts a transfer of
several consecutive blocks. Blocks will be continuously transferred until a stop command is issued.
If the host uses partial blocks with an accumulated length that is not block aligned, the card, at the beginning of the first misaligned block, will detect a block misalignment error,
set the ADDRESS_ERROR bit in the Status Register, abort transmission, and wait in the Data State for a stop command.
4.2.2 Data Write Format
The data transfer format is similar to the data read format. For block-oriented write data transfer, the CRC check bits are added to each data block. Prior to an operation, the
MultiMediaCardRS-MultiMediaCard performs a CRC check for each such received data block.
2
This mechanism prevents the erroneous writing of transferred data.
Block Write Block write or CMD24-27 means that one or more blocks of data are transferred from the
host to the card with a CRC appended to the end of each block by the host. If the CRC fails, the card will indicate the failure on the DAT line; the transferred data will be
discarded and not written and all further transmitted blocks in multiple block write mode will be ignored.
If the host uses partial blocks with an accumulated length that is not block aligned, the card, at the beginning of the first misaligned block, will detect a block misalignment error,
set the ADDRESS_ERROR bit in the Status Register, abort programming, and wait in the Data State for a stop command.
The write operation will also be aborted if the host tries to write over a write-protected area. In this case, however, the card will set the WP_VIOLATION bit.
After receiving a block of data and completing the CRC check, the card will begin programming and hold the DAT line low if its write buffer is full and unable to accept new
data from a new WRITE_BLOCK command. The host may poll the status of the card with a SEND_STATUS command at any time, and the card will respond with its status. The
status bit READY_FOR_DATA indicates whether the card can accept new data or whether the write process is still in progress. The host may deselect the card by issuing CMD7 to
select a different card, which will place the card in the Disconnect State and release the
2
The polynomial is the same one used for a read operation.
Revision 1.0 MultiMediaCardRS-MultiMediaCard Product Manual
© 2004 SanDisk Corporation 4-7
051304
DAT line without interrupting the write operation. When reselecting the card, it will reactivate busy indication by pulling DAT to low if programming is still in progress and
write buffer is unavailable.
4.2.3 CSD Programming