Functional Example of MMC/SD Communication
MOTOROLA
Multimedia Card/Secure Digital Host Controller
17-7
17.5.1.2 Voltage Validation
All cards can establish communication with the host using any operating voltage within the maximum
allowed voltage range specified in the MMC standard. However, the supported minimum and maximum
values for VDD are defined in the operation conditions register (OCR) and might not cover the whole
range. Cards that store the CID (Card Identification Number) and CSD (Card Specific Data) data in the
payload memory would be able to communicate this information only under data transfer VDD conditions.
That is, if the host and card have incompatible VDD ranges, the card will not be able to complete the
identification cycle or to send CSD data.
Therefore, special commands, SEND_OP_COND (CMD1 for MMC) and SD_SEND_OP_COND
(ACMD41 for SD), are designed to provide a mechanism to identify and reject cards that do not match the
VDD range desired by the host. The host sends the required VDD voltage window as the operand of this
command. Cards that cannot perform data transfers in the specified range must discard themselves from
further bus operations and enter the Inactive State. ACMD41 is an application-specific command;
therefore, APP_CMD (CMD55) always precedes ACMD41. The RCA to be used for CMD55 in idle state
is the card’s default RCA, which is 0x0000.
By omitting the voltage range in the command, the host can query each card and determine the common
voltage range before sending out-of-range cards into the Inactive State. This query should be used if the
host is able to select a common voltage range or if a notification to the application of unusable cards in the
stack is desired.
During the initialization procedure, the host is not allowed to change the operating voltage range. If there is
a real change in the operating conditions, the host must reset the card stack (sending CMD0 to all cards)
and restart the initialization procedure.
17.5.1.3 Card Registry
The identification process of the SD memory card starts at clock rate Fod, when the CMD line output
drivers are push-pull instead of open-drain. After the bus is activated, the host asks the cards to send their
valid operation conditions (APP_CMD, which is CMD55, with RCA = 0x0000 followed by ACMD41).
The response to ACMD41 is the operation condition register of the card. The same command is sent to all
new cards in the system. Incompatible cards are sent into Inactive State. The host then issues the command
ALL_SEND_CID (CMD2) to each card to get its unique card identification (CID) number. A card that is
unidentified (a card that is in Ready State) sends its CID number as the response. After the CID is sent by
the card, the card enters Identification State. Thereafter, the host issues SEND_RELATIVE_ADDR
(CMD3) to ask the card to publish a new relative card address (RCA), which is shorter than CID and
addresses the card in the future data transfer mode. Once the RCA is received, the card state changes to the
Stand-by State. At this point, if the host wants the card to have another RCA, it asks the card to publish a
new number by sending another SEND_RELATIVE_ADDR (CMD3) command to the card. The last
published RCA is the actual RCA of the card.
For each card in the system, the host repeats the identification process (the cycles with CMD2 and CMD3).
In the MMC, the host starts the card identification process in open-drain mode with the identification clock
rate Fod. The open-drain driver stages on the CMD line allow parallel card operation during card
identification. After the bus is activated, the host asks the cards to send their valid operation conditions
(CMD1). The response to CMD1 is the “wired or” operation on the condition restrictions of all cards in the
system. Incompatible cards are sent into Inactive State. The host then issues the broadcast command
ALL_SEND_CID (CMD2), asking all cards for their unique card identification (CID) number. All
unidentified cards (that is, those that are in Ready State) simultaneously begin sending their CID numbers
serially while bit-wise monitoring their outgoing bitstream. Cards with outgoing CID bits that do not
match the corresponding bits on the command line in any one of the bit periods, stops sending their CID
immediately and must wait for the next identification cycle. Because the CID is unique for each card, only
one card can successfully send its full CID to the host. This card then goes into Identification State.