Public Version
MMC/SD/SDIO Use Cases and Tips
www.ti.com
Another important parameter read from CSD register is MMC system specification version. If this
parameter points to a value greater than or equal to 4, the MMC card is capable of a speed up to 52 MHz
and a bus width up to 8 (1, 4 or 8 are the possible options). To enable these two extra features, MMCHS
controller must issue a CMD6 command with specific argument.
A CMD6 command is issued in the data transfer mode after MMC card is selected. MMC card selection
consists of sending CMD7 command with MMC card's address in command argument.
shows the set of register impacted by CMD7 issue action.
Table 24-24. Sending CMD7
Register Name
Register Address
Value
Value Description
MMCHS1.
0x4809C02C
0x00000000
MMC bus is in push-pull mode.
MMCHS1.
0x4809C134
0x100f0001
Enables CERR, CIE, CCRC, CC, CTO and CEB
events to occur.
MMCHS1.
0x4809C138
0x100f0001
Enables CERR, CIE, CCRC, CC, CTO and CEB
interrupts to rise.
MMCHS1.
0x4809C10C
0x071a0000
Sends CMD7 whose opcode is 7, response type is
48 bits with CICE and CCCE enabled.
MMCHS1.
0x4809C108
0x00010000
register carries MMC card's address.
We choose to assign address 1 any other 16 bit
wide value is valid.
After a CMD7 transfer is complete, the MMC card is ready to receive a CMD6 command. CMD6 command
is used to write a byte in MMC card extended CSD register (ext_csd). It is an IO access function. There
are two write actions, the first one enables a specific data bus width in the card. For our use case we used
data bus width 4. The second one enables high speed feature in the card.
24.6.1.3.4.1.1 Setting Data Bus Width to 4
shows the set of registers impacted by issuing CMD6.
Table 24-25. Setting Data Bus Width With CMD6
Register Name
Register Address
Value
Value Description
MMCHS1.
0x4809C02C
0x00000000
MMC bus is in push-pull mode.
MMCHS1.
0x4809C134
0x100f0001
Enables CERR, CIE, CCRC, CC, CTO and CEB
events to occur.
MMCHS1.
0x4809C138
0x100f0001
Enables CERR, CIE, CCRC, CC, CTO and CEB
interrupts to rise.
MMCHS1.
0x4809C10C
0x061b0000
Sends CMD6 whose opcode is 6, response type is
48 bits with busy, with CICE and CCCE enabled.
MMCHS1.
0x4809C108
0x03b70100
(3 << 24) | (byte_address << 16) | (byte_value << 8).
byte_address is the byte address in ext_csd register.
After issuing CMD6 completes successfully and MMC card leaves busy state, MMCHS controller should
change its data bus width to 4. This is done by changing MMCHS1.
configuration value.
Table 24-26. MMCHS_HCTL Value
Register Name
Register Address
Value
Value Description
MMCHS1.
0x4809C128
0x00000002
MMCHS controller's data bus width is set to 4.
24.6.1.3.4.1.2 Enable High-Speed Feature
shows the set of registers impacted by issuing CMD6 issuing.
3420
MMC/SD/SDIO Card Interface
SWPU177N – December 2009 – Revised November 2010
Copyright © 2009–2010, Texas Instruments Incorporated