![]() |
MCUXpresso SDK API Reference Manual
Rev 2.16.000
NXP Semiconductors
|
The USDHC host adapter driver provide adapter for blocking/non_blocking mode.
To maintain data integrity during DMA operations on the platform that has cache, host driver provide a cache maintain functionality by set: host.enableCacheControl = kSDMMCHOST_CacheControlRWBuffer This is used for only when the low level driver cache maintain functionality is disabled. It is suggest that the address of buffer used for read/write is align with cache line size.
when application submit a transfer request that the data buffer address is not align with cache line size, the potential data loss may happen during driver maintain the data cache, to aovid such issue happens, sdmmc usdhc host driver provides support on convert the unalign data transfer into align data transfer, if application would like to use the feature, please enable this functionality by define below macro firstly, #define SDMMCHOST_ENABLE_CACHE_LINE_ALIGN_TRANSFER 1
And then call SDMMCHOST_InstallCacheAlignBuffer to install a cache line size align buffer, please note the installed buffer size must not small than 2 * cache line size. Please note that this functionality is support by the non blocking adapter only.
Data Structures | |
struct | _sdmmchost_ |
sdmmc host handler More... | |
Macros | |
#define | FSL_SDMMC_HOST_ADAPTER_VERSION (MAKE_VERSION(2U, 6U, 3U)) /*2.6.3*/ |
Middleware adapter version. More... | |
#define | SDMMCHOST_SUPPORT_HIGH_SPEED (1U) |
sdmmc host misc capability | |
#define | SDMMCHOST_SUPPORT_DDR50 (SDMMCHOST_SUPPORT_DDR_MODE) |
sdmmc host sdcard DDR50 mode capability | |
#define | SDMMCHOST_SUPPORT_SDR104 (1U) |
sdmmc host sdcard SDR50 mode capability | |
#define | SDMMCHOST_SUPPORT_SDR50 (1U) |
sdmmc host sdcard SDR104/mmccard HS200 mode capability | |
#define | SDMMCHOST_SUPPORT_HS400 (1U) |
sdmmc host mmccard HS400 mode capability | |
#define | SDMMCHOST_INSTANCE_SUPPORT_8_BIT_WIDTH(host) FSL_FEATURE_USDHC_INSTANCE_SUPPORT_8_BIT_WIDTHn(host->hostController.base) |
sdmmc host instance capability | |
#define | SDMMCHOST_DATA3_DETECT_CARD_DELAY (10U) |
sdmmchost delay for DAT3 detect card | |
#define | SDMMCHOST_DMA_DESCRIPTOR_BUFFER_ALIGN_SIZE (4U) |
SDMMC host dma descriptor buffer address align size. | |
#define | SDMMCHOST_STANDARD_TUNING_START (10U) |
tuning configuration More... | |
#define | SDMMCHOST_TUINIG_STEP (2U) |
standard tuning stBep | |
Typedefs | |
typedef usdhc_transfer_t | sdmmchost_transfer_t |
sdmmc host transfer function | |
typedef struct _sdmmchost_ | sdmmchost_t |
sdmmc host handler | |
USDHC host controller function | |
void | SDMMCHOST_SetCardBusWidth (sdmmchost_t *host, uint32_t dataBusWidth) |
set data bus width. More... | |
static void | SDMMCHOST_SendCardActive (sdmmchost_t *host) |
Send initilization active 80 clocks to card. More... | |
static uint32_t | SDMMCHOST_SetCardClock (sdmmchost_t *host, uint32_t targetClock) |
Set card bus clock. More... | |
static bool | SDMMCHOST_IsCardBusy (sdmmchost_t *host) |
check card status by DATA0. More... | |
static uint32_t | SDMMCHOST_GetSignalLineStatus (sdmmchost_t *host, uint32_t signalLine) |
Get signal line status. More... | |
static void | SDMMCHOST_EnableCardInt (sdmmchost_t *host, bool enable) |
enable card interrupt. More... | |
static void | SDMMCHOST_EnableDDRMode (sdmmchost_t *host, bool enable, uint32_t nibblePos) |
enable DDR mode. More... | |
static void | SDMMCHOST_EnableHS400Mode (sdmmchost_t *host, bool enable) |
enable HS400 mode. More... | |
static void | SDMMCHOST_EnableStrobeDll (sdmmchost_t *host, bool enable) |
enable STROBE DLL. More... | |
status_t | SDMMCHOST_StartBoot (sdmmchost_t *host, sdmmchost_boot_config_t *hostConfig, sdmmchost_cmd_t *cmd, uint8_t *buffer) |
start read boot data. More... | |
status_t | SDMMCHOST_ReadBootData (sdmmchost_t *host, sdmmchost_boot_config_t *hostConfig, uint8_t *buffer) |
read boot data. More... | |
static void | SDMMCHOST_EnableBoot (sdmmchost_t *host, bool enable) |
enable boot mode. More... | |
status_t | SDMMCHOST_CardIntInit (sdmmchost_t *host, void *sdioInt) |
card interrupt function. More... | |
static void | SDMMCHOST_ForceClockOn (sdmmchost_t *host, bool enable) |
force card clock on. More... | |
void | SDMMCHOST_SwitchToVoltage (sdmmchost_t *host, uint32_t voltage) |
switch to voltage. More... | |
status_t | SDMMCHOST_CardDetectInit (sdmmchost_t *host, void *cd) |
card detect init function. More... | |
status_t | SDMMCHOST_PollingCardDetectStatus (sdmmchost_t *host, uint32_t waitCardStatus, uint32_t timeout) |
Detect card insert, only need for SD cases. More... | |
uint32_t | SDMMCHOST_CardDetectStatus (sdmmchost_t *host) |
card detect status. More... | |
status_t | SDMMCHOST_Init (sdmmchost_t *host) |
Init host controller. More... | |
void | SDMMCHOST_Deinit (sdmmchost_t *host) |
Deinit host controller. More... | |
void | SDMMCHOST_SetCardPower (sdmmchost_t *host, bool enable) |
host power off card function. More... | |
status_t | SDMMCHOST_TransferFunction (sdmmchost_t *host, sdmmchost_transfer_t *content) |
host transfer function. More... | |
status_t | SDMMCHOST_ExecuteTuning (sdmmchost_t *host, uint32_t tuningCmd, uint32_t *revBuf, uint32_t blockSize) |
sdmmc host excute tuning. More... | |
void | SDMMCHOST_Reset (sdmmchost_t *host) |
host reset function. More... | |
void | SDMMCHOST_ConvertDataToLittleEndian (sdmmchost_t *host, uint32_t *data, uint32_t wordSize, uint32_t format) |
sdmmc host convert data sequence to little endian sequence More... | |
struct _sdmmchost_ |
Data Fields | |
usdhc_host_t | hostController |
host configuration | |
void * | dmaDesBuffer |
DMA descriptor buffer address. | |
uint32_t | dmaDesBufferWordsNum |
DMA descriptor buffer size in byte. | |
usdhc_handle_t | handle |
host controller handler | |
uint32_t | capability |
host controller capability | |
uint32_t | maxBlockCount |
host controller maximum block count | |
uint32_t | maxBlockSize |
host controller maximum block size | |
uint8_t | tuningType |
host tuning type | |
sdmmc_osa_event_t | hostEvent |
host event handler | |
void * | cd |
card detect | |
void * | cardInt |
call back function for card interrupt | |
uint8_t | enableCacheControl |
Cache maintain flag in host driver. More... | |
sdmmc_osa_mutex_t | lock |
host access lock | |
uint8_t _sdmmchost_::enableCacheControl |
Host driver only maintain cache when FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL is not defined and enableCacheControl = kSDMMCHOST_CacheControlRWBuffer. While FSL_SDK_ENABLE_DRIVER_CACHE_CONTROL is defined, host driver will not maintain cache and peripheral driver will do it.
#define FSL_SDMMC_HOST_ADAPTER_VERSION (MAKE_VERSION(2U, 6U, 3U)) /*2.6.3*/ |
#define SDMMCHOST_STANDARD_TUNING_START (10U) |
standard tuning start point
anonymous enum |
anonymous enum |
anonymous enum |
anonymous enum |
void SDMMCHOST_SetCardBusWidth | ( | sdmmchost_t * | host, |
uint32_t | dataBusWidth | ||
) |
host | host handler |
dataBusWidth | data bus width |
|
inlinestatic |
host | host handler |
|
inlinestatic |
host | host handler |
targetClock | target clock frequency |
actual | clock frequency can be reach. |
|
inlinestatic |
host | host handler |
true | is busy, false is idle. |
|
inlinestatic |
host | host handler |
signalLine | signal line type, reference _sdmmc_signal_line |
|
inlinestatic |
host | host handler |
enable | true is enable, false is disable. |
|
inlinestatic |
host | host handler |
enable | true is enable, false is disable. |
nibblePos | nibble position indictation. 0- the sequence is 'odd high nibble -> even high nibble -> odd low nibble -> even low nibble'; 1- the sequence is 'odd high nibble -> odd low nibble -> even high nibble -> even low nibble'. |
|
inlinestatic |
host | host handler |
enable | true is enable, false is disable. |
|
inlinestatic |
host | host handler |
enable | true is enable, false is disable. |
status_t SDMMCHOST_StartBoot | ( | sdmmchost_t * | host, |
sdmmchost_boot_config_t * | hostConfig, | ||
sdmmchost_cmd_t * | cmd, | ||
uint8_t * | buffer | ||
) |
host | host handler |
hostConfig | boot configuration |
cmd | boot command |
buffer | buffer address |
status_t SDMMCHOST_ReadBootData | ( | sdmmchost_t * | host, |
sdmmchost_boot_config_t * | hostConfig, | ||
uint8_t * | buffer | ||
) |
host | host handler |
hostConfig | boot configuration |
buffer | buffer address |
|
inlinestatic |
host | host handler |
enable | true is enable, false is disable |
status_t SDMMCHOST_CardIntInit | ( | sdmmchost_t * | host, |
void * | sdioInt | ||
) |
host | host handler |
sdioInt | card interrupt configuration |
|
inlinestatic |
host | host handler |
enable | true is enable, false is disable. |
void SDMMCHOST_SwitchToVoltage | ( | sdmmchost_t * | host, |
uint32_t | voltage | ||
) |
host | host handler |
voltage | switch to voltage level. |
status_t SDMMCHOST_CardDetectInit | ( | sdmmchost_t * | host, |
void * | cd | ||
) |
host | host handler |
cd | card detect configuration |
status_t SDMMCHOST_PollingCardDetectStatus | ( | sdmmchost_t * | host, |
uint32_t | waitCardStatus, | ||
uint32_t | timeout | ||
) |
host | host handler |
waitCardStatus | status which user want to wait |
timeout | wait time out. |
kStatus_Success | detect card insert |
kStatus_Fail | card insert event fail |
uint32_t SDMMCHOST_CardDetectStatus | ( | sdmmchost_t * | host | ) |
host | host handler |
kSD_Inserted,kSD_Removed |
status_t SDMMCHOST_Init | ( | sdmmchost_t * | host | ) |
Thread safe function, please note that the function will create the mutex lock dynamically by default, so to avoid the mutex create redundantly, application must follow bellow sequence for card re-initialization
host | host handler |
kStatus_Success | host init success |
kStatus_Fail | event fail |
void SDMMCHOST_Deinit | ( | sdmmchost_t * | host | ) |
Please note it is a thread safe function.
host | host handler |
void SDMMCHOST_SetCardPower | ( | sdmmchost_t * | host, |
bool | enable | ||
) |
host | host handler |
enable | true is power on, false is power down. |
status_t SDMMCHOST_TransferFunction | ( | sdmmchost_t * | host, |
sdmmchost_transfer_t * | content | ||
) |
Please note it is a thread safe function.
host | host handler |
content | transfer content. |
status_t SDMMCHOST_ExecuteTuning | ( | sdmmchost_t * | host, |
uint32_t | tuningCmd, | ||
uint32_t * | revBuf, | ||
uint32_t | blockSize | ||
) |
host | host handler |
tuningCmd | tuning command. |
revBuf | receive buffer pointer |
blockSize | tuning data block size. |
void SDMMCHOST_Reset | ( | sdmmchost_t * | host | ) |
host | host handler |
void SDMMCHOST_ConvertDataToLittleEndian | ( | sdmmchost_t * | host, |
uint32_t * | data, | ||
uint32_t | wordSize, | ||
uint32_t | format | ||
) |
host | host handler. |
data | data buffer address. |
wordSize | data buffer size in word. |
format | data packet format. |