English
Language : 

K60P100M100SF2RM Datasheet, PDF (1645/1809 Pages) Freescale Semiconductor, Inc – K60 Sub-Family Reference Manual
52.6.2.3 Voltage validation
Chapter 52 Secured digital host controller (SDHC)
All cards should be able to establish communication with the host using any operation
voltage in the maximum allowed voltage range specified in the card specification.
However, the supported minimum and maximum values for VDD are defined in the
Operation Conditions Register (OCR) and may not cover the whole range. Cards that
store the CID and CSD data in the preload memory are only able to communicate this
information under data transfer VDD conditions. This means if the host and card have
non-common VDD ranges, the card will not be able to complete the identification cycle,
nor will it be able to send CSD data.
Therefore, a special command Send_Op_Cont (CMD1 for MMC), SD_Send_Op_Cont
(ACMD41 for SD Memory) and IO_Send_Op_Cont (CMD5 for SD I/O) is used. For a
CE-ATA card, the process is the same as that of an MMC card. The voltage validation
procedure is designed to provide a mechanism to identify and reject cards which do not
match the VDD range(s) desired by the host. This is accomplished by the host sending the
desired VDD voltage window as the operand of this command. Cards that can't perform
the data transfer in the specified range must discard themselves from further bus
operations and go into the Inactive State. 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 shall be sent to the system when a non-
usable card in the stack is detected.
The following steps show how to perform voltage validation when a card is inserted:
voltage_validation(voltage_range_arguement)
{
label the card as UNKNOWN;
send_command(IO_SEND_OP_COND, 0x0, <other parameters are omitted>); // CMD5, check SDIO
operation voltage, command argument is zero
if (RESP_TIMEOUT != wait_for_response(IO_SEND_OP_COND)) { // SDIO command is accepted
if (0 < number of IO functions) {
label the card as SDIO;
IORDY = 0;
while (!(IORDY in IO OCR response)) { // set voltage range for each IO function
send_command(IO_SEND_OP_COND, <voltage range>, <other parameter>);
wait_for_response(IO_SEND_OP_COND);
} // end of while ...
} // end of if (0 < ...
if (memory part is present inside SDIO card) Label the card as SDCombo; // this is an
SD-Combo card
} // end of if (RESP_TIMEOUT ...
if (the card is labelled as SDIO card) return; // card type is identified and voltage range
is
set, so exit the function;
send_command(APP_CMD, 0x0, <other parameters are omitted>); // CMD55, Application specific
CMD
prefix
if (no error calling wait_for_response(APP_CMD, <...>) { // CMD55 is accepted
send_command(SD_APP_OP_COND, <voltage range>, <...>); // ACMD41, to set voltage range
for memory part or SD card
wait_for_response(SD_APP_OP_COND); // voltage range is set
if (card type is UNKNOWN) label the card as SD;
K60 Sub-Family Reference Manual, Rev. 6, Nov 2011
Freescale Semiconductor, Inc.
1645