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

Overview

Data Structures

struct  sdcard_usr_param_t
 card user parameter, user can define the parameter according the board, card capability More...
 
struct  sd_card_t
 SD card state. More...
 

Enumerations

enum  _sd_card_flag {
  kSD_SupportHighCapacityFlag = (1U << 1U),
  kSD_Support4BitWidthFlag = (1U << 2U),
  kSD_SupportSdhcFlag = (1U << 3U),
  kSD_SupportSdxcFlag = (1U << 4U),
  kSD_SupportVoltage180v = (1U << 5U),
  kSD_SupportSetBlockCountCmd = (1U << 6U),
  kSD_SupportSpeedClassControlCmd = (1U << 7U)
}
 SD card flags. More...
 

SDCARD Function

status_t SD_Init (sd_card_t *card)
 Initializes the card on a specific host controller. More...
 
void SD_Deinit (sd_card_t *card)
 Deinitializes the card. More...
 
status_t SD_CardInit (sd_card_t *card)
 Initializes the card. More...
 
void SD_CardDeinit (sd_card_t *card)
 Deinitializes the card. More...
 
status_t SD_HostInit (sd_card_t *card)
 initialize the host. More...
 
void SD_HostDeinit (sd_card_t *card)
 Deinitializes the host. More...
 
void SD_HostReset (SDMMCHOST_CONFIG *host)
 reset the host. More...
 
void SD_PowerOnCard (SDMMCHOST_TYPE *base, const sdmmchost_pwr_card_t *pwr)
 power on card. More...
 
void SD_PowerOffCard (SDMMCHOST_TYPE *base, const sdmmchost_pwr_card_t *pwr)
 power on card. More...
 
status_t SD_WaitCardDetectStatus (SDMMCHOST_TYPE *hostBase, const sdmmchost_detect_card_t *cd, bool waitCardStatus)
 sd wait card detect function. More...
 
bool SD_IsCardPresent (sd_card_t *card)
 sd card present check function. More...
 
bool SD_CheckReadOnly (sd_card_t *card)
 Checks whether the card is write-protected. More...
 
status_t SD_ReadBlocks (sd_card_t *card, uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)
 Reads blocks from the specific card. More...
 
status_t SD_WriteBlocks (sd_card_t *card, const uint8_t *buffer, uint32_t startBlock, uint32_t blockCount)
 Writes blocks of data to the specific card. More...
 
status_t SD_EraseBlocks (sd_card_t *card, uint32_t startBlock, uint32_t blockCount)
 Erases blocks of the specific card. More...
 

Data Structure Documentation

struct sdcard_usr_param_t

Data Fields

const sdmmchost_detect_card_tcd
 card detect type
 
const sdmmchost_pwr_card_tpwr
 power control configuration
 
struct sd_card_t

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

Data Fields

SDMMCHOST_CONFIG host
 Host information.
 
sdcard_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
 SD bus clock frequency united in Hz.
 
uint32_t relativeAddress
 Relative address of the card.
 
uint32_t version
 Card version.
 
uint32_t flags
 Flags in _sd_card_flag.
 
uint32_t rawCid [4U]
 Raw CID content.
 
uint32_t rawCsd [4U]
 Raw CSD content.
 
uint32_t rawScr [2U]
 Raw CSD content.
 
uint32_t ocr
 Raw OCR content.
 
sd_cid_t cid
 CID.
 
sd_csd_t csd
 CSD.
 
sd_scr_t scr
 SCR.
 
uint32_t blockCount
 Card total block number.
 
uint32_t blockSize
 Card block size.
 
sd_timing_mode_t currentTiming
 current timing mode
 
sd_driver_strength_t driverStrength
 driver strength
 
sd_max_current_t maxCurrent
 card current limit
 
sdmmc_operation_voltage_t operationVoltage
 card operation voltage
 

Field Documentation

bool sd_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
kSD_SupportHighCapacityFlag 

Support high capacity.

kSD_Support4BitWidthFlag 

Support 4-bit data width.

kSD_SupportSdhcFlag 

Card is SDHC.

kSD_SupportSdxcFlag 

Card is SDXC.

kSD_SupportVoltage180v 

card support 1.8v voltage

kSD_SupportSetBlockCountCmd 

card support cmd23 flag

kSD_SupportSpeedClassControlCmd 

card support speed class control flag

Function Documentation

status_t SD_Init ( sd_card_t card)

This function initializes the card on a specific host controller, it is consist of host init, card detect, card init function, however user can ignore this high level function, instead of use the low level function, such as SD_CardInit, SD_HostInit, SD_CardDetect.

Parameters
cardCard descriptor.
Return values
kStatus_SDMMC_HostNotReadyhost is not ready.
kStatus_SDMMC_GoIdleFailedGo idle failed.
kStatus_SDMMC_NotSupportYetCard not support.
kStatus_SDMMC_SendOperationConditionFailedSend operation condition failed.
kStatus_SDMMC_AllSendCidFailedSend CID failed.
kStatus_SDMMC_SendRelativeAddressFailedSend relative address failed.
kStatus_SDMMC_SendCsdFailedSend CSD failed.
kStatus_SDMMC_SelectCardFailedSend SELECT_CARD command failed.
kStatus_SDMMC_SendScrFailedSend SCR failed.
kStatus_SDMMC_SetBusWidthFailedSet bus width failed.
kStatus_SDMMC_SwitchHighSpeedFailedSwitch high speed failed.
kStatus_SDMMC_SetCardBlockSizeFailedSet card block size failed.
kStatus_SuccessOperate successfully.
void SD_Deinit ( sd_card_t card)
Parameters
cardCard descriptor.
status_t SD_CardInit ( sd_card_t card)

This function initializes the card only, make sure the host is ready when call this function, otherwise it will return kStatus_SDMMC_HostNotReady.

Parameters
cardCard descriptor.
Return values
kStatus_SDMMC_HostNotReadyhost is not ready.
kStatus_SDMMC_GoIdleFailedGo idle failed.
kStatus_SDMMC_NotSupportYetCard not support.
kStatus_SDMMC_SendOperationConditionFailedSend operation condition failed.
kStatus_SDMMC_AllSendCidFailedSend CID failed.
kStatus_SDMMC_SendRelativeAddressFailedSend relative address failed.
kStatus_SDMMC_SendCsdFailedSend CSD failed.
kStatus_SDMMC_SelectCardFailedSend SELECT_CARD command failed.
kStatus_SDMMC_SendScrFailedSend SCR failed.
kStatus_SDMMC_SetBusWidthFailedSet bus width failed.
kStatus_SDMMC_SwitchHighSpeedFailedSwitch high speed failed.
kStatus_SDMMC_SetCardBlockSizeFailedSet card block size failed.
kStatus_SuccessOperate successfully.
void SD_CardDeinit ( sd_card_t card)

This function deinitializes the specific card.

Parameters
cardCard descriptor.
status_t SD_HostInit ( sd_card_t card)

This function deinitializes the specific host.

Parameters
cardCard descriptor.
void SD_HostDeinit ( sd_card_t card)

This function deinitializes the host.

Parameters
cardCard descriptor.
void SD_HostReset ( SDMMCHOST_CONFIG *  host)

This function reset the specific host.

Parameters
hosthost descriptor.
void SD_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 SD_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
status_t SD_WaitCardDetectStatus ( SDMMCHOST_TYPE *  hostBase,
const sdmmchost_detect_card_t cd,
bool  waitCardStatus 
)

Detect card through GPIO, CD, DATA3.

Parameters
cardcard descriptor.
carddetect configuration
waitCardStatuswait card detect status
bool SD_IsCardPresent ( sd_card_t card)
Parameters
cardcard descriptor.
bool SD_CheckReadOnly ( sd_card_t card)

This function checks if the card is write-protected via the CSD register.

Parameters
cardThe specific card.
Return values
trueCard is read only.
falseCard isn't read only.
status_t SD_ReadBlocks ( sd_card_t card,
uint8_t *  buffer,
uint32_t  startBlock,
uint32_t  blockCount 
)

This function reads blocks from the specific card with default block size defined by the SDHC_CARD_DEFAULT_BLOCK_SIZE.

Parameters
cardCard descriptor.
bufferThe buffer to save the data read from card.
startBlockThe start block index.
blockCountThe number of blocks to read.
Return values
kStatus_InvalidArgumentInvalid argument.
kStatus_SDMMC_CardNotSupportCard not support.
kStatus_SDMMC_NotSupportYetNot support now.
kStatus_SDMMC_WaitWriteCompleteFailedSend status failed.
kStatus_SDMMC_TransferFailedTransfer failed.
kStatus_SDMMC_StopTransmissionFailedStop transmission failed.
kStatus_SuccessOperate successfully.
status_t SD_WriteBlocks ( sd_card_t card,
const uint8_t *  buffer,
uint32_t  startBlock,
uint32_t  blockCount 
)

This function writes blocks to the specific card with default block size 512 bytes.

Parameters
cardCard descriptor.
bufferThe buffer holding the data to be written to the card.
startBlockThe start block index.
blockCountThe number of blocks to write.
Return values
kStatus_InvalidArgumentInvalid argument.
kStatus_SDMMC_NotSupportYetNot support now.
kStatus_SDMMC_CardNotSupportCard not support.
kStatus_SDMMC_WaitWriteCompleteFailedSend status failed.
kStatus_SDMMC_TransferFailedTransfer failed.
kStatus_SDMMC_StopTransmissionFailedStop transmission failed.
kStatus_SuccessOperate successfully.
status_t SD_EraseBlocks ( sd_card_t card,
uint32_t  startBlock,
uint32_t  blockCount 
)

This function erases blocks of the specific card with default block size 512 bytes.

Parameters
cardCard descriptor.
startBlockThe start block index.
blockCountThe number of blocks to erase.
Return values
kStatus_InvalidArgumentInvalid argument.
kStatus_SDMMC_WaitWriteCompleteFailedSend status failed.
kStatus_SDMMC_TransferFailedTransfer failed.
kStatus_SDMMC_WaitWriteCompleteFailedSend status failed.
kStatus_SuccessOperate successfully.