Specifications

©Copyright 2001-2013 SD Group (Panasonic, SanDisk, Toshiba) and SD Card Association
Physical Layer Simplified Specification Version 4.10
157
In the case of a data retrieval error, the card will not transmit any data. Instead, a special data error
token will be sent to the host. Figure 7-4 shows a data read operation that terminated with an error
token rather than a data block.
command
DataIn
DataOut
from
host
to card
data error token
from card to host
from
card
to host
data errorresponse
command
Next
Command
Figure 7-4: Read Operation - Data Error
In the case of a multiple block read operation every transferred block has its suffix of 16-bit CRC.
Stop transmission command (CMD12) will actually stop the data transfer operation (the same as in SD
Memory Card operation mode).
command
DataIn
DataOut
from
host
to card
data from card
to host
from
card
to host
data block
response
command
Stop Trans-
mission
Command
CRC
data block
CRC
from
card
to host
response
Figure 7-5: Multiple Block Read Operation
7.2.4 Data Write
The SPI mode supports single block and multiple block write commands. Upon reception of a valid write
command (CMD24 or CMD25 in the SD Memory Card protocol), the card will respond with a response
token and will wait for a data block to be sent from the host. CRC suffix, block length and start address
restrictions are (with the exception of the CSD parameter WRITE_BL_PARTIAL controlling the partial
block write option and WRITE_BL_LEN) identical to the read operation (Refer to Figure 7-6).
data_response
command
command
DataIn
DataOut
from
host
to card
new command
from host
data from
host
to card
from
card
to host
data block
busy
Data
response and
busy from
card
response
Start
Block
Token
Figure 7-6: Single Block Write Operation
Every data block has a prefix of 'Start Block' token (one byte).
After a data block has been received, the card will respond with a data-response token. If the data block
has been received without errors, it will be programmed. As long as the card is busy programming, a
continuous stream of busy tokens will be sent to the host (effectively holding the DataOut line low).
Once the programming operation is completed, the host should check the results of the programming
using the SEND_STATUS command (CMD13). Some errors (e.g. address out of range, write protect
violation etc.) are detected during programming only. The only validation check performed on the data
block, and communicated to the host via the data-response token, is the CRC and general Write Error
indication.