MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
SDIOC: SDIO Host Controller Driver

Overview

The MCUXpresso SDK provides a peripheral driver for the SDIO Host Controller Driver (SDIOC) module of MCUXpresso SDK devices.

Typical use case

SDIOC Operation

Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/sdmmc_examples/

Data Structures

struct  sdioc_config_t
 SDIOC Configuration Structure definition. More...
 
struct  sdioc_command_t
 SDIOC command configuration structure definition. More...
 
struct  sdioc_data_t
 SDIOC data configuration structure definition. More...
 
struct  sdioc_dma_config_t
 SDIOC dma configuration structure definition. More...
 
struct  sdioc_handle_t
 SDIOC handle. More...
 

Driver version

enum  {
  kStatus_SDIOC_BusyTransferring = MAKE_STATUS(kStatusGroup_SDIOC, 0U),
  kStatus_SDIOC_TransferCommandSuccess = MAKE_STATUS(kStatusGroup_SDIOC, 1U),
  kStatus_SDIOC_TransferCommandFail = MAKE_STATUS(kStatusGroup_SDIOC, 2U),
  kStatus_SDIOC_TransferCommandResponseError,
  kStatus_SDIOC_TransferDataFail = MAKE_STATUS(kStatusGroup_SDIOC, 4U),
  kStatus_SDIOC_TransferDataSuccess = MAKE_STATUS(kStatusGroup_SDIOC, 5U)
}
 SDIOC transfer status. More...
 
enum  sdioc_bus_voltage_t {
  kSDIOC_BusVoltage_3V3 = 0x07,
  kSDIOC_BusVoltage_3V0 = 0x06,
  kSDIOC_BusVoltage_1V8 = 0x05
}
 SDIOC bus voltage level type definition. More...
 
enum  sdioc_bus_speed_t {
  kSDIOC_BusSpeedNormal = 0x00,
  kSDIOC_BusSpeedHigh
}
 SDIOC speed mode type definition. More...
 
enum  sdioc_bus_width_t {
  kSDIOC_BusWidth1Bit = 0x00,
  kSDIOC_BusWidth4Bit
}
 SDIOC data width type definition. More...
 
enum  {
  kSDIOC_CommandTypeNormal = 0x00,
  kSDIOC_CommandTypeSuspend,
  kSDIOC_CommandTypeResume,
  kSDIOC_CommandTypeAbort
}
 SDIOC command type definition. More...
 
enum  {
  kSDIOC_CommandNoResponse = SDIOC_MM4_CMD_XFRMD_RES_TYPE(0x00),
  kSDIOC_CommandResponseLen136BitsCheckCrc,
  kSDIOC_CommandResponseLen48Bits = SDIOC_MM4_CMD_XFRMD_RES_TYPE(2U),
  kSDIOC_CommandResponseLen48BitsCheckCrcIndex,
  kSDIOC_CommandResponseLen48BitsWithCheckBusyCrcIndex
}
 SDIOC response type definition. More...
 
enum  sdioc_response_index_t {
  kSDIOC_ResponseIndex0 = 0x00,
  kSDIOC_ResponseIndex1,
  kSDIOC_ResponseIndex2,
  kSDIOC_ResponseIndex3
}
 SDIOC response number definition. More...
 
enum  sdioc_dma_buffer_boundary_t {
  kSDIOC_DMABufferBoundary4K = 0U,
  kSDIOC_DMABufferBoundary8K = 1U,
  kSDIOC_DMABufferBoundary16K = 2U,
  kSDIOC_DMABufferBoundary32K = 3U,
  kSDIOC_DMABufferBoundary64K = 4U,
  kSDIOC_DMABufferBoundary128K = 5U,
  kSDIOC_DMABufferBoundary256K = 6U,
  kSDIOC_DMABufferBoundary512K = 7U
}
 SDIOC dma buffer boundary. More...
 
enum  sdioc_data_timeout_value_t {
  kSDIOC_DataTimeoutValue0 = 0U,
  kSDIOC_DataTimeoutValue1 = 1U,
  kSDIOC_DataTimeoutValue2 = 2U,
  kSDIOC_DataTimeoutValue3 = 3U,
  kSDIOC_DataTimeoutValue4 = 4U,
  kSDIOC_DataTimeoutValue5 = 5U,
  kSDIOC_DataTimeoutValue6 = 6U,
  kSDIOC_DataTimeoutValue7 = 7U,
  kSDIOC_DataTimeoutValue8 = 8U,
  kSDIOC_DataTimeoutValue9 = 9U,
  kSDIOC_DataTimeoutValue10 = 10U,
  kSDIOC_DataTimeoutValue11 = 11U,
  kSDIOC_DataTimeoutValue12 = 12U,
  kSDIOC_DataTimeoutValue13 = 13U,
  kSDIOC_DataTimeoutValue14 = 14U
}
 sdioc data timeout value definition More...
 
enum  {
  kSDIOC_InterruptCommandCompleteFlag = SDIOC_MM4_I_STAT_CMDCOMP_MASK,
  kSDIOC_InterruptXferCompleteFlag = SDIOC_MM4_I_STAT_XFRCOMP_MASK,
  kSDIOC_InterruptBlockGapEventFlag = SDIOC_MM4_I_STAT_BGEVNT_MASK,
  kSDIOC_InterruptDMAInterruptFlag = SDIOC_MM4_I_STAT_DMAINT_MASK,
  kSDIOC_InterruptBufferWriteReadyFlag = SDIOC_MM4_I_STAT_BUFWRRDY_MASK,
  kSDIOC_InterruptBufferReadReadyFlag = SDIOC_MM4_I_STAT_BUFRDRDY_MASK,
  kSDIOC_InterruptCardInsertedFlag = SDIOC_MM4_I_STAT_CDINS_MASK,
  kSDIOC_InterruptCardRemovedFlag = SDIOC_MM4_I_STAT_CDREM_MASK,
  kSDIOC_InterruptCardInterruptFlag,
  kSDIOC_InterruptERRInterrupt = SDIOC_MM4_I_STAT_ERRINT_MASK,
  kSDIOC_InterruptCommandTimeoutFlag = SDIOC_MM4_I_STAT_CTOERR_MASK,
  kSDIOC_InterruptCommandCrcErrorFlag = SDIOC_MM4_I_STAT_CCRCERR_MASK,
  kSDIOC_InterruptCommandEntBitErrorFlag = SDIOC_MM4_I_STAT_CENDERR_MASK,
  kSDIOC_InterruptCommandIndexErrorFlag = SDIOC_MM4_I_STAT_CIDXERR_MASK,
  kSDIOC_InterruptDataTimeoutErrorFlag = SDIOC_MM4_I_STAT_DTOERR_MASK,
  kSDIOC_InterruptDataCrcErrorFlag = SDIOC_MM4_I_STAT_DCRCERR_MASK,
  kSDIOC_InterruptDataEndBitErrorFlag = SDIOC_MM4_I_STAT_DENDERR_MASK,
  kSDIOC_InterruptCurrentLimitErrorFlag = SDIOC_MM4_I_STAT_ILMTERR_MASK,
  kSDIOC_InterruptAutoCommand12ErrorFlag = SDIOC_MM4_I_STAT_AC12ERR_MASK,
  kSDIOC_InterruptAhbTargetErrorFlag = SDIOC_MM4_I_STAT_AHBTERR_MASK,
  kSDIOC_InterruptCardDetectFlag,
  kSDIOC_InterruptCommandErrorFlag,
  kSDIOC_InterruptCommandFlag,
  kSDIOC_InterruptDataErrorFlag,
  kSDIOC_InterruptDataFlag,
  kSDIOC_InterruptCommandAndDataFlag
}
 SDIOC interrupt flag definition. More...
 
enum  {
  kSDIOC_PresentStatusCommandInhibit = SDIOC_MM4_STATE_CCMDINHBT_MASK,
  kSDIOC_PresentStatusDataInhibit = SDIOC_MM4_STATE_DCMDINHBT_MASK,
  kSDIOC_PresentStatusDataLineActive = SDIOC_MM4_STATE_DATACTV_MASK,
  kSDIOC_PresentStatusWriteTransferActive = SDIOC_MM4_STATE_WRACTV_MASK,
  kSDIOC_PresentStatusReadTransferActive = SDIOC_MM4_STATE_RDACTV_MASK,
  kSDIOC_PresentStatusBufferWriteReady = SDIOC_MM4_STATE_BUFWREN_MASK,
  kSDIOC_PresentStatusBufferReadReady = SDIOC_MM4_STATE_BUFRDEN_MASK,
  kSDIOC_PresentStatusCardInserted = SDIOC_MM4_STATE_CDINSTD_MASK,
  kSDIOC_PresentStatusData0Level = 1U << SDIOC_MM4_STATE_LWRDATLVL_SHIFT,
  kSDIOC_PresentStatusData1Level = 1U << (SDIOC_MM4_STATE_LWRDATLVL_SHIFT + 1U),
  kSDIOC_PresentStatusData2Level = 1U << (SDIOC_MM4_STATE_LWRDATLVL_SHIFT + 2U),
  kSDIOC_PresentStatusData3Level = 1U << (SDIOC_MM4_STATE_LWRDATLVL_SHIFT + 3U),
  kSDIOC_PresentStatusCommandLevel = SDIOC_MM4_STATE_CMDLVL_MASK,
  kSDIOC_PresentStatusData4Level = 1U << SDIOC_MM4_STATE_UPRDATLVL_SHIFT,
  kSDIOC_PresentStatusData5Level = 1U << (SDIOC_MM4_STATE_UPRDATLVL_SHIFT + 1U),
  kSDIOC_PresentStatusData6Level = 1U << (SDIOC_MM4_STATE_UPRDATLVL_SHIFT + 2U),
  kSDIOC_PresentStatusData7Level = 1U << (SDIOC_MM4_STATE_UPRDATLVL_SHIFT + 3U)
}
 SDIOC present status definition. More...
 
typedef void(* sdioc_transfer_callback_t )(sdioc_handle_t *handle, status_t transferStatus, void *userData)
 SDIOC callback pointer.
 
typedef void(* sdioc_card_int_callback_t )(sdioc_handle_t *handle, void *userData)
 
typedef void(* sdioc_card_detect_callback_t )(sdioc_handle_t *handle, bool isCardInserted, void *userData)
 SDIOC callback structure definition.
 
#define FSL_SDIOC_DRIVER_VERSION   (MAKE_VERSION(2U, 0U, 1U))
 Driver version 2.0.1. More...
 

SDIOC Initialization and deinitialization

void SDIOC_Init (SDIOC_Type *base, const sdioc_config_t *config)
 SDIOC module initialization function. More...
 
void SDIOC_Deinit (SDIOC_Type *base)
 Deinitializes the SDIOC. More...
 

SDIOC bus functional interface

static void SDIOC_SetBusVoltage (SDIOC_Type *base, sdioc_bus_voltage_t busVoltage)
 SDIOC set bus voltage. More...
 
static void SDIOC_SetDataBusWidth (SDIOC_Type *base, sdioc_bus_width_t busWidth)
 SDIOC set data bus width. More...
 
static void SDIOC_SetBusSpeed (SDIOC_Type *base, sdioc_bus_speed_t busSpeed)
 SDIOC set bus speed. More...
 
static void SDIOC_EnableBusPower (SDIOC_Type *base, bool enable)
 SDIOC enable/disable bus power. More...
 
static void SDIOC_EnableInternalClock (SDIOC_Type *base, bool enable)
 SDIOC enable/disable internal clock. More...
 
static void SDIOC_EnableCardClock (SDIOC_Type *base, bool enable)
 SDIOC enable/disable card clock. More...
 
static void SDIOC_ResetAll (SDIOC_Type *base)
 SDIOC software reset entire host controller except for the card detection circuit register. More...
 
static void SDIOC_ResetCommandLine (SDIOC_Type *base)
 SDIOC software reset command line. More...
 
static void SDIOC_ResetDataLine (SDIOC_Type *base)
 SDIOC software reset data line. More...
 
static void SDIOC_SetDataTimeout (SDIOC_Type *base, sdioc_data_timeout_value_t timeout)
 SDIOC set data timeout value. More...
 

SDIOC block gap functional interface

static void SDIOC_EnableStopAtBlockGap (SDIOC_Type *base, bool enable)
 SDIOC enable stop at block gap request. More...
 
static void SDIOC_EnableContinueRequest (SDIOC_Type *base, bool enable)
 SDIOC enable continue request. More...
 
static void SDIOC_EnableReadWaitControl (SDIOC_Type *base, bool enable)
 SDIOC enable/disable read wait control. More...
 
static void SDIOC_EnableStopAtBlockGapInterrupt (SDIOC_Type *base, bool enable)
 SDIOC enable/disable stop at block gap interrupt. More...
 
static uint32_t SDIOC_ReadCommandResponse (SDIOC_Type *base, sdioc_response_index_t responseIndex)
 SDIOC read command response. More...
 
static uint32_t SDIOC_ReadData (SDIOC_Type *base)
 SDIOC read data port. More...
 
static void SDIOC_WriteData (SDIOC_Type *base, uint32_t data)
 SDIOC write data port. More...
 

SDIOC dma functional interface

static void SDIOC_SetDmaBufferBoundary (SDIOC_Type *base, sdioc_dma_buffer_boundary_t bufferBoundary)
 SDIOC set dma buffer boundary. More...
 
static void SDIOC_SetDmaBufferAddress (SDIOC_Type *base, void *bufferAddress)
 SDIOC set dma buffer address. More...
 

SDIOC interrupt and status interface

static void SDIOC_EnableInterruptStatus (SDIOC_Type *base, uint32_t interruptFlags, bool enable)
 SDIOC enable/disable interrupt status. More...
 
static void SDIOC_EnableInterruptSignal (SDIOC_Type *base, uint32_t interruptFlags, bool enable)
 SDIOC enable/disable interrupt signal. More...
 
static uint32_t SDIOC_GetInterruptStatus (SDIOC_Type *base)
 SDIOC get interrupt status. More...
 
static uint32_t SDIOC_GetEnabledInterruptStatus (SDIOC_Type *base)
 Gets the enabled interrupt status. More...
 
static void SDIOC_ClearInterruptStatus (SDIOC_Type *base, uint32_t interruptFlags)
 SDIOC clear interrupt status. More...
 
static uint32_t SDIOC_GetPresentStatus (SDIOC_Type *base)
 SDIOC get host controller present status. More...
 
status_t SDIOC_SetTransferConfig (SDIOC_Type *base, sdioc_command_t *command, sdioc_data_t *data, sdioc_dma_config_t *dmaConfig)
 Transfer parameters command/data/dma configurations. More...
 

SDIOC transactional interface

void SDIOC_TransferCreateHandle (SDIOC_Type *base, sdioc_handle_t *handle, sdioc_callback_t *callback, void *userData)
 Creates the SDIOC handle. More...
 
status_t SDIOC_TransferDMANonBlocking (sdioc_handle_t *handle, sdioc_command_t *command, sdioc_data_t *data, sdioc_dma_config_t *dmaConfig)
 Transfers the command/data using an interrupt and an asynchronous method. More...
 
void SDIOC_TransferHandleIRQ (sdioc_handle_t *handle)
 IRQ handler for the SDIOC. More...
 

Data Structure Documentation

struct sdioc_config_t

Data Fields

sdioc_bus_voltage_t busVoltage
 bus voltage
 
sdioc_data_timeout_value_t dataTimeout
 data timeout value
 
struct sdioc_command_t

Data Fields

uint32_t commandIndex
 Command index.
 
uint32_t commandArgument
 command argument which specified as bit 39-8 of command-format
 
uint8_t commandType
 Command type, _sdioc_command_type.
 
uint32_t commandResponseType
 Command response type, _sdioc_command_response_type.
 
uint32_t commandResponseErrorFlags
 Command response error flags.
 
uint32_t commandResponse [4]
 Command response.
 
struct sdioc_data_t

Data Fields

bool dataEnableAutoCommand12
 enable auto command 12 after data transfer complete
 
uint32_t dataBlockCount
 Block count for current transfer. More...
 
uint32_t dataBlockSize
 Transfer block size. More...
 
uint8_t * dataTxAddr
 tx data buffer address
 
uint8_t * dataRxAddr
 rx data buffer address
 

Field Documentation

uint32_t sdioc_data_t::dataBlockCount
  • 0x0000: stop count
  • 0x0001: 1 block
  • 0x0002: 2 blocks .................. ..................
  • 0xFFFF: 65535 blocks
uint32_t sdioc_data_t::dataBlockSize
  • 0x000: no data transfer
  • 0x001: 1 byte
  • 0x002: 2 bytes
  • 0x003: 3 bytes
  • 0x004: 4 bytes ..................
  • 0x1FF: 511 bytes
  • 0x200: 512 bytes ..................
  • 0x800: 2048 bytes
  • 0x801 - 0xFFF: reserved
struct sdioc_dma_config_t

Data Fields

sdioc_dma_buffer_boundary_t dmaBufferBoundary
 dma buffer boundary
 
struct _sdioc_handle

SDIOC handle typedef.

Defines the structure to save the SDIOC state information and callback function.

Data Fields

SDIOC_Type * base
 host controller base address
 
sdioc_data_tdata
 transfer data pointer
 
sdioc_command_tcommand
 transfer command pointer
 
sdioc_callback_t callback
 Callback function. More...
 
void * userData
 Parameter for transfer complete callback. More...
 

Field Documentation

sdioc_callback_t sdioc_handle_t::callback
void* sdioc_handle_t::userData

Macro Definition Documentation

#define FSL_SDIOC_DRIVER_VERSION   (MAKE_VERSION(2U, 0U, 1U))

Enumeration Type Documentation

anonymous enum
Enumerator
kStatus_SDIOC_BusyTransferring 

Transfer is on-going.

kStatus_SDIOC_TransferCommandSuccess 

Transfer command success.

kStatus_SDIOC_TransferCommandFail 

Transfer command fail.

kStatus_SDIOC_TransferCommandResponseError 

Transfer command response error .

kStatus_SDIOC_TransferDataFail 

Transfer data fail.

kStatus_SDIOC_TransferDataSuccess 

Transfer data success.

Enumerator
kSDIOC_BusVoltage_3V3 

SDIO bus voltage select 3.3V.

kSDIOC_BusVoltage_3V0 

SDIO bus voltage select 3.0V.

kSDIOC_BusVoltage_1V8 

SDIO bus voltage select 1.8V.

Enumerator
kSDIOC_BusSpeedNormal 

SDIO normal speed mode.

kSDIOC_BusSpeedHigh 

SDIO high speed mode.

Enumerator
kSDIOC_BusWidth1Bit 

SDIO data width 1 bit mode.

kSDIOC_BusWidth4Bit 

SDIO data width 4 bits mode.

anonymous enum

Enumerator
kSDIOC_CommandTypeNormal 

Normal command.

kSDIOC_CommandTypeSuspend 

Suspend command.

kSDIOC_CommandTypeResume 

Resume command.

kSDIOC_CommandTypeAbort 

Abort command.

anonymous enum

Enumerator
kSDIOC_CommandNoResponse 

No response.

kSDIOC_CommandResponseLen136BitsCheckCrc 

Response length 136 bits.

kSDIOC_CommandResponseLen48Bits 

Response length 48 bits.

kSDIOC_CommandResponseLen48BitsCheckCrcIndex 

Response length 48 bits.

kSDIOC_CommandResponseLen48BitsWithCheckBusyCrcIndex 

Response length 48 bits, check busy after response.

Enumerator
kSDIOC_ResponseIndex0 

Command response 0.

kSDIOC_ResponseIndex1 

Command response 1.

kSDIOC_ResponseIndex2 

Command response 2.

kSDIOC_ResponseIndex3 

Command response 3.

Enumerator
kSDIOC_DMABufferBoundary4K 

DMA buffer boundary 4K.

kSDIOC_DMABufferBoundary8K 

DMA buffer boundary 8K.

kSDIOC_DMABufferBoundary16K 

DMA buffer boundary 16K.

kSDIOC_DMABufferBoundary32K 

DMA buffer boundary 32K.

kSDIOC_DMABufferBoundary64K 

DMA buffer boundary 64K.

kSDIOC_DMABufferBoundary128K 

DMA buffer boundary 128K.

kSDIOC_DMABufferBoundary256K 

DMA buffer boundary 256K.

kSDIOC_DMABufferBoundary512K 

DMA buffer boundary 512K.

Enumerator
kSDIOC_DataTimeoutValue0 

timeout out value is (timeout clock)*2^13

kSDIOC_DataTimeoutValue1 

timeout out value is (timeout clock)*2^14

kSDIOC_DataTimeoutValue2 

timeout out value is (timeout clock)*2^15

kSDIOC_DataTimeoutValue3 

timeout out value is (timeout clock)*2^16

kSDIOC_DataTimeoutValue4 

timeout out value is (timeout clock)*2^17

kSDIOC_DataTimeoutValue5 

timeout out value is (timeout clock)*2^18

kSDIOC_DataTimeoutValue6 

timeout out value is (timeout clock)*2^19

kSDIOC_DataTimeoutValue7 

timeout out value is (timeout clock)*2^20

kSDIOC_DataTimeoutValue8 

timeout out value is (timeout clock)*2^21

kSDIOC_DataTimeoutValue9 

timeout out value is (timeout clock)*2^22

kSDIOC_DataTimeoutValue10 

timeout out value is (timeout clock)*2^23

kSDIOC_DataTimeoutValue11 

timeout out value is (timeout clock)*2^24

kSDIOC_DataTimeoutValue12 

timeout out value is (timeout clock)*2^25

kSDIOC_DataTimeoutValue13 

timeout out value is (timeout clock)*2^26

kSDIOC_DataTimeoutValue14 

timeout out value is (timeout clock)*2^27

anonymous enum

Enumerator
kSDIOC_InterruptCommandCompleteFlag 

Command complete interrupt flag.

kSDIOC_InterruptXferCompleteFlag 

Transfer complete interrupt flag.

kSDIOC_InterruptBlockGapEventFlag 

Block gap event flag.

kSDIOC_InterruptDMAInterruptFlag 

DMA interrupt flag.

kSDIOC_InterruptBufferWriteReadyFlag 

Buffer write ready interrupt flag.

kSDIOC_InterruptBufferReadReadyFlag 

Buffer read ready interrupt flag.

kSDIOC_InterruptCardInsertedFlag 

Card insertion interrupt flag.

kSDIOC_InterruptCardRemovedFlag 

Card remove interrupt flag.

kSDIOC_InterruptCardInterruptFlag 

Card interrupt flag, interrupt detected by DAT[1].

kSDIOC_InterruptERRInterrupt 

Error interrupt flag.

kSDIOC_InterruptCommandTimeoutFlag 

Command timeout error interrupt flag.

kSDIOC_InterruptCommandCrcErrorFlag 

Command crc error interrupt flag.

kSDIOC_InterruptCommandEntBitErrorFlag 

Command end bit error interrupt flag.

kSDIOC_InterruptCommandIndexErrorFlag 

Command index error interrupt flag.

kSDIOC_InterruptDataTimeoutErrorFlag 

Data timeout error interrupt flag.

kSDIOC_InterruptDataCrcErrorFlag 

Data crc error interrupt flag.

kSDIOC_InterruptDataEndBitErrorFlag 

Data end bit error interrupt flag.

kSDIOC_InterruptCurrentLimitErrorFlag 

Current limit error interrupt flag.

kSDIOC_InterruptAutoCommand12ErrorFlag 

Current limit error interrupt flag.

kSDIOC_InterruptAhbTargetErrorFlag 

AHB Target error interrupt flag.

kSDIOC_InterruptCardDetectFlag 

card insert flag summary

kSDIOC_InterruptCommandErrorFlag 

command error flag summary

kSDIOC_InterruptCommandFlag 

command flag summary

kSDIOC_InterruptDataErrorFlag 

data error flag

kSDIOC_InterruptDataFlag 

data flag summary

kSDIOC_InterruptCommandAndDataFlag 

command and data flag summary

anonymous enum
Enumerator
kSDIOC_PresentStatusCommandInhibit 

Command inhibit(CMD) status.

kSDIOC_PresentStatusDataInhibit 

Command inhibit(DAT) status.

kSDIOC_PresentStatusDataLineActive 

DAT line active.

kSDIOC_PresentStatusWriteTransferActive 

Write transfer active.

kSDIOC_PresentStatusReadTransferActive 

Read transfer active.

kSDIOC_PresentStatusBufferWriteReady 

Buffer write enable.

kSDIOC_PresentStatusBufferReadReady 

Buffer read enable.

kSDIOC_PresentStatusCardInserted 

Card inserted.

kSDIOC_PresentStatusData0Level 

Data[0] line signal level.

kSDIOC_PresentStatusData1Level 

Data[1] line signal level.

kSDIOC_PresentStatusData2Level 

Data[2] line signal level.

kSDIOC_PresentStatusData3Level 

Data[3] line signal level.

kSDIOC_PresentStatusCommandLevel 

CMD line signal level.

kSDIOC_PresentStatusData4Level 

DAT[4] line signal level.

kSDIOC_PresentStatusData5Level 

DAT[5] line signal level.

kSDIOC_PresentStatusData6Level 

DAT[6] line signal level.

kSDIOC_PresentStatusData7Level 

DAT[7] line signal level.

Function Documentation

void SDIOC_Init ( SDIOC_Type *  base,
const sdioc_config_t config 
)

Configures the SDIOC according to the user configuration.

Example:

Parameters
baseSDIOC peripheral base address.
configSDIOC configuration information.
Return values
kStatus_SuccessOperate successfully.
void SDIOC_Deinit ( SDIOC_Type *  base)
Parameters
baseSDIOC peripheral base address.
static void SDIOC_SetBusVoltage ( SDIOC_Type *  base,
sdioc_bus_voltage_t  busVoltage 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
busVoltageSDIO bus voltage.
static void SDIOC_SetDataBusWidth ( SDIOC_Type *  base,
sdioc_bus_width_t  busWidth 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
busWidthSDIO bus width.
static void SDIOC_SetBusSpeed ( SDIOC_Type *  base,
sdioc_bus_speed_t  busSpeed 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
busSpeedSDIO bus speed.
static void SDIOC_EnableBusPower ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is enable power, false is disable power.
static void SDIOC_EnableInternalClock ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is enable internal clock, false is disable internal clock.
static void SDIOC_EnableCardClock ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is enable card clock, false is disable card clock.
static void SDIOC_ResetAll ( SDIOC_Type *  base)
inlinestatic
Parameters
baseSDIOC peripheral base address.
static void SDIOC_ResetCommandLine ( SDIOC_Type *  base)
inlinestatic
Parameters
baseSDIOC peripheral base address.
static void SDIOC_ResetDataLine ( SDIOC_Type *  base)
inlinestatic
Parameters
baseSDIOC peripheral base address.
static void SDIOC_SetDataTimeout ( SDIOC_Type *  base,
sdioc_data_timeout_value_t  timeout 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
timeouttimeout value.
static void SDIOC_EnableStopAtBlockGap ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is enable stop executing read and write transaction at next block gap, false is disable.
static void SDIOC_EnableContinueRequest ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is restart a transaction which was stopped using stop at block gap request, false not affect.
static void SDIOC_EnableReadWaitControl ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is enable read wait function, false is disable.
static void SDIOC_EnableStopAtBlockGapInterrupt ( SDIOC_Type *  base,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
enabletrue is enable interrupt at block gap, false is disable.
static uint32_t SDIOC_ReadCommandResponse ( SDIOC_Type *  base,
sdioc_response_index_t  responseIndex 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
responseIndexresponse index.
Return values
responseread from sdioc.
static uint32_t SDIOC_ReadData ( SDIOC_Type *  base)
inlinestatic
Parameters
baseSDIOC peripheral base address.
Return values
dataread from SDIOC fifo.
static void SDIOC_WriteData ( SDIOC_Type *  base,
uint32_t  data 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
datadata to be written to SDIOC fifo.
static void SDIOC_SetDmaBufferBoundary ( SDIOC_Type *  base,
sdioc_dma_buffer_boundary_t  bufferBoundary 
)
inlinestatic

The large contiguous memory space may not be available in the virtual memory system. To perform long DMA transfer, DMA System Address register shall be updated at every system memory boundary during DMA transfer. These bits specify the size of contiguous buffer in the system memory. The SDMA transfer shall wait at the every boundary specified by these fields and the Host Controller generates the DMA Interrupt to request the Host Driver to update the SDMA System Address register.

Parameters
baseSDIOC peripheral base address.
bufferBoundarydma buffer boundary.
static void SDIOC_SetDmaBufferAddress ( SDIOC_Type *  base,
void *  bufferAddress 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
bufferAddressdma buffer address.
static void SDIOC_EnableInterruptStatus ( SDIOC_Type *  base,
uint32_t  interruptFlags,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
interruptFlagsstatus flag to enable/disable, _sdioc_interrupt_flag.
enabletrue is enable the corresponding interrupt status, false is disable.
static void SDIOC_EnableInterruptSignal ( SDIOC_Type *  base,
uint32_t  interruptFlags,
bool  enable 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
interruptFlagsstatus flag to enable/disable, _sdioc_interrupt_flag.
enabletrue is enable the corresponding interrupt status, false is disable.
static uint32_t SDIOC_GetInterruptStatus ( SDIOC_Type *  base)
inlinestatic
Parameters
baseSDIOC peripheral base address.
Return values
interruptstatus flag.
static uint32_t SDIOC_GetEnabledInterruptStatus ( SDIOC_Type *  base)
inlinestatic
Parameters
baseUSDHC peripheral base address.
Return values
Currentinterrupt status flags mask _sdioc_interrupt_flag.
static void SDIOC_ClearInterruptStatus ( SDIOC_Type *  base,
uint32_t  interruptFlags 
)
inlinestatic
Parameters
baseSDIOC peripheral base address.
interruptFlagsinterrupt status flag to clear, _sdioc_interrupt_flag..
static uint32_t SDIOC_GetPresentStatus ( SDIOC_Type *  base)
inlinestatic
Parameters
baseSDIOC peripheral base address.
Return values
presentstatus flag.
status_t SDIOC_SetTransferConfig ( SDIOC_Type *  base,
sdioc_command_t command,
sdioc_data_t data,
sdioc_dma_config_t dmaConfig 
)
Parameters
baseSDIOC base address.
commandTransfer command pointer, application should not pass NULL pointer to this parameter.
dataTransfer data pointer, application can pass NULL when send command only.
dmaConfigInternal dma configurations, application can pass NULL when dma is not used.
Return values
kStatus_InvalidArgumentArgument is invalid.
kStatus_SuccessOperate successfully.
void SDIOC_TransferCreateHandle ( SDIOC_Type *  base,
sdioc_handle_t *  handle,
sdioc_callback_t *  callback,
void *  userData 
)
Parameters
baseSDIOC peripheral base address.
handleSDIOC handle pointer.
callbackStructure pointer to contain all callback functions.
userDataCallback function parameter.
status_t SDIOC_TransferDMANonBlocking ( sdioc_handle_t *  handle,
sdioc_command_t command,
sdioc_data_t data,
sdioc_dma_config_t dmaConfig 
)

This function sends a command and data and returns immediately. It doesn't wait for the transfer to complete or to encounter an error. The application must not call this API in multiple threads at the same time. Because of that this API doesn't support the re-entry mechanism.

This function transfer data through SDIOC internal DMA.

Note
Call API SDIOC_TransferCreateHandle when calling this API.
Parameters
handleSDIOC handle.
commandTransfer command pointer should not be NULL.
dataTransfer data pointer can be NULL if send command only.
dmaConfigInternal dma configurations, NULL pointer is not allowed.
Return values
kStatus_InvalidArgumentArgument is invalid.
kStatus_SDIOC_BusyTransferringBusy transferring.
kStatus_SuccessOperate successfully.
void SDIOC_TransferHandleIRQ ( sdioc_handle_t *  handle)

This function deals with the IRQs on the given host controller.

Parameters
handleSDIOC handle.