MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages

Overview

The MMCCARD driver provide card initialization/read/write/erase interface.

MMC CARD Operation

error log support

Not support yet

User configuable

Board dependency

Typical use case

~~~~~{.c}

/* Save host information.  

Data Structures

struct  mmc_card_t
 mmc card state More...
 

Enumerations

enum  _mmc_card_flag {
  kMMC_SupportHighSpeed26MHZFlag = (1U << 0U),
  kMMC_SupportHighSpeed52MHZFlag = (1U << 1U),
  kMMC_SupportHighSpeedDDR52MHZ180V300VFlag = (1 << 2U),
  kMMC_SupportHighSpeedDDR52MHZ120VFlag = (1 << 3U),
  kMMC_SupportHS200200MHZ180VFlag = (1 << 4U),
  kMMC_SupportHS200200MHZ120VFlag = (1 << 5U),
  kMMC_SupportHS400DDR200MHZ180VFlag = (1 << 6U),
  kMMC_SupportHS400DDR200MHZ120VFlag = (1 << 7U),
  kMMC_SupportHighCapacityFlag = (1U << 8U),
  kMMC_SupportAlternateBootFlag = (1U << 9U),
  kMMC_SupportDDRBootFlag = (1U << 10U),
  kMMC_SupportHighSpeedBootFlag = (1U << 11U),
  kMMC_SupportEnhanceHS400StrobeFlag = (1U << 12U)
}
 MMC card flags. More...
 

MMCCARD Function

status_t MMC_Init (mmc_card_t *card)
 Initializes the MMC card and host. More...
 
void MMC_Deinit (mmc_card_t *card)
 Deinitializes the card and host. More...
 
status_t MMC_CardInit (mmc_card_t *card)
 intialize the card. More...
 
void MMC_CardDeinit (mmc_card_t *card)
 Deinitializes the card. More...
 
status_t MMC_HostInit (mmc_card_t *card)
 initialize the host. More...
 
void MMC_HostDeinit (mmc_card_t *card)
 Deinitializes the host. More...
 
void MMC_HostReset (SDMMCHOST_CONFIG *host)
 reset the host. More...
 
void MMC_PowerOnCard (SDMMCHOST_TYPE *base, const sdmmchost_pwr_card_t *pwr)
 power on card. More...
 
void MMC_PowerOffCard (SDMMCHOST_TYPE *base, const sdmmchost_pwr_card_t *pwr)
 power off card. More...
 
bool MMC_CheckReadOnly (mmc_card_t *card)
 Checks if the card is read-only. More...
 
status_t MMC_ReadBlocks (mmc_card_t *card, uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)
 Reads data blocks from the card. More...
 
status_t MMC_WriteBlocks (mmc_card_t *card, const uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)
 Writes data blocks to the card. More...
 
status_t MMC_EraseGroups (mmc_card_t *card, uint32_t startGroup, uint32_t endGroup)
 Erases groups of the card. More...
 
status_t MMC_SelectPartition (mmc_card_t *card, mmc_access_partition_t partitionNumber)
 Selects the partition to access. More...
 
status_t MMC_SetBootConfig (mmc_card_t *card, const mmc_boot_config_t *config)
 Configures the boot activity of the card. More...
 
status_t MMC_StartBoot (mmc_card_t *card, const mmc_boot_config_t *mmcConfig, uint8_t *buffer, SDMMCHOST_BOOT_CONFIG *hostConfig)
 MMC card start boot. More...
 
status_t MMC_SetBootConfigWP (mmc_card_t *card, uint8_t wp)
 MMC card set boot configuration write protect. More...
 
status_t MMC_ReadBootData (mmc_card_t *card, uint8_t *buffer, SDMMCHOST_BOOT_CONFIG *hostConfig)
 MMC card continous read boot data. More...
 
status_t MMC_StopBoot (mmc_card_t *card, uint32_t bootMode)
 MMC card stop boot mode. More...
 
status_t MMC_SetBootPartitionWP (mmc_card_t *card, mmc_boot_partition_wp_t bootPartitionWP)
 MMC card set boot partition write protect. More...
 

Data Structure Documentation

struct mmc_card_t

Define the card structure including the necessary fields to identify and describe the card.

Data Fields

SDMMCHOST_CONFIG host
 Host information.
 
mmccard_usr_param_t usrParam
 user parameter
 
bool isHostReady
 Use this flag to indicate if need host re-init or not.
 
bool noInteralAlign
 use this flag to disable sdmmc align. More...
 
uint32_t busClock_Hz
 MMC bus clock united in Hz.
 
uint32_t relativeAddress
 Relative address of the card.
 
bool enablePreDefinedBlockCount
 Enable PRE-DEFINED block count when read/write.
 
uint32_t flags
 Capability flag in _mmc_card_flag.
 
uint32_t rawCid [4U]
 Raw CID content.
 
uint32_t rawCsd [4U]
 Raw CSD content.
 
uint32_t rawExtendedCsd [MMC_EXTENDED_CSD_BYTES/4U]
 Raw MMC Extended CSD content.
 
uint32_t ocr
 Raw OCR content.
 
mmc_cid_t cid
 CID.
 
mmc_csd_t csd
 CSD.
 
mmc_extended_csd_t extendedCsd
 Extended CSD.
 
uint32_t blockSize
 Card block size.
 
uint32_t userPartitionBlocks
 Card total block number in user partition.
 
uint32_t bootPartitionBlocks
 Boot partition size united as block size.
 
uint32_t eraseGroupBlocks
 Erase group size united as block size.
 
mmc_access_partition_t currentPartition
 Current access partition.
 
mmc_voltage_window_t hostVoltageWindowVCCQ
 application must set this value according to board specific
 
mmc_voltage_window_t hostVoltageWindowVCC
 application must set this value according to board specific
 
mmc_high_speed_timing_t busTiming
 indicate the current work timing mode
 
mmc_data_bus_width_t busWidth
 indicate the current work bus width
 

Field Documentation

bool mmc_card_t::noInteralAlign

If disable, sdmmc will not make sure the data buffer address is word align, otherwise all the transfer are align to low level driver

Enumeration Type Documentation

Enumerator
kMMC_SupportHighSpeed26MHZFlag 

Support high speed 26MHZ.

kMMC_SupportHighSpeed52MHZFlag 

Support high speed 52MHZ.

kMMC_SupportHighSpeedDDR52MHZ180V300VFlag 

ddr 52MHZ 1.8V or 3.0V

kMMC_SupportHighSpeedDDR52MHZ120VFlag 

DDR 52MHZ 1.2V.

kMMC_SupportHS200200MHZ180VFlag 

HS200 ,200MHZ,1.8V.

kMMC_SupportHS200200MHZ120VFlag 

HS200, 200MHZ, 1.2V.

kMMC_SupportHS400DDR200MHZ180VFlag 

HS400, DDR, 200MHZ,1.8V.

kMMC_SupportHS400DDR200MHZ120VFlag 

HS400, DDR, 200MHZ,1.2V.

kMMC_SupportHighCapacityFlag 

Support high capacity.

kMMC_SupportAlternateBootFlag 

Support alternate boot.

kMMC_SupportDDRBootFlag 

support DDR boot flag

kMMC_SupportHighSpeedBootFlag 

support high speed boot flag

kMMC_SupportEnhanceHS400StrobeFlag 

support enhance HS400 strobe

Function Documentation

status_t MMC_Init ( mmc_card_t card)
Parameters
cardCard descriptor.
Return values
kStatus_SDMMC_HostNotReadyhost is not ready.
kStatus_SDMMC_GoIdleFailedGo idle failed.
kStatus_SDMMC_SendOperationConditionFailedSend operation condition failed.
kStatus_SDMMC_AllSendCidFailedSend CID failed.
kStatus_SDMMC_SetRelativeAddressFailedSet relative address failed.
kStatus_SDMMC_SendCsdFailedSend CSD failed.
kStatus_SDMMC_CardNotSupportCard not support.
kStatus_SDMMC_SelectCardFailedSend SELECT_CARD command failed.
kStatus_SDMMC_SendExtendedCsdFailedSend EXT_CSD failed.
kStatus_SDMMC_SetBusWidthFailedSet bus width failed.
kStatus_SDMMC_SwitchHighSpeedFailedSwitch high speed failed.
kStatus_SDMMC_SetCardBlockSizeFailedSet card block size failed.
kStatus_SuccessOperate successfully.
void MMC_Deinit ( mmc_card_t card)
Parameters
cardCard descriptor.
status_t MMC_CardInit ( mmc_card_t card)
Parameters
cardCard descriptor.
Return values
kStatus_SDMMC_HostNotReadyhost is not ready.
kStatus_SDMMC_GoIdleFailedGo idle failed.
kStatus_SDMMC_SendOperationConditionFailedSend operation condition failed.
kStatus_SDMMC_AllSendCidFailedSend CID failed.
kStatus_SDMMC_SetRelativeAddressFailedSet relative address failed.
kStatus_SDMMC_SendCsdFailedSend CSD failed.
kStatus_SDMMC_CardNotSupportCard not support.
kStatus_SDMMC_SelectCardFailedSend SELECT_CARD command failed.
kStatus_SDMMC_SendExtendedCsdFailedSend EXT_CSD failed.
kStatus_SDMMC_SetBusWidthFailedSet bus width failed.
kStatus_SDMMC_SwitchHighSpeedFailedSwitch high speed failed.
kStatus_SDMMC_SetCardBlockSizeFailedSet card block size failed.
kStatus_SuccessOperate successfully.
void MMC_CardDeinit ( mmc_card_t card)
Parameters
cardCard descriptor.
status_t MMC_HostInit ( mmc_card_t card)

This function deinitializes the specific host.

Parameters
cardCard descriptor.
void MMC_HostDeinit ( mmc_card_t card)

This function deinitializes the host.

Parameters
cardCard descriptor.
void MMC_HostReset ( SDMMCHOST_CONFIG *  host)

This function reset the specific host.

Parameters
hosthost descriptor.
void MMC_PowerOnCard ( SDMMCHOST_TYPE *  base,
const sdmmchost_pwr_card_t pwr 
)

The power on operation depend on host or the user define power on function.

Parameters
basehost base address.
pwruser define power control configuration
void MMC_PowerOffCard ( SDMMCHOST_TYPE *  base,
const sdmmchost_pwr_card_t pwr 
)

The power off operation depend on host or the user define power on function.

Parameters
basehost base address.
pwruser define power control configuration
bool MMC_CheckReadOnly ( mmc_card_t card)
Parameters
cardCard descriptor.
Return values
trueCard is read only.
falseCard isn't read only.
status_t MMC_ReadBlocks ( mmc_card_t card,
uint8_t *  buffer,
uint32_t  startBlock,
uint32_t  blockCount 
)
Parameters
cardCard descriptor.
bufferThe buffer to save data.
startBlockThe start block index.
blockCountThe number of blocks to read.
Return values
kStatus_InvalidArgumentInvalid argument.
kStatus_SDMMC_CardNotSupportCard not support.
kStatus_SDMMC_SetBlockCountFailedSet block count failed.
kStatus_SDMMC_TransferFailedTransfer failed.
kStatus_SDMMC_StopTransmissionFailedStop transmission failed.
kStatus_SuccessOperate successfully.
status_t MMC_WriteBlocks ( mmc_card_t card,
const uint8_t *  buffer,
uint32_t  startBlock,
uint32_t  blockCount 
)
Parameters
cardCard descriptor.
bufferThe buffer to save data blocks.
startBlockStart block number to write.
blockCountBlock count.
Return values
kStatus_InvalidArgumentInvalid argument.
kStatus_SDMMC_NotSupportYetNot support now.
kStatus_SDMMC_SetBlockCountFailedSet block count failed.
kStatus_SDMMC_WaitWriteCompleteFailedSend status failed.
kStatus_SDMMC_TransferFailedTransfer failed.
kStatus_SDMMC_StopTransmissionFailedStop transmission failed.
kStatus_SuccessOperate successfully.
status_t MMC_EraseGroups ( mmc_card_t card,
uint32_t  startGroup,
uint32_t  endGroup 
)

Erase group is the smallest erase unit in MMC card. The erase range is [startGroup, endGroup].

Parameters
cardCard descriptor.
startGroupStart group number.
endGroupEnd group number.
Return values
kStatus_InvalidArgumentInvalid argument.
kStatus_SDMMC_WaitWriteCompleteFailedSend status failed.
kStatus_SDMMC_TransferFailedTransfer failed.
kStatus_SuccessOperate successfully.
status_t MMC_SelectPartition ( mmc_card_t card,
mmc_access_partition_t  partitionNumber 
)
Parameters
cardCard descriptor.
partitionNumberThe partition number.
Return values
kStatus_SDMMC_ConfigureExtendedCsdFailedConfigure EXT_CSD failed.
kStatus_SuccessOperate successfully.
status_t MMC_SetBootConfig ( mmc_card_t card,
const mmc_boot_config_t config 
)
Parameters
cardCard descriptor.
configBoot configuration structure.
Return values
kStatus_SDMMC_NotSupportYetNot support now.
kStatus_SDMMC_ConfigureExtendedCsdFailedConfigure EXT_CSD failed.
kStatus_SDMMC_ConfigureBootFailedConfigure boot failed.
kStatus_SuccessOperate successfully.
status_t MMC_StartBoot ( mmc_card_t card,
const mmc_boot_config_t mmcConfig,
uint8_t *  buffer,
SDMMCHOST_BOOT_CONFIG *  hostConfig 
)
Parameters
cardCard descriptor.
mmcConfigmmc Boot configuration structure.
bufferaddress to recieve data.
hostConfighost boot configurations.
Return values
kStatus_Failfail.
kStatus_SDMMC_TransferFailedtransfer fail.
kStatus_SDMMC_GoIdleFailedreset card fail.
kStatus_SuccessOperate successfully.
status_t MMC_SetBootConfigWP ( mmc_card_t card,
uint8_t  wp 
)
Parameters
cardCard descriptor.
wpwrite protect value.
status_t MMC_ReadBootData ( mmc_card_t card,
uint8_t *  buffer,
SDMMCHOST_BOOT_CONFIG *  hostConfig 
)
Parameters
cardCard descriptor.
bufferbuffer address.
hostConfighost boot configurations.
status_t MMC_StopBoot ( mmc_card_t card,
uint32_t  bootMode 
)
Parameters
cardCard descriptor.
bootModeboot mode.
status_t MMC_SetBootPartitionWP ( mmc_card_t card,
mmc_boot_partition_wp_t  bootPartitionWP 
)
Parameters
cardCard descriptor.
bootPartitionWPboot partition write protect value.