Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.

SD/MMC CardMode Communication Debugging

The SD/MMC cardmode driver accesses the hardware through a port (BSP). A new BSP developed according to MCU/MPU documentation or by example must be verified step-by-step until flawless operation is achieved:

  1. Initialization (1-bit). Initialization must succeed for a SD/MMC card in 1-bit mode.
  2. Initialization (4- or 8-bit). Initialization must succeed for a SD/MMC card in 4 or 8-bit mode.
  3. Read data. Data must be read from card, in both single- and multiple-block transactions.
  4. Write data. Data must be written to the card, in both single and multiple-block transactions, and subsequently verified (by reading the modified sectors and comparing to the intended contents).

The (1-bit) initialization process reveals that commands can be executed and responses are returned with the proper bits in the correct byte-order. Example responses for each step in the sequence are given in Figure 12-5 and Figure 12-6. The first command executed, GO_IDLE_STATE, never receives a response from the card. Only V2 SD cards respond to SEND_IF_COND, returning the check pattern sent to the card and the accepted voltage range. The OCR register, read with SD_SEND_OP_COND or SEND_OP_COND, assumes basically the same format for all card types. Finally, the CID (card ID) and CSD (card-specific data) registers are read—the only times ‘long’ (132-bit) responses are returned.

Multiple-bit initialization (often 4-bit) when performed on a SD card further confirms that the 8-byte SCR register and 64-byte SD status can be read and that the bus width can be set in the BSP. Though all current cards support 4-bit mode operation, the SD_BUS_WIDTHS field of the SCR is checked before configure the card bus width. Afterwards, the 64-byte SD status is read to see whether the bus width change was accomplished. When first debugging a port, it may be best to force multi-bit operation disabled by returning 1 from the BSP function FSDev_SD_Card_BSP_GetBusWidthMax().

    1. Simplified SD/MMC cardmode initialization and state transitions

    1. Command responses (SD card)

    1. Command responses (MMC card)

    1. SD SCR register

    1. SD status
  • No labels