MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Secure Digital Card/Embedded MultiMedia Card (CARD)

Overview

The MCUXpresso SDK provides a driver to access the Secure Digital Card and Embedded MultiMedia Card based on the SDHC driver.

Function groups

This function group implements the SD card functional API.

This function group implements the MMC card functional API.

Typical use case

/* Initialize SDHC. */
sdhcConfig->cardDetectDat3 = false;
sdhcConfig->endianMode = kSDHC_EndianModeLittle;
sdhcConfig->dmaMode = kSDHC_DmaModeAdma2;
sdhcConfig->readWatermarkLevel = 0x80U;
sdhcConfig->writeWatermarkLevel = 0x80U;
SDHC_Init(BOARD_SDHC_BASEADDR, sdhcConfig);
/* Save host information. */
card->host.base = BOARD_SDHC_BASEADDR;
card->host.sourceClock_Hz = CLOCK_GetFreq(BOARD_SDHC_CLKSRC);
card->host.transfer = SDHC_TransferFunction;
/* Init card. */
if (SD_Init(card))
{
PRINTF("\r\nSD card init failed.\r\n");
}
while (true)
{
if (kStatus_Success != SD_WriteBlocks(card, g_dataWrite, DATA_BLOCK_START, DATA_BLOCK_COUNT))
{
PRINTF("Write multiple data blocks failed.\r\n");
}
if (kStatus_Success != SD_ReadBlocks(card, g_dataRead, DATA_BLOCK_START, DATA_BLOCK_COUNT))
{
PRINTF("Read multiple data blocks failed.\r\n");
}
if (kStatus_Success != SD_EraseBlocks(card, DATA_BLOCK_START, DATA_BLOCK_COUNT))
{
PRINTF("Erase multiple data blocks failed.\r\n");
}
}
SD_Deinit(card);
/* Initialize SDHC. */
sdhcConfig->cardDetectDat3 = false;
sdhcConfig->endianMode = kSDHC_EndianModeLittle;
sdhcConfig->dmaMode = kSDHC_DmaModeAdma2;
sdhcConfig->readWatermarkLevel = 0x80U;
sdhcConfig->writeWatermarkLevel = 0x80U;
SDHC_Init(BOARD_SDHC_BASEADDR, sdhcConfig);
/* Save host information. */
card->host.base = BOARD_SDHC_BASEADDR;
card->host.sourceClock_Hz = CLOCK_GetFreq(BOARD_SDHC_CLKSRC);
card->host.transfer = SDHC_TransferFunction;
/* Init card. */
if (MMC_Init(card))
{
PRINTF("\n MMC card init failed \n");
}
while (true)
{
if (kStatus_Success != MMC_WriteBlocks(card, g_dataWrite, DATA_BLOCK_START, DATA_BLOCK_COUNT))
{
PRINTF("Write multiple data blocks failed.\r\n");
}
if (kStatus_Success != MMC_ReadBlocks(card, g_dataRead, DATA_BLOCK_START, DATA_BLOCK_COUNT))
{
PRINTF("Read multiple data blocks failed.\r\n");
}
}
MMC_Deinit(card);

Data Structures

struct  sdmmchost_detect_card_t
 sd card detect More...
 
struct  sdmmchost_pwr_card_t
 card power control More...
 

Macros

#define SDMMCHOST_NOT_SUPPORT   0U
 use this define to indicate the host not support feature
 
#define SDMMCHOST_SUPPORT   1U
 use this define to indicate the host support feature
 
#define kSDMMCHOST_DATABUSWIDTH1BIT   kSDHC_DataBusWidth1Bit
 1-bit mode
 
#define kSDMMCHOST_DATABUSWIDTH4BIT   kSDHC_DataBusWidth4Bit
 4-bit mode
 
#define kSDMMCHOST_DATABUSWIDTH8BIT   kSDHC_DataBusWidth8Bit
 8-bit mode
 
#define SDMMCHOST_STANDARD_TUNING_START   (0U)
 standard tuning start point
 
#define SDMMCHOST_TUINIG_STEP   (1U)
 standard tuning step
 
#define SDMMCHOST_RETUNING_TIMER_COUNT   (4U)
 Re-tuning timer.
 

Typedefs

typedef void(* sdmmchost_cd_callback_t )(bool isInserted, void *userData)
 card detect callback definition
 
typedef void(* sdmmchost_pwr_t )(void)
 card power control function pointer
 

Enumerations

enum  _host_capability
 SDHC host capability.
 
enum  _sdmmchost_endian_mode {
  kSDMMCHOST_EndianModeBig = 0U,
  kSDMMCHOST_EndianModeHalfWordBig = 1U,
  kSDMMCHOST_EndianModeLittle = 2U
}
 host Endian mode corresponding to driver define More...
 
enum  sdmmchost_detect_card_type_t {
  kSDMMCHOST_DetectCardByGpioCD,
  kSDMMCHOST_DetectCardByHostCD,
  kSDMMCHOST_DetectCardByHostDATA3
}
 sd card detect type More...
 

Variables

sdmmchost_detect_card_type_t sdmmchost_detect_card_t::cdType
 card detect type
 
uint32_t sdmmchost_detect_card_t::cdTimeOut_ms
 
                  card detect timeout which allow 0 - 0xFFFFFFF, value 0 will return immediately, value

0xFFFFFFFF will block until card is insert

 
sdmmchost_cd_callback_t sdmmchost_detect_card_t::cardInserted
 card inserted callback which is meaningful for interrupt case
 
sdmmchost_cd_callback_t sdmmchost_detect_card_t::cardRemoved
 card removed callback which is meaningful for interrupt case
 
void * sdmmchost_detect_card_t::userData
 user data
 
sdmmchost_pwr_t sdmmchost_pwr_card_t::powerOn
 power on function pointer
 
uint32_t sdmmchost_pwr_card_t::powerOnDelay_ms
 power on delay
 
sdmmchost_pwr_t sdmmchost_pwr_card_t::powerOff
 power off function pointer
 
uint32_t sdmmchost_pwr_card_t::powerOffDelay_ms
 power off delay
 

adaptor function

static status_t SDMMCHOST_NotSupport (void *parameter)
 host not support function, this function is used for host not support feature More...
 
status_t SDMMCHOST_WaitCardDetectStatus (SDMMCHOST_TYPE *hostBase, const sdmmchost_detect_card_t *cd, bool waitCardStatus)
 Detect card insert, only need for SD cases. More...
 
bool SDMMCHOST_IsCardPresent (void)
 check card is present or not. More...
 
status_t SDMMCHOST_Init (SDMMCHOST_CONFIG *host, void *userData)
 Init host controller. More...
 
void SDMMCHOST_Reset (SDMMCHOST_TYPE *base)
 reset host controller. More...
 
void SDMMCHOST_ErrorRecovery (SDMMCHOST_TYPE *base)
 host controller error recovery. More...
 
void SDMMCHOST_Deinit (void *host)
 Deinit host controller. More...
 
void SDMMCHOST_PowerOffCard (SDMMCHOST_TYPE *base, const sdmmchost_pwr_card_t *pwr)
 host power off card function. More...
 
void SDMMCHOST_PowerOnCard (SDMMCHOST_TYPE *base, const sdmmchost_pwr_card_t *pwr)
 host power on card function. More...
 
void SDMMCHOST_Delay (uint32_t milliseconds)
 SDMMC host delay function. More...
 

Data Structure Documentation

struct sdmmchost_detect_card_t

Data Fields

sdmmchost_detect_card_type_t cdType
 card detect type
 
uint32_t cdTimeOut_ms
 
                  card detect timeout which allow 0 - 0xFFFFFFF, value 0 will return immediately, value

0xFFFFFFFF will block until card is insert

 
sdmmchost_cd_callback_t cardInserted
 card inserted callback which is meaningful for interrupt case
 
sdmmchost_cd_callback_t cardRemoved
 card removed callback which is meaningful for interrupt case
 
void * userData
 user data
 
struct sdmmchost_pwr_card_t

Data Fields

sdmmchost_pwr_t powerOn
 power on function pointer
 
uint32_t powerOnDelay_ms
 power on delay
 
sdmmchost_pwr_t powerOff
 power off function pointer
 
uint32_t powerOffDelay_ms
 power off delay
 

Enumeration Type Documentation

Enumerator
kSDMMCHOST_EndianModeBig 

Big endian mode.

kSDMMCHOST_EndianModeHalfWordBig 

Half word big endian mode.

kSDMMCHOST_EndianModeLittle 

Little endian mode.

Enumerator
kSDMMCHOST_DetectCardByGpioCD 

sd card detect by CD pin through GPIO

kSDMMCHOST_DetectCardByHostCD 

sd card detect by CD pin through host

kSDMMCHOST_DetectCardByHostDATA3 

sd card detect by DAT3 pin through host

Function Documentation

static status_t SDMMCHOST_NotSupport ( void *  parameter)
inlinestatic
Parameters
voidparameter ,used to avoid build warning
Return values
kStatus_Fail,hostdo not suppport
status_t SDMMCHOST_WaitCardDetectStatus ( SDMMCHOST_TYPE *  hostBase,
const sdmmchost_detect_card_t cd,
bool  waitCardStatus 
)
Parameters
basethe pointer to host base address
cdcard detect configuration
waitCardStatusstatus which user want to wait
Return values
kStatus_Successdetect card insert
kStatus_Failcard insert event fail
bool SDMMCHOST_IsCardPresent ( void  )
Return values
truecard is present
falsecard is not present
status_t SDMMCHOST_Init ( SDMMCHOST_CONFIG *  host,
void *  userData 
)
Parameters
hostthe pointer to host structure in card structure.
userDataspecific user data
Return values
kStatus_Successhost init success
kStatus_Failevent fail
void SDMMCHOST_Reset ( SDMMCHOST_TYPE *  base)
Parameters
hostbase address.
void SDMMCHOST_ErrorRecovery ( SDMMCHOST_TYPE *  base)
Parameters
hostbase address.
void SDMMCHOST_Deinit ( void *  host)
Parameters
hostthe pointer to host structure in card structure.
void SDMMCHOST_PowerOffCard ( SDMMCHOST_TYPE *  base,
const sdmmchost_pwr_card_t pwr 
)
Parameters
basehost base address.
pwrdepend on user define power configuration.
void SDMMCHOST_PowerOnCard ( SDMMCHOST_TYPE *  base,
const sdmmchost_pwr_card_t pwr 
)
Parameters
basehost base address.
pwrdepend on user define power configuration.
void SDMMCHOST_Delay ( uint32_t  milliseconds)
Parameters
millisecondsdelay counter.