Kinetis SDK v.1.2 API Reference Manual  Rev. 0
Freescale Semiconductor, Inc.
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages

Overview

This section describes the programming interface of the SDHC HAL driver.

Data Structures

struct  sdhc_hal_adma2_descriptor_t
 
struct  sdhc_hal_basic_info_t
 Data structure to get the basic information of SDHC. More...
 
struct  sdhc_hal_sdclk_config_t
 SD clock configuration to configure the clock of SD protocol unit. More...
 
struct  sdhc_mmcboot_param_t
 Data structure to configure the MMC boot feature. More...
 
struct  sdhc_hal_config_t
 Data structure to initialize the SDHC. More...
 
struct  sdhc_hal_cmd_req_t
 Command request structure. More...
 

Macros

#define SDHC_HAL_DAT0_LEVEL   (SDHC_PRSSTAT_DLSL_MASK & (1 << 24))
 
#define SDHC_HAL_MAX_BLOCK_COUNT   ((1 << SDHC_BLKATTR_BLKCNT_WIDTH) - 1)
 
#define SDHC_HAL_ENABLE_DMA   SDHC_XFERTYP_DMAEN_MASK
 
#define SDHC_HAL_CMD_TYPE_SUSPEND   (SDHC_XFERTYP_CMDTYP(1))
 
#define SDHC_HAL_CMD_TYPE_RESUME   (SDHC_XFERTYP_CMDTYP(2))
 
#define SDHC_HAL_CMD_TYPE_ABORT   (SDHC_XFERTYP_CMDTYP(3))
 
#define SDHC_HAL_ENABLE_BLOCK_COUNT   SDHC_XFERTYP_BCEN_MASK
 
#define SDHC_HAL_ENABLE_AUTO_CMD12   SDHC_XFERTYP_AC12EN_MASK
 
#define SDHC_HAL_ENABLE_DATA_READ   SDHC_XFERTYP_DTDSEL_MASK
 
#define SDHC_HAL_MULTIPLE_BLOCK   SDHC_XFERTYP_MSBSEL_MASK
 
#define SDHC_HAL_RESP_LEN_136   ((0x1 << SDHC_XFERTYP_RSPTYP_SHIFT) & SDHC_XFERTYP_RSPTYP_MASK)
 
#define SDHC_HAL_RESP_LEN_48   ((0x2 << SDHC_XFERTYP_RSPTYP_SHIFT) & SDHC_XFERTYP_RSPTYP_MASK)
 
#define SDHC_HAL_RESP_LEN_48_BC   ((0x3 << SDHC_XFERTYP_RSPTYP_SHIFT) & SDHC_XFERTYP_RSPTYP_MASK)
 
#define SDHC_HAL_ENABLE_CRC_CHECK   SDHC_XFERTYP_CCCEN_MASK
 
#define SDHC_HAL_ENABLE_INDEX_CHECK   SDHC_XFERTYP_CICEN_MASK
 
#define SDHC_HAL_DATA_PRESENT   SDHC_XFERTYP_DPSEL_MASK
 
#define SDHC_HAL_MAX_DVS   (16U)
 
#define SDHC_HAL_INITIAL_DVS   (1U) /* initial value of divisor to calculate clock rate */
 
#define SDHC_HAL_INITIAL_CLKFS   (2U) /* initial value of clock selector to calculate clock rate */
 
#define SDHC_HAL_NEXT_DVS(x)   do { ((x) += 1); } while(0)
 
#define SDHC_HAL_PREV_DVS(x)   do { ((x) -= 1); } while(0)
 
#define SDHC_HAL_MAX_CLKFS   (256U)
 
#define SDHC_HAL_NEXT_CLKFS(x)   do { ((x) <<= 1); } while(0)
 
#define SDHC_HAL_PREV_CLKFS(x)   do { ((x) >>= 1); } while(0)
 
#define SDHC_HAL_CMD_COMPLETE_INT   SDHC_IRQSTAT_CC_MASK
 
#define SDHC_HAL_DATA_COMPLETE_INT   SDHC_IRQSTAT_TC_MASK
 
#define SDHC_HAL_BLOCK_GAP_EVENT_INT   SDHC_IRQSTAT_BGE_MASK
 
#define SDHC_HAL_DMA_INT   SDHC_IRQSTAT_DINT_MASK
 
#define SDHC_HAL_DMA_ERR_INT   SDHC_IRQSTAT_DMAE_MASK
 
#define SDHC_HAL_BUF_WRITE_READY_INT   SDHC_IRQSTAT_BWR_MASK
 
#define SDHC_HAL_BUF_READ_READY_INT   SDHC_IRQSTAT_BRR_MASK
 
#define SDHC_HAL_CARD_INSERTION_INT   SDHC_IRQSTAT_CINS_MASK
 
#define SDHC_HAL_CARD_REMOVAL_INT   SDHC_IRQSTAT_CRM_MASK
 
#define SDHC_HAL_CARD_INT   SDHC_IRQSTAT_CINT_MASK
 
#define SDHC_HAL_CMD_TIMEOUT_ERR_INT   SDHC_IRQSTAT_CTOE_MASK
 
#define SDHC_HAL_CMD_CRC_ERR_INT   SDHC_IRQSTAT_CCE_MASK
 
#define SDHC_HAL_CMD_END_BIT_ERR_INT   SDHC_IRQSTAT_CEBE_MASK
 
#define SDHC_HAL_CMD_INDEX_ERR_INT   SDHC_IRQSTAT_CIE_MASK
 
#define SDHC_HAL_DATA_TIMEOUT_ERR_INT   SDHC_IRQSTAT_DTOE_MASK
 
#define SDHC_HAL_DATA_CRC_ERR_INT   SDHC_IRQSTAT_DCE_MASK
 
#define SDHC_HAL_DATA_END_BIT_ERR_INT   SDHC_IRQSTAT_DEBE_MASK
 
#define SDHC_HAL_AUTO_CMD12_ERR_INT   SDHC_IRQSTAT_AC12E_MASK
 
#define SDHC_HAL_CMD_ERR_INT
 
#define SDHC_HAL_DATA_ERR_INT
 
#define SDHC_HAL_DATA_ALL_INT
 
#define SDHC_HAL_CMD_ALL_INT
 
#define SDHC_HAL_CD_ALL_INT
 
#define SDHC_HAL_ALL_ERR_INT
 
#define SDHC_HAL_ACMD12_NOT_EXEC_ERR   SDHC_AC12ERR_AC12NE_MASK
 
#define SDHC_HAL_ACMD12_TIMEOUT_ERR   SDHC_AC12ERR_AC12TOE_MASK
 
#define SDHC_HAL_ACMD12_END_BIT_ERR   SDHC_AC12ERR_AC12EBE_MASK
 
#define SDHC_HAL_ACMD12_CRC_ERR   SDHC_AC12ERR_AC12CE_MASK
 
#define SDHC_HAL_ACMD12_INDEX_ERR   SDHC_AC12ERR_AC12IE_MASK
 
#define SDHC_HAL_ACMD12_NOT_ISSUE_ERR   SDHC_AC12ERR_CNIBAC12E_MASK
 
#define SDHC_HAL_ADMA_STATE_ERR   SDHC_ADMAES_ADMAES_MASK
 
#define SDHC_HAL_ADMA_LEN_MIS_MATCH_FLAG   SDHC_ADMAES_ADMALME_MASK
 
#define SDHC_HAL_ADMA_DESP_ERR_FLAG   SDHC_ADMAES_ADMADCE_MASK
 
#define SDHC_HAL_SUPPORT_ADMA   SDHC_HTCAPBLT_ADMAS_MASK
 
#define SDHC_HAL_SUPPORT_HIGHSPEED   SDHC_HTCAPBLT_HSS_MASK
 
#define SDHC_HAL_SUPPORT_DMA   SDHC_HTCAPBLT_DMAS_MASK
 
#define SDHC_HAL_SUPPORT_SUSPEND_RESUME   SDHC_HTCAPBLT_SRS_MASK
 
#define SDHC_HAL_SUPPORT_3_3_V   SDHC_HTCAPBLT_VS33_MASK
 
#define SDHC_HAL_SUPPORT_3_0_V   SDHC_HTCAPBLT_VS30_MASK
 
#define SDHC_HAL_SUPPORT_1_8_V   SDHC_HTCAPBLT_VS18_MASK
 
#define SDHC_HAL_ACMD12_NOT_EXEC_ERR_EVENT   SDHC_FEVT_AC12NE_MASK
 
#define SDHC_HAL_ACMD12_TIMEOUT_ERR_EVENT   SDHC_FEVT_AC12TOE_MASK
 
#define SDHC_HAL_ACMD12_CRC_ERR_EVENT   SDHC_FEVT_AC12CE_MASK
 
#define SDHC_HAL_ACMD12_END_BIT_ERR_EVENT   SDHC_FEVT_AC12EBE_MASK
 
#define SDHC_HAL_ACMD12_INDEX_ERR_EVENT   SDHC_FEVT_AC12IE_MASK
 
#define SDHC_HAL_ACMD12_NOT_ISSUE_ERR_EVENT   SDHC_FEVT_CNIBAC12E_MASK
 
#define SDHC_HAL_CMD_TIMEOUT_ERR_EVENT   SDHC_FEVT_CTOE_MASK
 
#define SDHC_HAL_CMD_CRC_ERR_EVENT   SDHC_FEVT_CCE_MASK
 
#define SDHC_HAL_CMD_END_BIT_ERR_EVENT   SDHC_FEVT_CEBE_MASK
 
#define SDHC_HAL_CMD_INDEX_ERR_EVENT   SDHC_FEVT_CIE_MASK
 
#define SDHC_HAL_DATA_TIMEOUT_ERR_EVENT   SDHC_FEVT_DTOE_MASK
 
#define SDHC_HAL_DATA_CRC_ERR_EVENT   SDHC_FEVT_DCE_MASK
 
#define SDHC_HAL_DATA_END_BIT_ERR_EVENT   SDHC_FEVT_DEBE_MASK
 
#define SDHC_HAL_ACMD12_ERR_EVENT   SDHC_FEVT_AC12E_MASK
 
#define SDHC_HAL_CARD_INT_EVENT   SDHC_FEVT_CINT_MASK
 
#define SDHC_HAL_DMA_ERROR_EVENT   SDHC_FEVT_DMAE_MASK
 
#define SDHC_HAL_ADMA1_ADDR_ALIGN   (4096)
 SDHC ADMA address alignment size and length alignment size.
 
#define SDHC_HAL_ADMA1_LEN_ALIGN   (4096)
 
#define SDHC_HAL_ADMA2_ADDR_ALIGN   (4)
 
#define SDHC_HAL_ADMA2_LEN_ALIGN   (4)
 
#define SDHC_HAL_ADMA1_DESC_VALID_MASK   (1 << 0)
 
#define SDHC_HAL_ADMA1_DESC_END_MASK   (1 << 1)
 
#define SDHC_HAL_ADMA1_DESC_INT_MASK   (1 << 2)
 
#define SDHC_HAL_ADMA1_DESC_ACT1_MASK   (1 << 4)
 
#define SDHC_HAL_ADMA1_DESC_ACT2_MASK   (1 << 5)
 
#define SDHC_HAL_ADMA1_DESC_TYPE_NOP   (SDHC_HAL_ADMA1_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA1_DESC_TYPE_TRAN   (SDHC_HAL_ADMA1_DESC_ACT2_MASK | SDHC_HAL_ADMA1_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA1_DESC_TYPE_LINK   (SDHC_HAL_ADMA1_DESC_ACT1_MASK | SDHC_HAL_ADMA1_DESC_ACT2_MASK | SDHC_HAL_ADMA1_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA1_DESC_TYPE_SET   (SDHC_HAL_ADMA1_DESC_ACT1_MASK | SDHC_HAL_ADMA1_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA1_DESC_ADDRESS_SHIFT   (12)
 
#define SDHC_HAL_ADMA1_DESC_ADDRESS_MASK   (0xFFFFFU)
 
#define SDHC_HAL_ADMA1_DESC_LEN_SHIFT   (12)
 
#define SDHC_HAL_ADMA1_DESC_LEN_MASK   (0xFFFFU)
 
#define SDHC_HAL_ADMA1_DESC_MAX_LEN_PER_ENTRY   (SDHC_HAL_ADMA1_DESC_LEN_MASK + 1)
 
#define SDHC_HAL_ADMA2_DESC_VALID_MASK   (1 << 0)
 
#define SDHC_HAL_ADMA2_DESC_END_MASK   (1 << 1)
 
#define SDHC_HAL_ADMA2_DESC_INT_MASK   (1 << 2)
 
#define SDHC_HAL_ADMA2_DESC_ACT1_MASK   (1 << 4)
 
#define SDHC_HAL_ADMA2_DESC_ACT2_MASK   (1 << 5)
 
#define SDHC_HAL_ADMA2_DESC_TYPE_NOP   (SDHC_HAL_ADMA2_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA2_DESC_TYPE_RCV   (SDHC_HAL_ADMA2_DESC_ACT1_MASK | SDHC_HAL_ADMA2_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA2_DESC_TYPE_TRAN   (SDHC_HAL_ADMA2_DESC_ACT2_MASK | SDHC_HAL_ADMA2_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA2_DESC_TYPE_LINK   (SDHC_HAL_ADMA2_DESC_ACT1_MASK | SDHC_HAL_ADMA2_DESC_ACT2_MASK | SDHC_HAL_ADMA2_DESC_VALID_MASK)
 
#define SDHC_HAL_ADMA2_DESC_LEN_SHIFT   (16)
 
#define SDHC_HAL_ADMA2_DESC_LEN_MASK   (0xFFFFU)
 
#define SDHC_HAL_ADMA2_DESC_MAX_LEN_PER_ENTRY   (SDHC_HAL_ADMA2_DESC_LEN_MASK)
 
#define SDHC_HAL_RST_TYPE_ALL   SDHC_SYSCTL_RSTA_MASK
 
#define SDHC_HAL_RST_TYPE_CMD   SDHC_SYSCTL_RSTC_MASK
 
#define SDHC_HAL_RST_TYPE_DATA   SDHC_SYSCTL_RSTD_MASK
 
#define SDHC_HAL_MAX_BLKLEN_512B   (0U)
 
#define SDHC_HAL_MAX_BLKLEN_1024B   (1U)
 
#define SDHC_HAL_MAX_BLKLEN_2048B   (2U)
 
#define SDHC_HAL_MAX_BLKLEN_4096B   (3U)
 
#define SDHC_HAL_SUPPORT_V330_FLAG   (1U << 0)
 
#define SDHC_HAL_SUPPORT_V300_FLAG   (1U << 1)
 
#define SDHC_HAL_SUPPORT_HIGHSPEED_FLAG   (1U << 2)
 
#define SDHC_HAL_SUPPORT_DMA_FLAG   (1U << 3)
 
#define SDHC_HAL_SUPPORT_ADMA_FLAG   (1U << 4)
 
#define SDHC_HAL_SUPPORT_SUSPEND_RESUME_FLAG   (1U << 5)
 
#define SDHC_HAL_SUPPORT_V180_FLAG   (1U << 6)
 
#define SDHC_HAL_SUPPORT_EXDMA_FLAG   (1U << 7)
 
#define SDHC_HAL_EN_D3CD_FLAG   (1U << 0)
 
#define SDHC_HAL_EN_CD_SIG_SEL_FLAG   (1U << 1)
 
#define SDHC_HAL_EN_STOP_AT_BLK_GAP_FLAG   (1U << 2)
 
#define SDHC_HAL_EN_READ_WAIT_CTRL_FLAG   (1U << 3)
 
#define SDHC_HAL_EN_INT_STOP_AT_BLK_GAP_FLAG   (1U << 4)
 
#define SDHC_HAL_EN_WAKEUP_ON_CARD_INT_FLAG   (1U << 5)
 
#define SDHC_HAL_EN_WAKEUP_ON_CARD_INS_FLAG   (1U << 6)
 
#define SDHC_HAL_EN_WAKEUP_ON_CARD_REM_FLAG   (1U << 7)
 
#define SDHC_HAL_EN_EXT_DMA_REQ_FLAG   (1U << 8)
 
#define SDHC_HAL_EN_EXACT_BLK_NUM_FLAG   (1U << 9)
 
#define SDHC_HAL_EN_BOOT_ACK_FLAG   (1 << 0)
 
#define SDHC_HAL_EN_FAST_BOOT_FLAG   (1 << 1)
 
#define SDHC_HAL_EN_BOOT_STOP_AT_BLK_GAP_FLAG   (1 << 2)
 

Typedefs

typedef uint32_t sdhc_hal_adma1_descriptor_t
 

Enumerations

enum  sdhc_hal_mmcboot_t {
  kSdhcHalMmcbootNormal = 0,
  kSdhcHalMmcbootAlter = 1
}
 MMC card BOOT type.
 
enum  sdhc_hal_led_t {
  kSdhcHalLedOff = 0,
  kSdhcHalLedOn = 1
}
 Led control status.
 
enum  sdhc_hal_dtw_t {
  kSdhcHalDtw1Bit = 0,
  kSdhcHalDtw4Bit = 1,
  kSdhcHalDtw8Bit = 2
}
 Data transfer width.
 
enum  sdhc_hal_endian_t {
  kSdhcHalEndianBig = 0,
  kSdhcHalEndianHalfWordBig = 1,
  kSdhcHalEndianLittle = 2
}
 SDHC endian mode.
 
enum  sdhc_hal_dma_mode_t {
  kSdhcHalDmaSimple = 0,
  kSdhcHalDmaAdma1 = 1,
  kSdhcHalDmaAdma2 = 2
}
 SDHC dma mode.
 
enum  sdhc_hal_curstat_type_t {
  kSdhcHalIsCmdInhibit,
  kSdhcHalIsDataInhibit,
  kSdhcHalIsDataLineActive,
  kSdhcHalIsSdClockStable,
  kSdhcHalIsIpgClockOff,
  kSdhcHalIsSysClockOff,
  kSdhcHalIsPeripheralClockOff,
  kSdhcHalIsSdClkOff,
  kSdhcHalIsWriteTransferActive,
  kSdhcHalIsReadTransferActive,
  kSdhcHalIsBuffWriteEnabled,
  kSdhcHalIsBuffReadEnabled,
  kSdhcHalIsCardInserted,
  kSdhcHalIsCmdLineLevelHigh,
  kSdhcHalGetDataLine0Level,
  kSdhcHalGetDataLine1Level,
  kSdhcHalGetDataLine2Level,
  kSdhcHalGetDataLine3Level,
  kSdhcHalGetDataLine4Level,
  kSdhcHalGetDataLine5Level,
  kSdhcHalGetDataLine6Level,
  kSdhcHalGetDataLine7Level,
  kSdhcHalGetCdTestLevel
}
 Current sdhc status type. More...
 
enum  sdhc_hal_err_type_t {
  kAc12Err,
  kAdmaErr
}
 SDHC error type. More...
 

SDHC HAL FUNCTION

void SDHC_HAL_SendCmd (SDHC_Type *base, const sdhc_hal_cmd_req_t *cmdReq)
 Sends command to card. More...
 
static void SDHC_HAL_SetData (SDHC_Type *base, uint32_t data)
 Fills the the data port. More...
 
static uint32_t SDHC_HAL_GetData (SDHC_Type *base)
 Retrieves the data from the data port. More...
 
bool SDHC_HAL_GetCurState (SDHC_Type *base, sdhc_hal_curstat_type_t stateType)
 Gets current card's status. More...
 
static void SDHC_HAL_SetDataTransferWidth (SDHC_Type *base, sdhc_hal_dtw_t dtw)
 Sets the data transfer width. More...
 
static void SDHC_HAL_SetContinueRequest (SDHC_Type *base)
 Restarts a transaction which has stopped at the block gap. More...
 
void SDHC_HAL_Config (SDHC_Type *base, const sdhc_hal_config_t *initConfig)
 Initialize the SDHC according to the configuration user input. More...
 
void SDHC_HAL_ConfigSdClock (SDHC_Type *base, sdhc_hal_sdclk_config_t *clkConfItms)
 Sets SDHC SD protol unit clock. More...
 
static uint32_t SDHC_HAL_GetIntFlags (SDHC_Type *base)
 Gets the current interrupt status. More...
 
static void SDHC_HAL_ClearIntFlags (SDHC_Type *base, uint32_t mask)
 Clears a specified interrupt status. More...
 
void SDHC_HAL_GetAllErrStatus (SDHC_Type *base, sdhc_hal_err_type_t errType, uint32_t *errFlags)
 Get the error status of SDHC . More...
 
static void SDHC_HAL_SetForceEventFlags (SDHC_Type *base, uint32_t mask)
 Sets the force events according to the given mask. More...
 
static void SDHC_HAL_SetAdmaAddress (SDHC_Type *base, uint32_t address)
 Sets the ADMA address. More...
 
uint32_t SDHC_HAL_GetResponse (SDHC_Type *base, uint32_t index)
 Gets the command response. More...
 
void SDHC_HAL_SetIntSignal (SDHC_Type *base, bool enable, uint32_t mask)
 Enables the specified interrupts. More...
 
void SDHC_HAL_SetIntState (SDHC_Type *base, bool enable, uint32_t mask)
 Enables the specified interrupt state. More...
 
uint32_t SDHC_HAL_Reset (SDHC_Type *base, uint32_t type, uint32_t timeout)
 Performs an SDHC reset. More...
 
uint32_t SDHC_HAL_InitCard (SDHC_Type *base, uint32_t timeout)
 Sends 80 clocks to the card to initialize the card. More...
 
void SDHC_HAL_Init (SDHC_Type *base)
 Initializes the SDHC HAL. More...
 
void SDHC_HAL_GetBasicInfo (SDHC_Type *base, sdhc_hal_basic_info_t *basicInfo)
 Get the capability of SDHC. More...
 

Data Structure Documentation

struct sdhc_hal_adma2_descriptor_t

Data Fields

uint32_t attribute
 
uint32_t * address
 
struct sdhc_hal_basic_info_t

Data Fields

uint8_t specVer
 Save the specification version.
 
uint8_t vendorVer
 Save the verdor version.
 
uint16_t maxBlkLen
 Save the max block length.
 
uint32_t capability
 The capability flags.
 
struct sdhc_hal_sdclk_config_t

Data Fields

bool enable
 
uint32_t maxHostClk
 
uint32_t destClk
 
struct sdhc_mmcboot_param_t

Data Fields

uint32_t ackTimeout
 Sets the timeout value for the boot ACK. More...
 
sdhc_hal_mmcboot_t mode
 Configures the boot mode. More...
 
uint32_t blockCount
 Configures the the block count for the boot. More...
 
uint32_t enFlags
 

Field Documentation

uint32_t sdhc_mmcboot_param_t::ackTimeout
sdhc_hal_mmcboot_t sdhc_mmcboot_param_t::mode
uint32_t sdhc_mmcboot_param_t::blockCount
struct sdhc_hal_config_t

Data Fields

sdhc_hal_led_t ledState
 Sets the LED state. More...
 
sdhc_hal_endian_t endianMode
 Configures the endian mode. More...
 
sdhc_hal_dma_mode_t dmaMode
 Sets the DMA mode. More...
 
uint8_t writeWatermarkLevel
 Sets the watermark for writing. More...
 
uint8_t readWatermarkLevel
 Sets the watermark for reading. More...
 
uint32_t enFlags
 Enable or disable corresponding feature.
 
sdhc_mmcboot_param_t bootParams
 Configture read MMC card boot data feature.
 

Field Documentation

sdhc_hal_led_t sdhc_hal_config_t::ledState
sdhc_hal_endian_t sdhc_hal_config_t::endianMode
sdhc_hal_dma_mode_t sdhc_hal_config_t::dmaMode
uint8_t sdhc_hal_config_t::writeWatermarkLevel
uint8_t sdhc_hal_config_t::readWatermarkLevel
struct sdhc_hal_cmd_req_t

Data Fields

uint32_t dataBlkSize
 Cmd data Block size.
 
uint32_t dataBlkCount
 Cmd data Block count.
 
uint32_t arg
 Cmd argument.
 
uint32_t index
 Cmd index.
 
uint32_t flags
 Cmd Flags.
 

Macro Definition Documentation

#define SDHC_HAL_CMD_ERR_INT
Value:
((uint32_t)(SDHC_HAL_CMD_TIMEOUT_ERR_INT | \
SDHC_HAL_CMD_CRC_ERR_INT | \
SDHC_HAL_CMD_END_BIT_ERR_INT | \
SDHC_HAL_CMD_INDEX_ERR_INT))
#define SDHC_HAL_DATA_ERR_INT
Value:
((uint32_t)(SDHC_HAL_DATA_TIMEOUT_ERR_INT | \
SDHC_HAL_DATA_CRC_ERR_INT | \
SDHC_HAL_DATA_END_BIT_ERR_INT))
#define SDHC_HAL_DATA_ALL_INT
Value:
((uint32_t)(SDHC_HAL_DATA_ERR_INT | \
SDHC_HAL_DATA_COMPLETE_INT | \
SDHC_HAL_BUF_READ_READY_INT | \
SDHC_HAL_BUF_WRITE_READY_INT | \
SDHC_HAL_DMA_ERR_INT | SDHC_HAL_DMA_INT))
#define SDHC_HAL_CMD_ALL_INT
Value:
((uint32_t)(SDHC_HAL_CMD_ERR_INT | \
SDHC_HAL_CMD_COMPLETE_INT | \
SDHC_HAL_AUTO_CMD12_ERR_INT))
#define SDHC_HAL_CD_ALL_INT
Value:
((uint32_t)(SDHC_HAL_CARD_INSERTION_INT | \
SDHC_HAL_CARD_REMOVAL_INT))
#define SDHC_HAL_ALL_ERR_INT
Value:
((uint32_t)(SDHC_HAL_CMD_ERR_INT | \
SDHC_HAL_DATA_ERR_INT | \
SDHC_HAL_AUTO_CMD12_ERR_INT | \
SDHC_HAL_DMA_ERR_INT))

Enumeration Type Documentation

Enumerator
kSdhcHalIsCmdInhibit 

Checks whether the command inhibit bit is set or not.

kSdhcHalIsDataInhibit 

Checks whether data inhibit bit is set or not.

kSdhcHalIsDataLineActive 

Checks whether data line is active.

kSdhcHalIsSdClockStable 

Checks whether the SD clock is stable or not.

kSdhcHalIsIpgClockOff 

Checks whether the IPG clock is off or not.

kSdhcHalIsSysClockOff 

Checks whether the system clock is off or not.

kSdhcHalIsPeripheralClockOff 

Checks whether the peripheral clock is off or not.

kSdhcHalIsSdClkOff 

Checks whether the SD clock is off or not.

kSdhcHalIsWriteTransferActive 

Checks whether the write transfer is active or not.

kSdhcHalIsReadTransferActive 

Checks whether the read transfer is active or not.

kSdhcHalIsBuffWriteEnabled 

Check whether the buffer write is enabled or not.

kSdhcHalIsBuffReadEnabled 

Checks whether the buffer read is enabled or not.

kSdhcHalIsCardInserted 

Checks whether the card is inserted or not.

kSdhcHalIsCmdLineLevelHigh 

Checks whether the command line signal is high or not.

kSdhcHalGetDataLine0Level 

Gets the data line 0 signal level or not.

kSdhcHalGetDataLine1Level 

Gets the data line 1 signal level or not.

kSdhcHalGetDataLine2Level 

Gets the data line 2 signal level or not.

kSdhcHalGetDataLine3Level 

Gets the data line 3 signal level or not.

kSdhcHalGetDataLine4Level 

Gets the data line 4 signal level or not.

kSdhcHalGetDataLine5Level 

Gets the data line 5 signal level or not.

kSdhcHalGetDataLine6Level 

Gets the data line 6 signal level or not.

kSdhcHalGetDataLine7Level 

Gets the data line 7 signal level or not.

kSdhcHalGetCdTestLevel 

Gets the card detect test level.

Enumerator
kAc12Err 

Auto CMD12 error.

kAdmaErr 

ADMA error.

Function Documentation

void SDHC_HAL_SendCmd ( SDHC_Type *  base,
const sdhc_hal_cmd_req_t cmdReq 
)
Parameters
baseSDHC base address
cmdReqcommand request structure
static void SDHC_HAL_SetData ( SDHC_Type *  base,
uint32_t  data 
)
inlinestatic
Parameters
baseSDHC base address
datathe data about to be sent
static uint32_t SDHC_HAL_GetData ( SDHC_Type *  base)
inlinestatic
Parameters
baseSDHC base address
Returns
the data has been read
bool SDHC_HAL_GetCurState ( SDHC_Type *  base,
sdhc_hal_curstat_type_t  stateType 
)
Parameters
baseSDHC base address
Returns
the status if happened corresponding to stateType
  • true: status flag has been set
  • false: status flag has not been set
static void SDHC_HAL_SetDataTransferWidth ( SDHC_Type *  base,
sdhc_hal_dtw_t  dtw 
)
inlinestatic
Parameters
baseSDHC base address
dtwdata transfer width
static void SDHC_HAL_SetContinueRequest ( SDHC_Type *  base)
inlinestatic
Parameters
baseSDHC base address
void SDHC_HAL_Config ( SDHC_Type *  base,
const sdhc_hal_config_t initConfig 
)
Parameters
baseSDHC base address
initConfigThe configuration structure
void SDHC_HAL_ConfigSdClock ( SDHC_Type *  base,
sdhc_hal_sdclk_config_t clkConfItms 
)
Parameters
baseSDHC base address
clkConfItmsSDHC SD protol unit clock configuration items.
static uint32_t SDHC_HAL_GetIntFlags ( SDHC_Type *  base)
inlinestatic
Parameters
baseSDHC base address
Returns
current interrupt flags
static void SDHC_HAL_ClearIntFlags ( SDHC_Type *  base,
uint32_t  mask 
)
inlinestatic
Parameters
baseSDHC base address
maskto specify interrupts' flags to be cleared
void SDHC_HAL_GetAllErrStatus ( SDHC_Type *  base,
sdhc_hal_err_type_t  errType,
uint32_t *  errFlags 
)
Parameters
baseSDHC base address
sdhc_hal_err_type_tthe error type
errFlagsthe result error flags
static void SDHC_HAL_SetForceEventFlags ( SDHC_Type *  base,
uint32_t  mask 
)
inlinestatic
Parameters
baseSDHC base address
maskto specify the force events' flags to be set
static void SDHC_HAL_SetAdmaAddress ( SDHC_Type *  base,
uint32_t  address 
)
inlinestatic
Parameters
baseSDHC base address
addressfor ADMA transfer
uint32_t SDHC_HAL_GetResponse ( SDHC_Type *  base,
uint32_t  index 
)
Parameters
baseSDHC base address
indexof response register, range from 0 to 3
void SDHC_HAL_SetIntSignal ( SDHC_Type *  base,
bool  enable,
uint32_t  mask 
)
Parameters
baseSDHC base address
enableenable or disable
maskto specify interrupts to be isEnabledd
void SDHC_HAL_SetIntState ( SDHC_Type *  base,
bool  enable,
uint32_t  mask 
)
Parameters
baseSDHC base address
enableenable or disable
maskto specify interrupts' state to be enabled
uint32_t SDHC_HAL_Reset ( SDHC_Type *  base,
uint32_t  type,
uint32_t  timeout 
)
Parameters
baseSDHC base address
typethe type of reset
timeouttimeout for reset
Returns
0 on success, else on error
uint32_t SDHC_HAL_InitCard ( SDHC_Type *  base,
uint32_t  timeout 
)
Parameters
baseSDHC base address
timeouttimeout for initialize card
Returns
0 on success, else on error
void SDHC_HAL_Init ( SDHC_Type *  base)
Parameters
baseSDHC base address
void SDHC_HAL_GetBasicInfo ( SDHC_Type *  base,
sdhc_hal_basic_info_t basicInfo 
)
Parameters
baseSDHC base address