MCUXpresso SDK API Reference Manual
Rev. 0
NXP Semiconductors
|
The MCUXpresso SDK provides a peripheral driver for the Ultra Secured Digital Host Controller (USDHC) module of MCUXpresso SDK/i.MX devices.
Refer to the driver examples codes located at <SDK_ROOT>/boards/<BOARD>/driver_examples/usdhc.
The uSDHC host controller is intergrated with ADMA to have better transfer performance, so to maintain data integrity during DMA operations on the platform that has cache, USDHC driver provide a cache maintain functionality by define: FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL = 1 It is suggest that the address of buffer used for read/write is align with cache line size.
The USDHC driver implement scatter gather transfer functionality, so application can submit uncontinuous data buffer in one transfer request by the scatter gather api, to have this feature, USDHC driver has below api USDHC_TransferScatterGatherADMANonBlocking This function suppport scatter gather transfer and cover the functionality of USDHC_TransferNonBlocking also, but if application would like to use the function, please enable function macro firstly, since the scatter gather functionality is disabled by default. #define FSL_USDHC_ENABLE_SCATTER_GATHER_TRANSFER 1
Please note that once the macro is defined, the USDHC_TransferNonBlocking will be removed automatically.
Data Structures | |
struct | usdhc_adma2_descriptor_t |
Defines the ADMA2 descriptor structure. More... | |
struct | usdhc_capability_t |
USDHC capability information. More... | |
struct | usdhc_boot_config_t |
Data structure to configure the MMC boot feature. More... | |
struct | usdhc_config_t |
Data structure to initialize the USDHC. More... | |
struct | usdhc_command_t |
Card command descriptor. More... | |
struct | usdhc_adma_config_t |
ADMA configuration. More... | |
struct | usdhc_scatter_gather_data_list_t |
Card scatter gather data list. More... | |
struct | usdhc_scatter_gather_data_t |
Card scatter gather data descriptor. More... | |
struct | usdhc_scatter_gather_transfer_t |
usdhc scatter gather transfer. More... | |
struct | usdhc_data_t |
Card data descriptor. More... | |
struct | usdhc_transfer_t |
Transfer state. More... | |
struct | usdhc_transfer_callback_t |
USDHC callback functions. More... | |
struct | usdhc_handle_t |
USDHC handle. More... | |
struct | usdhc_host_t |
USDHC host descriptor. More... | |
Macros | |
#define | USDHC_MAX_BLOCK_COUNT (USDHC_BLK_ATT_BLKCNT_MASK >> USDHC_BLK_ATT_BLKCNT_SHIFT) |
Maximum block count can be set one time. | |
#define | FSL_USDHC_ENABLE_SCATTER_GATHER_TRANSFER 0U |
USDHC scatter gather feature control macro. | |
#define | USDHC_ADMA1_ADDRESS_ALIGN (4096U) |
The alignment size for ADDRESS filed in ADMA1's descriptor. More... | |
#define | USDHC_ADMA1_LENGTH_ALIGN (4096U) |
The alignment size for LENGTH field in ADMA1's descriptor. More... | |
#define | USDHC_ADMA2_ADDRESS_ALIGN (4U) |
The alignment size for ADDRESS field in ADMA2's descriptor. More... | |
#define | USDHC_ADMA2_LENGTH_ALIGN (4U) |
The alignment size for LENGTH filed in ADMA2's descriptor. More... | |
#define | USDHC_ADMA1_DESCRIPTOR_ADDRESS_SHIFT (12U) |
The bit shift for ADDRESS filed in ADMA1's descriptor. More... | |
#define | USDHC_ADMA1_DESCRIPTOR_ADDRESS_MASK (0xFFFFFU) |
The bit mask for ADDRESS field in ADMA1's descriptor. More... | |
#define | USDHC_ADMA1_DESCRIPTOR_LENGTH_SHIFT (12U) |
The bit shift for LENGTH filed in ADMA1's descriptor. More... | |
#define | USDHC_ADMA1_DESCRIPTOR_LENGTH_MASK (0xFFFFU) |
The mask for LENGTH field in ADMA1's descriptor. More... | |
#define | USDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY (USDHC_ADMA1_DESCRIPTOR_LENGTH_MASK + 1U - 4096U) |
The maximum value of LENGTH filed in ADMA1's descriptor. More... | |
#define | USDHC_ADMA2_DESCRIPTOR_LENGTH_SHIFT (16U) |
The bit shift for LENGTH field in ADMA2's descriptor. More... | |
#define | USDHC_ADMA2_DESCRIPTOR_LENGTH_MASK (0xFFFFU) |
The bit mask for LENGTH field in ADMA2's descriptor. More... | |
#define | USDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY (USDHC_ADMA2_DESCRIPTOR_LENGTH_MASK - 3U) |
The maximum value of LENGTH field in ADMA2's descriptor. More... | |
Typedefs | |
typedef uint32_t | usdhc_adma1_descriptor_t |
Defines the ADMA1 descriptor structure. More... | |
typedef status_t(* | usdhc_transfer_function_t )(USDHC_Type *base, usdhc_transfer_t *content) |
USDHC transfer function. More... | |
Enumerations | |
enum | { kStatus_USDHC_BusyTransferring = MAKE_STATUS(kStatusGroup_USDHC, 0U), kStatus_USDHC_PrepareAdmaDescriptorFailed = MAKE_STATUS(kStatusGroup_USDHC, 1U), kStatus_USDHC_SendCommandFailed = MAKE_STATUS(kStatusGroup_USDHC, 2U), kStatus_USDHC_TransferDataFailed = MAKE_STATUS(kStatusGroup_USDHC, 3U), kStatus_USDHC_DMADataAddrNotAlign = MAKE_STATUS(kStatusGroup_USDHC, 4U), kStatus_USDHC_ReTuningRequest = MAKE_STATUS(kStatusGroup_USDHC, 5U), kStatus_USDHC_TuningError = MAKE_STATUS(kStatusGroup_USDHC, 6U), kStatus_USDHC_NotSupport = MAKE_STATUS(kStatusGroup_USDHC, 7U), kStatus_USDHC_TransferDataComplete = MAKE_STATUS(kStatusGroup_USDHC, 8U), kStatus_USDHC_SendCommandSuccess = MAKE_STATUS(kStatusGroup_USDHC, 9U), kStatus_USDHC_TransferDMAComplete = MAKE_STATUS(kStatusGroup_USDHC, 10U) } |
Enum _usdhc_status. More... | |
enum | { kUSDHC_SupportAdmaFlag = USDHC_HOST_CTRL_CAP_ADMAS_MASK, kUSDHC_SupportHighSpeedFlag = USDHC_HOST_CTRL_CAP_HSS_MASK, kUSDHC_SupportDmaFlag = USDHC_HOST_CTRL_CAP_DMAS_MASK, kUSDHC_SupportSuspendResumeFlag = USDHC_HOST_CTRL_CAP_SRS_MASK, kUSDHC_SupportV330Flag = USDHC_HOST_CTRL_CAP_VS33_MASK, kUSDHC_SupportV300Flag = USDHC_HOST_CTRL_CAP_VS30_MASK, kUSDHC_SupportV180Flag = USDHC_HOST_CTRL_CAP_VS18_MASK, kUSDHC_Support4BitFlag = (USDHC_HOST_CTRL_CAP_MBL_SHIFT << 0U), kUSDHC_Support8BitFlag = (USDHC_HOST_CTRL_CAP_MBL_SHIFT << 1U), kUSDHC_SupportDDR50Flag = USDHC_HOST_CTRL_CAP_DDR50_SUPPORT_MASK, kUSDHC_SupportSDR104Flag = USDHC_HOST_CTRL_CAP_SDR104_SUPPORT_MASK, kUSDHC_SupportSDR50Flag = USDHC_HOST_CTRL_CAP_SDR50_SUPPORT_MASK } |
Enum _usdhc_capability_flag. More... | |
enum | { kUSDHC_WakeupEventOnCardInt = USDHC_PROT_CTRL_WECINT_MASK, kUSDHC_WakeupEventOnCardInsert = USDHC_PROT_CTRL_WECINS_MASK, kUSDHC_WakeupEventOnCardRemove = USDHC_PROT_CTRL_WECRM_MASK, kUSDHC_WakeupEventsAll } |
Enum _usdhc_wakeup_event. More... | |
enum | { kUSDHC_ResetAll = USDHC_SYS_CTRL_RSTA_MASK, kUSDHC_ResetCommand = USDHC_SYS_CTRL_RSTC_MASK, kUSDHC_ResetData = USDHC_SYS_CTRL_RSTD_MASK, kUSDHC_ResetTuning = USDHC_SYS_CTRL_RSTT_MASK, kUSDHC_ResetsAll = (kUSDHC_ResetAll | kUSDHC_ResetCommand | kUSDHC_ResetData | kUSDHC_ResetTuning) } |
Enum _usdhc_reset. More... | |
enum | { kUSDHC_EnableDmaFlag = USDHC_MIX_CTRL_DMAEN_MASK, kUSDHC_CommandTypeSuspendFlag = USDHC_CMD_XFR_TYP_CMDTYP(1U), kUSDHC_CommandTypeResumeFlag = USDHC_CMD_XFR_TYP_CMDTYP(2U), kUSDHC_CommandTypeAbortFlag = USDHC_CMD_XFR_TYP_CMDTYP(3U), kUSDHC_EnableBlockCountFlag = USDHC_MIX_CTRL_BCEN_MASK, kUSDHC_EnableAutoCommand12Flag = USDHC_MIX_CTRL_AC12EN_MASK, kUSDHC_DataReadFlag = USDHC_MIX_CTRL_DTDSEL_MASK, kUSDHC_MultipleBlockFlag = USDHC_MIX_CTRL_MSBSEL_MASK, kUSDHC_EnableAutoCommand23Flag = USDHC_MIX_CTRL_AC23EN_MASK, kUSDHC_ResponseLength136Flag = USDHC_CMD_XFR_TYP_RSPTYP(1U), kUSDHC_ResponseLength48Flag = USDHC_CMD_XFR_TYP_RSPTYP(2U), kUSDHC_ResponseLength48BusyFlag = USDHC_CMD_XFR_TYP_RSPTYP(3U), kUSDHC_EnableCrcCheckFlag = USDHC_CMD_XFR_TYP_CCCEN_MASK, kUSDHC_EnableIndexCheckFlag = USDHC_CMD_XFR_TYP_CICEN_MASK, kUSDHC_DataPresentFlag = USDHC_CMD_XFR_TYP_DPSEL_MASK } |
Enum _usdhc_transfer_flag. More... | |
enum | { kUSDHC_CommandInhibitFlag = USDHC_PRES_STATE_CIHB_MASK, kUSDHC_DataInhibitFlag = USDHC_PRES_STATE_CDIHB_MASK, kUSDHC_DataLineActiveFlag = USDHC_PRES_STATE_DLA_MASK, kUSDHC_SdClockStableFlag = USDHC_PRES_STATE_SDSTB_MASK, kUSDHC_WriteTransferActiveFlag = USDHC_PRES_STATE_WTA_MASK, kUSDHC_ReadTransferActiveFlag = USDHC_PRES_STATE_RTA_MASK, kUSDHC_BufferWriteEnableFlag = USDHC_PRES_STATE_BWEN_MASK, kUSDHC_BufferReadEnableFlag = USDHC_PRES_STATE_BREN_MASK, kUSDHC_ReTuningRequestFlag = USDHC_PRES_STATE_RTR_MASK, kUSDHC_DelaySettingFinishedFlag = USDHC_PRES_STATE_TSCD_MASK, kUSDHC_CardInsertedFlag = USDHC_PRES_STATE_CINST_MASK, kUSDHC_CommandLineLevelFlag = USDHC_PRES_STATE_CLSL_MASK, kUSDHC_Data0LineLevelFlag = 1U << USDHC_PRES_STATE_DLSL_SHIFT, kUSDHC_Data1LineLevelFlag = 1U << (USDHC_PRES_STATE_DLSL_SHIFT + 1U), kUSDHC_Data2LineLevelFlag = 1U << (USDHC_PRES_STATE_DLSL_SHIFT + 2U), kUSDHC_Data3LineLevelFlag = 1U << (USDHC_PRES_STATE_DLSL_SHIFT + 3U), kUSDHC_Data4LineLevelFlag = 1U << (USDHC_PRES_STATE_DLSL_SHIFT + 4U), kUSDHC_Data5LineLevelFlag = 1U << (USDHC_PRES_STATE_DLSL_SHIFT + 5U), kUSDHC_Data6LineLevelFlag = 1U << (USDHC_PRES_STATE_DLSL_SHIFT + 6U), kUSDHC_Data7LineLevelFlag = (int)(1U << (USDHC_PRES_STATE_DLSL_SHIFT + 7U)) } |
Enum _usdhc_present_status_flag. More... | |
enum | { kUSDHC_CommandCompleteFlag = USDHC_INT_STATUS_CC_MASK, kUSDHC_DataCompleteFlag = USDHC_INT_STATUS_TC_MASK, kUSDHC_BlockGapEventFlag = USDHC_INT_STATUS_BGE_MASK, kUSDHC_DmaCompleteFlag = USDHC_INT_STATUS_DINT_MASK, kUSDHC_BufferWriteReadyFlag = USDHC_INT_STATUS_BWR_MASK, kUSDHC_BufferReadReadyFlag = USDHC_INT_STATUS_BRR_MASK, kUSDHC_CardInsertionFlag = USDHC_INT_STATUS_CINS_MASK, kUSDHC_CardRemovalFlag = USDHC_INT_STATUS_CRM_MASK, kUSDHC_CardInterruptFlag = USDHC_INT_STATUS_CINT_MASK, kUSDHC_ReTuningEventFlag = USDHC_INT_STATUS_RTE_MASK, kUSDHC_TuningPassFlag = USDHC_INT_STATUS_TP_MASK, kUSDHC_TuningErrorFlag = USDHC_INT_STATUS_TNE_MASK, kUSDHC_CommandTimeoutFlag = USDHC_INT_STATUS_CTOE_MASK, kUSDHC_CommandCrcErrorFlag = USDHC_INT_STATUS_CCE_MASK, kUSDHC_CommandEndBitErrorFlag = USDHC_INT_STATUS_CEBE_MASK, kUSDHC_CommandIndexErrorFlag = USDHC_INT_STATUS_CIE_MASK, kUSDHC_DataTimeoutFlag = USDHC_INT_STATUS_DTOE_MASK, kUSDHC_DataCrcErrorFlag = USDHC_INT_STATUS_DCE_MASK, kUSDHC_DataEndBitErrorFlag = USDHC_INT_STATUS_DEBE_MASK, kUSDHC_AutoCommand12ErrorFlag = USDHC_INT_STATUS_AC12E_MASK, kUSDHC_DmaErrorFlag = USDHC_INT_STATUS_DMAE_MASK, kUSDHC_CommandErrorFlag, kUSDHC_DataErrorFlag, kUSDHC_ErrorFlag = (kUSDHC_CommandErrorFlag | kUSDHC_DataErrorFlag | kUSDHC_DmaErrorFlag), kUSDHC_DataFlag, kUSDHC_DataDMAFlag = (kUSDHC_DataCompleteFlag | kUSDHC_DataErrorFlag | kUSDHC_DmaErrorFlag), kUSDHC_CommandFlag = (kUSDHC_CommandErrorFlag | kUSDHC_CommandCompleteFlag), kUSDHC_CardDetectFlag = (kUSDHC_CardInsertionFlag | kUSDHC_CardRemovalFlag), kUSDHC_SDR104TuningFlag = (kUSDHC_TuningErrorFlag | kUSDHC_TuningPassFlag | kUSDHC_ReTuningEventFlag), kUSDHC_AllInterruptFlags } |
Enum _usdhc_interrupt_status_flag. More... | |
enum | { kUSDHC_AutoCommand12NotExecutedFlag = USDHC_AUTOCMD12_ERR_STATUS_AC12NE_MASK, kUSDHC_AutoCommand12TimeoutFlag = USDHC_AUTOCMD12_ERR_STATUS_AC12TOE_MASK, kUSDHC_AutoCommand12EndBitErrorFlag = USDHC_AUTOCMD12_ERR_STATUS_AC12EBE_MASK, kUSDHC_AutoCommand12CrcErrorFlag = USDHC_AUTOCMD12_ERR_STATUS_AC12CE_MASK, kUSDHC_AutoCommand12IndexErrorFlag = USDHC_AUTOCMD12_ERR_STATUS_AC12IE_MASK, kUSDHC_AutoCommand12NotIssuedFlag = USDHC_AUTOCMD12_ERR_STATUS_CNIBAC12E_MASK } |
Enum _usdhc_auto_command12_error_status_flag. More... | |
enum | { kUSDHC_ExecuteTuning = USDHC_AUTOCMD12_ERR_STATUS_EXECUTE_TUNING_MASK, kUSDHC_TuningSampleClockSel } |
Enum _usdhc_standard_tuning. More... | |
enum | { kUSDHC_AdmaLenghMismatchFlag = USDHC_ADMA_ERR_STATUS_ADMALME_MASK, kUSDHC_AdmaDescriptorErrorFlag = USDHC_ADMA_ERR_STATUS_ADMADCE_MASK } |
Enum _usdhc_adma_error_status_flag. More... | |
enum | { kUSDHC_AdmaErrorStateStopDma = 0x00U, kUSDHC_AdmaErrorStateFetchDescriptor = 0x01U, kUSDHC_AdmaErrorStateChangeAddress = 0x02U, kUSDHC_AdmaErrorStateTransferData = 0x03U, kUSDHC_AdmaErrorStateInvalidLength = 0x04U, kUSDHC_AdmaErrorStateInvalidDescriptor = 0x08U, kUSDHC_AdmaErrorState } |
Enum _usdhc_adma_error_state. More... | |
enum | { kUSDHC_ForceEventAutoCommand12NotExecuted, kUSDHC_ForceEventAutoCommand12Timeout = USDHC_FORCE_EVENT_FEVTAC12TOE_MASK, kUSDHC_ForceEventAutoCommand12CrcError = USDHC_FORCE_EVENT_FEVTAC12CE_MASK, kUSDHC_ForceEventEndBitError = USDHC_FORCE_EVENT_FEVTAC12EBE_MASK, kUSDHC_ForceEventAutoCommand12IndexError = USDHC_FORCE_EVENT_FEVTAC12IE_MASK, kUSDHC_ForceEventAutoCommand12NotIssued = USDHC_FORCE_EVENT_FEVTCNIBAC12E_MASK, kUSDHC_ForceEventCommandTimeout = USDHC_FORCE_EVENT_FEVTCTOE_MASK, kUSDHC_ForceEventCommandCrcError = USDHC_FORCE_EVENT_FEVTCCE_MASK, kUSDHC_ForceEventCommandEndBitError = USDHC_FORCE_EVENT_FEVTCEBE_MASK, kUSDHC_ForceEventCommandIndexError = USDHC_FORCE_EVENT_FEVTCIE_MASK, kUSDHC_ForceEventDataTimeout = USDHC_FORCE_EVENT_FEVTDTOE_MASK, kUSDHC_ForceEventDataCrcError = USDHC_FORCE_EVENT_FEVTDCE_MASK, kUSDHC_ForceEventDataEndBitError = USDHC_FORCE_EVENT_FEVTDEBE_MASK, kUSDHC_ForceEventAutoCommand12Error = USDHC_FORCE_EVENT_FEVTAC12E_MASK, kUSDHC_ForceEventCardInt = (int)USDHC_FORCE_EVENT_FEVTCINT_MASK, kUSDHC_ForceEventDmaError = USDHC_FORCE_EVENT_FEVTDMAE_MASK, kUSDHC_ForceEventTuningError = USDHC_FORCE_EVENT_FEVTTNE_MASK, kUSDHC_ForceEventsAll } |
Enum _usdhc_force_event. More... | |
enum | usdhc_transfer_direction_t { kUSDHC_TransferDirectionReceive = 1U, kUSDHC_TransferDirectionSend = 0U } |
Data transfer direction. More... | |
enum | usdhc_data_bus_width_t { kUSDHC_DataBusWidth1Bit = 0U, kUSDHC_DataBusWidth4Bit = 1U, kUSDHC_DataBusWidth8Bit = 2U } |
Data transfer width. More... | |
enum | usdhc_endian_mode_t { kUSDHC_EndianModeBig = 0U, kUSDHC_EndianModeHalfWordBig = 1U, kUSDHC_EndianModeLittle = 2U } |
Endian mode. More... | |
enum | usdhc_dma_mode_t { kUSDHC_DmaModeSimple = 0U, kUSDHC_DmaModeAdma1 = 1U, kUSDHC_DmaModeAdma2 = 2U, kUSDHC_ExternalDMA = 3U } |
DMA mode. More... | |
enum | { kUSDHC_StopAtBlockGapFlag = USDHC_PROT_CTRL_SABGREQ_MASK, kUSDHC_ReadWaitControlFlag = USDHC_PROT_CTRL_RWCTL_MASK, kUSDHC_InterruptAtBlockGapFlag = USDHC_PROT_CTRL_IABG_MASK, kUSDHC_ReadDoneNo8CLK = USDHC_PROT_CTRL_RD_DONE_NO_8CLK_MASK, kUSDHC_ExactBlockNumberReadFlag = USDHC_PROT_CTRL_NON_EXACT_BLK_RD_MASK } |
Enum _usdhc_sdio_control_flag. More... | |
enum | usdhc_boot_mode_t { kUSDHC_BootModeNormal = 0U, kUSDHC_BootModeAlternative = 1U } |
MMC card boot mode. More... | |
enum | usdhc_card_command_type_t { kCARD_CommandTypeNormal = 0U, kCARD_CommandTypeSuspend = 1U, kCARD_CommandTypeResume = 2U, kCARD_CommandTypeAbort = 3U, kCARD_CommandTypeEmpty = 4U } |
The command type. More... | |
enum | usdhc_card_response_type_t { kCARD_ResponseTypeNone = 0U, kCARD_ResponseTypeR1 = 1U, kCARD_ResponseTypeR1b = 2U, kCARD_ResponseTypeR2 = 3U, kCARD_ResponseTypeR3 = 4U, kCARD_ResponseTypeR4 = 5U, kCARD_ResponseTypeR5 = 6U, kCARD_ResponseTypeR5b = 7U, kCARD_ResponseTypeR6 = 8U, kCARD_ResponseTypeR7 = 9U } |
The command response type. More... | |
enum | { kUSDHC_Adma1DescriptorValidFlag = (1U << 0U), kUSDHC_Adma1DescriptorEndFlag = (1U << 1U), kUSDHC_Adma1DescriptorInterrupFlag = (1U << 2U), kUSDHC_Adma1DescriptorActivity1Flag = (1U << 4U), kUSDHC_Adma1DescriptorActivity2Flag = (1U << 5U), kUSDHC_Adma1DescriptorTypeNop = (kUSDHC_Adma1DescriptorValidFlag), kUSDHC_Adma1DescriptorTypeTransfer = (kUSDHC_Adma1DescriptorActivity2Flag | kUSDHC_Adma1DescriptorValidFlag), kUSDHC_Adma1DescriptorTypeLink, kUSDHC_Adma1DescriptorTypeSetLength = (kUSDHC_Adma1DescriptorActivity1Flag | kUSDHC_Adma1DescriptorValidFlag) } |
Enum _usdhc_adma1_descriptor_flag. More... | |
enum | { kUSDHC_Adma2DescriptorValidFlag = (1U << 0U), kUSDHC_Adma2DescriptorEndFlag = (1U << 1U), kUSDHC_Adma2DescriptorInterruptFlag = (1U << 2U), kUSDHC_Adma2DescriptorActivity1Flag = (1U << 4U), kUSDHC_Adma2DescriptorActivity2Flag = (1U << 5U), kUSDHC_Adma2DescriptorTypeNop = (kUSDHC_Adma2DescriptorValidFlag), kUSDHC_Adma2DescriptorTypeReserved = (kUSDHC_Adma2DescriptorActivity1Flag | kUSDHC_Adma2DescriptorValidFlag), kUSDHC_Adma2DescriptorTypeTransfer = (kUSDHC_Adma2DescriptorActivity2Flag | kUSDHC_Adma2DescriptorValidFlag), kUSDHC_Adma2DescriptorTypeLink } |
Enum _usdhc_adma2_descriptor_flag. More... | |
enum | { kUSDHC_AdmaDescriptorSingleFlag = 0U, kUSDHC_AdmaDescriptorMultipleFlag } |
Enum _usdhc_adma_flag. More... | |
enum | usdhc_burst_len_t { kUSDHC_EnBurstLenForINCR = 0x01U, kUSDHC_EnBurstLenForINCR4816 = 0x02U, kUSDHC_EnBurstLenForINCR4816WRAP = 0x04U } |
DMA transfer burst len config. More... | |
enum | { kUSDHC_TransferDataNormal = 0U, kUSDHC_TransferDataTuning = 1U, kUSDHC_TransferDataBoot = 2U, kUSDHC_TransferDataBootcontinous = 3U } |
Enum _usdhc_transfer_data_type. More... | |
Driver version | |
#define | FSL_USDHC_DRIVER_VERSION (MAKE_VERSION(2U, 7U, 0U)) |
Driver version 2.7.0. More... | |
Initialization and deinitialization | |
void | USDHC_Init (USDHC_Type *base, const usdhc_config_t *config) |
USDHC module initialization function. More... | |
void | USDHC_Deinit (USDHC_Type *base) |
Deinitializes the USDHC. More... | |
bool | USDHC_Reset (USDHC_Type *base, uint32_t mask, uint32_t timeout) |
Resets the USDHC. More... | |
DMA Control | |
status_t | USDHC_SetAdmaTableConfig (USDHC_Type *base, usdhc_adma_config_t *dmaConfig, usdhc_data_t *dataConfig, uint32_t flags) |
Sets the DMA descriptor table configuration. More... | |
status_t | USDHC_SetInternalDmaConfig (USDHC_Type *base, usdhc_adma_config_t *dmaConfig, const uint32_t *dataAddr, bool enAutoCmd23) |
Internal DMA configuration. More... | |
status_t | USDHC_SetADMA2Descriptor (uint32_t *admaTable, uint32_t admaTableWords, const uint32_t *dataBufferAddr, uint32_t dataBytes, uint32_t flags) |
Sets the ADMA2 descriptor table configuration. More... | |
status_t | USDHC_SetADMA1Descriptor (uint32_t *admaTable, uint32_t admaTableWords, const uint32_t *dataBufferAddr, uint32_t dataBytes, uint32_t flags) |
Sets the ADMA1 descriptor table configuration. More... | |
static void | USDHC_EnableInternalDMA (USDHC_Type *base, bool enable) |
Enables internal DMA. More... | |
Interrupts | |
static void | USDHC_EnableInterruptStatus (USDHC_Type *base, uint32_t mask) |
Enables the interrupt status. More... | |
static void | USDHC_DisableInterruptStatus (USDHC_Type *base, uint32_t mask) |
Disables the interrupt status. More... | |
static void | USDHC_EnableInterruptSignal (USDHC_Type *base, uint32_t mask) |
Enables the interrupt signal corresponding to the interrupt status flag. More... | |
static void | USDHC_DisableInterruptSignal (USDHC_Type *base, uint32_t mask) |
Disables the interrupt signal corresponding to the interrupt status flag. More... | |
Status | |
static uint32_t | USDHC_GetEnabledInterruptStatusFlags (USDHC_Type *base) |
Gets the enabled interrupt status. More... | |
static uint32_t | USDHC_GetInterruptStatusFlags (USDHC_Type *base) |
Gets the current interrupt status. More... | |
static void | USDHC_ClearInterruptStatusFlags (USDHC_Type *base, uint32_t mask) |
Clears a specified interrupt status. More... | |
static uint32_t | USDHC_GetAutoCommand12ErrorStatusFlags (USDHC_Type *base) |
Gets the status of auto command 12 error. More... | |
static uint32_t | USDHC_GetAdmaErrorStatusFlags (USDHC_Type *base) |
Gets the status of the ADMA error. More... | |
static uint32_t | USDHC_GetPresentStatusFlags (USDHC_Type *base) |
Gets a present status. More... | |
Bus Operations | |
void | USDHC_GetCapability (USDHC_Type *base, usdhc_capability_t *capability) |
Gets the capability information. More... | |
static void | USDHC_ForceClockOn (USDHC_Type *base, bool enable) |
Forces the card clock on. More... | |
uint32_t | USDHC_SetSdClock (USDHC_Type *base, uint32_t srcClock_Hz, uint32_t busClock_Hz) |
Sets the SD bus clock frequency. More... | |
bool | USDHC_SetCardActive (USDHC_Type *base, uint32_t timeout) |
Sends 80 clocks to the card to set it to the active state. More... | |
static void | USDHC_AssertHardwareReset (USDHC_Type *base, bool high) |
Triggers a hardware reset. More... | |
static void | USDHC_SetDataBusWidth (USDHC_Type *base, usdhc_data_bus_width_t width) |
Sets the data transfer width. More... | |
static void | USDHC_WriteData (USDHC_Type *base, uint32_t data) |
Fills the data port. More... | |
static uint32_t | USDHC_ReadData (USDHC_Type *base) |
Retrieves the data from the data port. More... | |
void | USDHC_SendCommand (USDHC_Type *base, usdhc_command_t *command) |
Sends command function. More... | |
static void | USDHC_EnableWakeupEvent (USDHC_Type *base, uint32_t mask, bool enable) |
Enables or disables a wakeup event in low-power mode. More... | |
static void | USDHC_CardDetectByData3 (USDHC_Type *base, bool enable) |
Detects card insert status. More... | |
static bool | USDHC_DetectCardInsert (USDHC_Type *base) |
Detects card insert status. More... | |
static void | USDHC_EnableSdioControl (USDHC_Type *base, uint32_t mask, bool enable) |
Enables or disables the SDIO card control. More... | |
static void | USDHC_SetContinueRequest (USDHC_Type *base) |
Restarts a transaction which has stopped at the block GAP for the SDIO card. More... | |
static void | USDHC_RequestStopAtBlockGap (USDHC_Type *base, bool enable) |
Request stop at block gap function. More... | |
void | USDHC_SetMmcBootConfig (USDHC_Type *base, const usdhc_boot_config_t *config) |
Configures the MMC boot feature. More... | |
static void | USDHC_EnableMmcBoot (USDHC_Type *base, bool enable) |
Enables or disables the mmc boot mode. More... | |
static void | USDHC_SetForceEvent (USDHC_Type *base, uint32_t mask) |
Forces generating events according to the given mask. More... | |
static void | UDSHC_SelectVoltage (USDHC_Type *base, bool en18v) |
Selects the USDHC output voltage. More... | |
static bool | USDHC_RequestTuningForSDR50 (USDHC_Type *base) |
Checks the SDR50 mode request tuning bit. More... | |
static bool | USDHC_RequestReTuning (USDHC_Type *base) |
Checks the request re-tuning bit. More... | |
static void | USDHC_EnableAutoTuning (USDHC_Type *base, bool enable) |
The SDR104 mode auto tuning enable and disable. More... | |
void | USDHC_EnableAutoTuningForCmdAndData (USDHC_Type *base) |
The auto tuning enbale for CMD/DATA line. More... | |
void | USDHC_EnableManualTuning (USDHC_Type *base, bool enable) |
Manual tuning trigger or abort. More... | |
status_t | USDHC_AdjustDelayForManualTuning (USDHC_Type *base, uint32_t delay) |
Adjusts delay for mannual tuning. More... | |
static void | USDHC_SetStandardTuningCounter (USDHC_Type *base, uint8_t counter) |
set tuning counter tuning. More... | |
void | USDHC_EnableStandardTuning (USDHC_Type *base, uint32_t tuningStartTap, uint32_t step, bool enable) |
The enable standard tuning function. More... | |
static uint32_t | USDHC_GetExecuteStdTuningStatus (USDHC_Type *base) |
Gets execute STD tuning status. More... | |
static uint32_t | USDHC_CheckStdTuningResult (USDHC_Type *base) |
Checks STD tuning result. More... | |
static uint32_t | USDHC_CheckTuningError (USDHC_Type *base) |
Checks tuning error. More... | |
void | USDHC_EnableDDRMode (USDHC_Type *base, bool enable, uint32_t nibblePos) |
The enable/disable DDR mode. More... | |
static void | USDHC_EnableHS400Mode (USDHC_Type *base, bool enable) |
The enable/disable HS400 mode. More... | |
static void | USDHC_ResetStrobeDLL (USDHC_Type *base) |
Resets the strobe DLL. More... | |
static void | USDHC_EnableStrobeDLL (USDHC_Type *base, bool enable) |
Enables/disables the strobe DLL. More... | |
void | USDHC_ConfigStrobeDLL (USDHC_Type *base, uint32_t delayTarget, uint32_t updateInterval) |
Configs the strobe DLL delay target and update interval. More... | |
static void | USDHC_SetStrobeDllOverride (USDHC_Type *base, uint32_t delayTaps) |
Enables manual override for slave delay chain using STROBE_SLV_OVERRIDE_VAL. More... | |
static uint32_t | USDHC_GetStrobeDLLStatus (USDHC_Type *base) |
Gets the strobe DLL status. More... | |
void | USDHC_SetDataConfig (USDHC_Type *base, usdhc_transfer_direction_t dataDirection, uint32_t blockCount, uint32_t blockSize) |
USDHC data configuration. More... | |
Transactional functions | |
void | USDHC_TransferCreateHandle (USDHC_Type *base, usdhc_handle_t *handle, const usdhc_transfer_callback_t *callback, void *userData) |
Creates the USDHC handle. More... | |
status_t | USDHC_TransferNonBlocking (USDHC_Type *base, usdhc_handle_t *handle, usdhc_adma_config_t *dmaConfig, usdhc_transfer_t *transfer) |
Transfers the command/data using an interrupt and an asynchronous method. More... | |
status_t | USDHC_TransferBlocking (USDHC_Type *base, usdhc_adma_config_t *dmaConfig, usdhc_transfer_t *transfer) |
Transfers the command/data using a blocking method. More... | |
void | USDHC_TransferHandleIRQ (USDHC_Type *base, usdhc_handle_t *handle) |
IRQ handler for the USDHC. More... | |
struct usdhc_adma2_descriptor_t |
struct usdhc_capability_t |
Defines a structure to save the capability information of USDHC.
Data Fields | |
uint32_t | sdVersion |
Support SD card/sdio version. More... | |
uint32_t | mmcVersion |
Support EMMC card version. More... | |
uint32_t | maxBlockLength |
Maximum block length united as byte. More... | |
uint32_t | maxBlockCount |
Maximum block count can be set one time. More... | |
uint32_t | flags |
Capability flags to indicate the support information(_usdhc_capability_flag). More... | |
uint32_t usdhc_capability_t::sdVersion |
uint32_t usdhc_capability_t::mmcVersion |
uint32_t usdhc_capability_t::maxBlockLength |
uint32_t usdhc_capability_t::maxBlockCount |
uint32_t usdhc_capability_t::flags |
struct usdhc_boot_config_t |
Data Fields | |
uint32_t | ackTimeoutCount |
Timeout value for the boot ACK. More... | |
usdhc_boot_mode_t | bootMode |
Boot mode selection. More... | |
uint32_t | blockCount |
Stop at block gap value of automatic mode. More... | |
size_t | blockSize |
Block size. More... | |
bool | enableBootAck |
Enable or disable boot ACK. More... | |
bool | enableAutoStopAtBlockGap |
Enable or disable auto stop at block gap function in boot period. More... | |
uint32_t usdhc_boot_config_t::ackTimeoutCount |
The available range is 0 ~ 15.
usdhc_boot_mode_t usdhc_boot_config_t::bootMode |
uint32_t usdhc_boot_config_t::blockCount |
Available range is 0 ~ 65535.
size_t usdhc_boot_config_t::blockSize |
bool usdhc_boot_config_t::enableBootAck |
bool usdhc_boot_config_t::enableAutoStopAtBlockGap |
struct usdhc_config_t |
Data Fields | |
uint32_t | dataTimeout |
Data timeout value. More... | |
usdhc_endian_mode_t | endianMode |
Endian mode. More... | |
uint8_t | readWatermarkLevel |
Watermark level for DMA read operation. More... | |
uint8_t | writeWatermarkLevel |
Watermark level for DMA write operation. More... | |
uint32_t usdhc_config_t::dataTimeout |
usdhc_endian_mode_t usdhc_config_t::endianMode |
uint8_t usdhc_config_t::readWatermarkLevel |
Available range is 1 ~ 128.
uint8_t usdhc_config_t::writeWatermarkLevel |
Available range is 1 ~ 128.
struct usdhc_command_t |
Defines card command-related attribute.
Data Fields | |
uint32_t | index |
Command index. More... | |
uint32_t | argument |
Command argument. More... | |
usdhc_card_command_type_t | type |
Command type. More... | |
usdhc_card_response_type_t | responseType |
Command response type. More... | |
uint32_t | response [4U] |
Response for this command. More... | |
uint32_t | responseErrorFlags |
Response error flag, which need to check the command reponse. More... | |
uint32_t | flags |
Cmd flags. More... | |
uint32_t usdhc_command_t::index |
uint32_t usdhc_command_t::argument |
usdhc_card_command_type_t usdhc_command_t::type |
usdhc_card_response_type_t usdhc_command_t::responseType |
uint32_t usdhc_command_t::response[4U] |
uint32_t usdhc_command_t::responseErrorFlags |
uint32_t usdhc_command_t::flags |
struct usdhc_adma_config_t |
Data Fields | |
usdhc_dma_mode_t | dmaMode |
DMA mode. More... | |
uint32_t * | admaTable |
ADMA table address, can't be null if transfer way is ADMA1/ADMA2. More... | |
uint32_t | admaTableWords |
ADMA table length united as words, can't be 0 if transfer way is ADMA1/ADMA2. More... | |
usdhc_dma_mode_t usdhc_adma_config_t::dmaMode |
uint32_t* usdhc_adma_config_t::admaTable |
uint32_t usdhc_adma_config_t::admaTableWords |
struct usdhc_scatter_gather_data_list_t |
Allow application register uncontinuous data buffer for data transfer.
struct usdhc_scatter_gather_data_t |
Defines a structure to contain data-related attribute. The 'enableIgnoreError' is used when upper card driver wants to ignore the error event to read/write all the data and not to stop read/write immediately when an error event happens. For example, bus testing procedure for MMC card.
Data Fields | |
bool | enableAutoCommand12 |
Enable auto CMD12. More... | |
bool | enableAutoCommand23 |
Enable auto CMD23. More... | |
bool | enableIgnoreError |
Enable to ignore error event to read/write all the data. More... | |
usdhc_transfer_direction_t | dataDirection |
data direction | |
uint8_t | dataType |
this is used to distinguish the normal/tuning/boot data. More... | |
size_t | blockSize |
Block size. More... | |
usdhc_scatter_gather_data_list_t | sgData |
scatter gather data | |
bool usdhc_scatter_gather_data_t::enableAutoCommand12 |
bool usdhc_scatter_gather_data_t::enableAutoCommand23 |
bool usdhc_scatter_gather_data_t::enableIgnoreError |
uint8_t usdhc_scatter_gather_data_t::dataType |
size_t usdhc_scatter_gather_data_t::blockSize |
struct usdhc_scatter_gather_transfer_t |
Data Fields | |
usdhc_scatter_gather_data_t * | data |
Data to transfer. More... | |
usdhc_command_t * | command |
Command to send. More... | |
usdhc_scatter_gather_data_t* usdhc_scatter_gather_transfer_t::data |
usdhc_command_t* usdhc_scatter_gather_transfer_t::command |
struct usdhc_data_t |
Defines a structure to contain data-related attribute. The 'enableIgnoreError' is used when upper card driver wants to ignore the error event to read/write all the data and not to stop read/write immediately when an error event happens. For example, bus testing procedure for MMC card.
Data Fields | |
bool | enableAutoCommand12 |
Enable auto CMD12. More... | |
bool | enableAutoCommand23 |
Enable auto CMD23. More... | |
bool | enableIgnoreError |
Enable to ignore error event to read/write all the data. More... | |
uint8_t | dataType |
this is used to distinguish the normal/tuning/boot data. More... | |
size_t | blockSize |
Block size. More... | |
uint32_t | blockCount |
Block count. More... | |
uint32_t * | rxData |
Buffer to save data read. More... | |
const uint32_t * | txData |
Data buffer to write. More... | |
bool usdhc_data_t::enableAutoCommand12 |
bool usdhc_data_t::enableAutoCommand23 |
bool usdhc_data_t::enableIgnoreError |
uint8_t usdhc_data_t::dataType |
size_t usdhc_data_t::blockSize |
uint32_t usdhc_data_t::blockCount |
uint32_t* usdhc_data_t::rxData |
const uint32_t* usdhc_data_t::txData |
struct usdhc_transfer_t |
Data Fields | |
usdhc_data_t * | data |
Data to transfer. More... | |
usdhc_command_t * | command |
Command to send. More... | |
usdhc_data_t* usdhc_transfer_t::data |
usdhc_command_t* usdhc_transfer_t::command |
struct usdhc_transfer_callback_t |
Data Fields | |
void(* | CardInserted )(USDHC_Type *base, void *userData) |
Card inserted occurs when DAT3/CD pin is for card detect. | |
void(* | CardRemoved )(USDHC_Type *base, void *userData) |
Card removed occurs. | |
void(* | SdioInterrupt )(USDHC_Type *base, void *userData) |
SDIO card interrupt occurs. | |
void(* | BlockGap )(USDHC_Type *base, void *userData) |
stopped at block gap event | |
void(* | TransferComplete )(USDHC_Type *base, usdhc_handle_t *handle, status_t status, void *userData) |
Transfer complete callback. More... | |
void(* | ReTuning )(USDHC_Type *base, void *userData) |
Handle the re-tuning. More... | |
void(* usdhc_transfer_callback_t::TransferComplete)(USDHC_Type *base, usdhc_handle_t *handle, status_t status, void *userData) |
void(* usdhc_transfer_callback_t::ReTuning)(USDHC_Type *base, void *userData) |
struct _usdhc_handle |
USDHC handle typedef.
Defines the structure to save the USDHC state information and callback function.
Data Fields | |
usdhc_data_t *volatile | data |
Transfer parameter. More... | |
usdhc_command_t *volatile | command |
Transfer parameter. More... | |
volatile uint32_t | transferredWords |
Transfer status. More... | |
usdhc_transfer_callback_t | callback |
Callback function. More... | |
void * | userData |
Parameter for transfer complete callback. More... | |
usdhc_data_t* volatile usdhc_handle_t::data |
Data to transfer.
usdhc_command_t* volatile usdhc_handle_t::command |
Command to send.
volatile uint32_t usdhc_handle_t::transferredWords |
Words transferred by DATAPORT way.
usdhc_transfer_callback_t usdhc_handle_t::callback |
void* usdhc_handle_t::userData |
struct usdhc_host_t |
Data Fields | |
USDHC_Type * | base |
USDHC peripheral base address. More... | |
uint32_t | sourceClock_Hz |
USDHC source clock frequency united in Hz. More... | |
usdhc_config_t | config |
USDHC configuration. More... | |
usdhc_capability_t | capability |
USDHC capability information. More... | |
usdhc_transfer_function_t | transfer |
USDHC transfer function. More... | |
USDHC_Type* usdhc_host_t::base |
uint32_t usdhc_host_t::sourceClock_Hz |
usdhc_config_t usdhc_host_t::config |
usdhc_capability_t usdhc_host_t::capability |
usdhc_transfer_function_t usdhc_host_t::transfer |
#define FSL_USDHC_DRIVER_VERSION (MAKE_VERSION(2U, 7U, 0U)) |
#define USDHC_ADMA1_ADDRESS_ALIGN (4096U) |
#define USDHC_ADMA1_LENGTH_ALIGN (4096U) |
#define USDHC_ADMA2_ADDRESS_ALIGN (4U) |
#define USDHC_ADMA2_LENGTH_ALIGN (4U) |
#define USDHC_ADMA1_DESCRIPTOR_ADDRESS_SHIFT (12U) |
Address/page field | Reserved | Attribute | |||||
---|---|---|---|---|---|---|---|
31 12 | 11 6 | 05 | 04 | 03 | 02 | 01 | 00 |
address or data length | 000000 | Act2 | Act1 | 0 | Int | End | Valid |
Act2 | Act1 | Comment | 31-28 | 27-12 |
---|---|---|---|---|
0 | 0 | No op | Don't care | |
0 | 1 | Set data length | 0000 | Data Length |
1 | 0 | Transfer data | Data address | |
1 | 1 | Link descriptor | Descriptor address |
#define USDHC_ADMA1_DESCRIPTOR_ADDRESS_MASK (0xFFFFFU) |
#define USDHC_ADMA1_DESCRIPTOR_LENGTH_SHIFT (12U) |
#define USDHC_ADMA1_DESCRIPTOR_LENGTH_MASK (0xFFFFU) |
#define USDHC_ADMA1_DESCRIPTOR_MAX_LENGTH_PER_ENTRY (USDHC_ADMA1_DESCRIPTOR_LENGTH_MASK + 1U - 4096U) |
Since the max transfer size ADMA1 support is 65535 which is indivisible by 4096, so to make sure a large data load transfer (>64KB) continuously (require the data address be always align with 4096), software will set the maximum data length for ADMA1 to (64 - 4)KB.
#define USDHC_ADMA2_DESCRIPTOR_LENGTH_SHIFT (16U) |
Address field | Length | Reserved | Attribute | |||||
---|---|---|---|---|---|---|---|---|
63 32 | 31 16 | 15 06 | 05 | 04 | 03 | 02 | 01 | 00 |
32-bit address | 16-bit length | 0000000000 | Act2 | Act1 | 0 | Int | End | Valid |
Act2 | Act1 | Comment | Operation |
---|---|---|---|
0 | 0 | No op | Don't care |
0 | 1 | Reserved | Read this line and go to next one |
1 | 0 | Transfer data | Transfer data with address and length set in this descriptor line |
1 | 1 | Link descriptor | Link to another descriptor |
#define USDHC_ADMA2_DESCRIPTOR_LENGTH_MASK (0xFFFFU) |
#define USDHC_ADMA2_DESCRIPTOR_MAX_LENGTH_PER_ENTRY (USDHC_ADMA2_DESCRIPTOR_LENGTH_MASK - 3U) |
typedef uint32_t usdhc_adma1_descriptor_t |
typedef status_t(* usdhc_transfer_function_t)(USDHC_Type *base, usdhc_transfer_t *content) |
anonymous enum |
USDHC status.
anonymous enum |
Host controller capabilities flag mask.
anonymous enum |
anonymous enum |
anonymous enum |
Transfer flag mask.
anonymous enum |
anonymous enum |
anonymous enum |
Auto CMD12 error status flag mask.
anonymous enum |
anonymous enum |
anonymous enum |
ADMA error state.
This state is the detail state when ADMA error has occurred.
anonymous enum |
enum usdhc_endian_mode_t |
enum usdhc_dma_mode_t |
anonymous enum |
enum usdhc_boot_mode_t |
Defines the command response type from card to host controller.
anonymous enum |
The mask for the control/status field in ADMA1 descriptor.
anonymous enum |
ADMA1 descriptor control and status mask.
anonymous enum |
ADMA descriptor configuration flag.
enum usdhc_burst_len_t |
anonymous enum |
void USDHC_Init | ( | USDHC_Type * | base, |
const usdhc_config_t * | config | ||
) |
Configures the USDHC according to the user configuration.
Example:
base | USDHC peripheral base address. |
config | USDHC configuration information. |
kStatus_Success | Operate successfully. |
void USDHC_Deinit | ( | USDHC_Type * | base | ) |
base | USDHC peripheral base address. |
bool USDHC_Reset | ( | USDHC_Type * | base, |
uint32_t | mask, | ||
uint32_t | timeout | ||
) |
base | USDHC peripheral base address. |
mask | The reset type mask(_usdhc_reset). |
timeout | Timeout for reset. |
true | Reset successfully. |
false | Reset failed. |
status_t USDHC_SetAdmaTableConfig | ( | USDHC_Type * | base, |
usdhc_adma_config_t * | dmaConfig, | ||
usdhc_data_t * | dataConfig, | ||
uint32_t | flags | ||
) |
A high level DMA descriptor configuration function.
base | USDHC peripheral base address. |
dmaConfig | ADMA configuration |
dataConfig | Data descriptor |
flags | ADAM descriptor flag, used to indicate to create multiple or single descriptor, please refer to enum _usdhc_adma_flag. |
kStatus_OutOfRange | ADMA descriptor table length isn't enough to describe data. |
kStatus_Success | Operate successfully. |
status_t USDHC_SetInternalDmaConfig | ( | USDHC_Type * | base, |
usdhc_adma_config_t * | dmaConfig, | ||
const uint32_t * | dataAddr, | ||
bool | enAutoCmd23 | ||
) |
This function is used to config the USDHC DMA related registers.
base | USDHC peripheral base address. |
dmaConfig | ADMA configuration. |
dataAddr | Transfer data address, a simple DMA parameter, if ADMA is used, leave it to NULL. |
enAutoCmd23 | Flag to indicate Auto CMD23 is enable or not, a simple DMA parameter, if ADMA is used, leave it to false. |
kStatus_OutOfRange | ADMA descriptor table length isn't enough to describe data. |
kStatus_Success | Operate successfully. |
status_t USDHC_SetADMA2Descriptor | ( | uint32_t * | admaTable, |
uint32_t | admaTableWords, | ||
const uint32_t * | dataBufferAddr, | ||
uint32_t | dataBytes, | ||
uint32_t | flags | ||
) |
admaTable | ADMA table address. |
admaTableWords | ADMA table length. |
dataBufferAddr | Data buffer address. |
dataBytes | Data Data length. |
flags | ADAM descriptor flag, used to indicate to create multiple or single descriptor, please refer to enum _usdhc_adma_flag. |
kStatus_OutOfRange | ADMA descriptor table length isn't enough to describe data. |
kStatus_Success | Operate successfully. |
status_t USDHC_SetADMA1Descriptor | ( | uint32_t * | admaTable, |
uint32_t | admaTableWords, | ||
const uint32_t * | dataBufferAddr, | ||
uint32_t | dataBytes, | ||
uint32_t | flags | ||
) |
admaTable | ADMA table address. |
admaTableWords | ADMA table length. |
dataBufferAddr | Data buffer address. |
dataBytes | Data length. |
flags | ADAM descriptor flag, used to indicate to create multiple or single descriptor, please refer to enum _usdhc_adma_flag. |
kStatus_OutOfRange | ADMA descriptor table length isn't enough to describe data. |
kStatus_Success | Operate successfully. |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | enable or disable flag |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | Interrupt status flags mask(_usdhc_interrupt_status_flag). |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | The interrupt status flags mask(_usdhc_interrupt_status_flag). |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | The interrupt status flags mask(_usdhc_interrupt_status_flag). |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | The interrupt status flags mask(_usdhc_interrupt_status_flag). |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
write 1 clears
base | USDHC peripheral base address. |
mask | The interrupt status flags mask(_usdhc_interrupt_status_flag). |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
This function gets the present USDHC's status except for an interrupt status and an error status.
base | USDHC peripheral base address. |
void USDHC_GetCapability | ( | USDHC_Type * | base, |
usdhc_capability_t * | capability | ||
) |
base | USDHC peripheral base address. |
capability | Structure to save capability information. |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | enable/disable flag |
uint32_t USDHC_SetSdClock | ( | USDHC_Type * | base, |
uint32_t | srcClock_Hz, | ||
uint32_t | busClock_Hz | ||
) |
base | USDHC peripheral base address. |
srcClock_Hz | USDHC source clock frequency united in Hz. |
busClock_Hz | SD bus clock frequency united in Hz. |
bool USDHC_SetCardActive | ( | USDHC_Type * | base, |
uint32_t | timeout | ||
) |
This function must be called each time the card is inserted to ensure that the card can receive the command correctly.
base | USDHC peripheral base address. |
timeout | Timeout to initialize card. |
true | Set card active successfully. |
false | Set card active failed. |
|
inlinestatic |
base | USDHC peripheral base address. |
high | 1 or 0 level |
|
inlinestatic |
base | USDHC peripheral base address. |
width | Data transfer width. |
|
inlinestatic |
This function is used to implement the data transfer by Data Port instead of DMA.
base | USDHC peripheral base address. |
data | The data about to be sent. |
|
inlinestatic |
This function is used to implement the data transfer by Data Port instead of DMA.
base | USDHC peripheral base address. |
void USDHC_SendCommand | ( | USDHC_Type * | base, |
usdhc_command_t * | command | ||
) |
base | USDHC peripheral base address. |
command | configuration |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | Wakeup events mask(_usdhc_wakeup_event). |
enable | True to enable, false to disable. |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | enable/disable flag |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | SDIO card control flags mask(_usdhc_sdio_control_flag). |
enable | True to enable, false to disable. |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | True to stop at block gap, false to normal transfer. |
void USDHC_SetMmcBootConfig | ( | USDHC_Type * | base, |
const usdhc_boot_config_t * | config | ||
) |
Example:
base | USDHC peripheral base address. |
config | The MMC boot configuration information. |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | True to enable, false to disable. |
|
inlinestatic |
base | USDHC peripheral base address. |
mask | The force events bit posistion (_usdhc_force_event). |
|
inlinestatic |
base | USDHC peripheral base address. |
en18v | True means 1.8V, false means 3.0V. |
|
inlinestatic |
When this bit set, application shall perform tuning for SDR50 mode.
base | USDHC peripheral base address. |
|
inlinestatic |
When this bit is set, user should do manual tuning or standard tuning function.
base | USDHC peripheral base address. |
|
inlinestatic |
This function should be called after tuning function execute pass, auto tuning will handle by hardware.
base | USDHC peripheral base address. |
enable | enable/disable flag |
void USDHC_EnableAutoTuningForCmdAndData | ( | USDHC_Type * | base | ) |
base | USDHC peripheral base address. |
void USDHC_EnableManualTuning | ( | USDHC_Type * | base, |
bool | enable | ||
) |
User should handle the tuning cmd and find the boundary of the delay then calucate a average value which will be configured to the CLK_TUNE_CTRL_STATUS This function should be called before function USDHC_AdjustDelayForManualTuning.
base | USDHC peripheral base address. |
enable | tuning enable flag |
status_t USDHC_AdjustDelayForManualTuning | ( | USDHC_Type * | base, |
uint32_t | delay | ||
) |
base | USDHC peripheral base address. |
delay | setting configuration |
kStatus_Fail | config the delay setting fail |
kStatus_Success | config the delay setting success |
|
inlinestatic |
base | USDHC peripheral base address. |
counter | tuning counter |
kStatus_Fail | config the delay setting fail |
kStatus_Success | config the delay setting success |
void USDHC_EnableStandardTuning | ( | USDHC_Type * | base, |
uint32_t | tuningStartTap, | ||
uint32_t | step, | ||
bool | enable | ||
) |
The standard tuning window and tuning counter using the default config tuning cmd is sent by the software, user need to check whether the tuning result can be used for SDR50, SDR104, and HS200 mode tuning.
base | USDHC peripheral base address. |
tuningStartTap | start tap |
step | tuning step |
enable | enable/disable flag |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
void USDHC_EnableDDRMode | ( | USDHC_Type * | base, |
bool | enable, | ||
uint32_t | nibblePos | ||
) |
base | USDHC peripheral base address. |
enable | enable/disable flag |
nibblePos | nibble position |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | enable/disable flag |
|
inlinestatic |
base | USDHC peripheral base address. |
|
inlinestatic |
base | USDHC peripheral base address. |
enable | enable/disable flag |
void USDHC_ConfigStrobeDLL | ( | USDHC_Type * | base, |
uint32_t | delayTarget, | ||
uint32_t | updateInterval | ||
) |
base | USDHC peripheral base address. |
delayTarget | delay target |
updateInterval | update interval |
|
inlinestatic |
base | USDHC peripheral base address. |
delayTaps | Valid delay taps range from 1 - 128 taps. A value of 0 selects tap 1, and a value of 0x7F selects tap 128. |
|
inlinestatic |
base | USDHC peripheral base address. |
void USDHC_SetDataConfig | ( | USDHC_Type * | base, |
usdhc_transfer_direction_t | dataDirection, | ||
uint32_t | blockCount, | ||
uint32_t | blockSize | ||
) |
base | USDHC peripheral base address. |
dataDirection | Data direction, tx or rx. |
blockCount | Data block count. |
blockSize | Data block size. |
void USDHC_TransferCreateHandle | ( | USDHC_Type * | base, |
usdhc_handle_t * | handle, | ||
const usdhc_transfer_callback_t * | callback, | ||
void * | userData | ||
) |
base | USDHC peripheral base address. |
handle | USDHC handle pointer. |
callback | Structure pointer to contain all callback functions. |
userData | Callback function parameter. |
status_t USDHC_TransferNonBlocking | ( | USDHC_Type * | base, |
usdhc_handle_t * | handle, | ||
usdhc_adma_config_t * | dmaConfig, | ||
usdhc_transfer_t * | transfer | ||
) |
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.
base | USDHC peripheral base address. |
handle | USDHC handle. |
dmaConfig | ADMA configuration. |
transfer | Transfer content. |
kStatus_InvalidArgument | Argument is invalid. |
kStatus_USDHC_BusyTransferring | Busy transferring. |
kStatus_USDHC_PrepareAdmaDescriptorFailed | Prepare ADMA descriptor failed. |
kStatus_Success | Operate successfully. |
status_t USDHC_TransferBlocking | ( | USDHC_Type * | base, |
usdhc_adma_config_t * | dmaConfig, | ||
usdhc_transfer_t * | transfer | ||
) |
This function waits until the command response/data is received or the USDHC encounters an error by polling the status flag.
The application must not call this API in multiple threads at the same time. Because this API doesn't support the re-entry mechanism.
base | USDHC peripheral base address. |
dmaConfig | adma configuration |
transfer | Transfer content. |
kStatus_InvalidArgument | Argument is invalid. |
kStatus_USDHC_PrepareAdmaDescriptorFailed | Prepare ADMA descriptor failed. |
kStatus_USDHC_SendCommandFailed | Send command failed. |
kStatus_USDHC_TransferDataFailed | Transfer data failed. |
kStatus_Success | Operate successfully. |
void USDHC_TransferHandleIRQ | ( | USDHC_Type * | base, |
usdhc_handle_t * | handle | ||
) |
This function deals with the IRQs on the given host controller.
base | USDHC peripheral base address. |
handle | USDHC handle. |