The KSDK provides a driver to access the Secured Digital Card based on the SPI driver.
Function groups
This function group implements the SD card functional API in the SPI mode.
Typical use case
{
return;
}
memset(g_testWriteBuffer, 0x17U, sizeof(g_testWriteBuffer));
while (true)
{
memset(g_testReadBuffer, 0U, sizeof(g_testReadBuffer));
if (memcmp(g_testReadBuffer, g_testReadBuffer, sizeof(g_testWriteBuffer)))
{
break;
}
}
|
enum | _sdspi_status {
kStatus_SDSPI_SetFrequencyFailed = MAKE_STATUS(kStatusGroup_SDSPI, 0U),
kStatus_SDSPI_ExchangeFailed = MAKE_STATUS(kStatusGroup_SDSPI, 1U),
kStatus_SDSPI_WaitReadyFailed = MAKE_STATUS(kStatusGroup_SDSPI, 2U),
kStatus_SDSPI_ResponseError = MAKE_STATUS(kStatusGroup_SDSPI, 3U),
kStatus_SDSPI_WriteProtected = MAKE_STATUS(kStatusGroup_SDSPI, 4U),
kStatus_SDSPI_GoIdleFailed = MAKE_STATUS(kStatusGroup_SDSPI, 5U),
kStatus_SDSPI_SendCommandFailed = MAKE_STATUS(kStatusGroup_SDSPI, 6U),
kStatus_SDSPI_ReadFailed = MAKE_STATUS(kStatusGroup_SDSPI, 7U),
kStatus_SDSPI_WriteFailed = MAKE_STATUS(kStatusGroup_SDSPI, 8U),
kStatus_SDSPI_SendInterfaceConditionFailed,
kStatus_SDSPI_SendOperationConditionFailed,
kStatus_SDSPI_ReadOcrFailed = MAKE_STATUS(kStatusGroup_SDSPI, 11U),
kStatus_SDSPI_SetBlockSizeFailed = MAKE_STATUS(kStatusGroup_SDSPI, 12U),
kStatus_SDSPI_SendCsdFailed = MAKE_STATUS(kStatusGroup_SDSPI, 13U),
kStatus_SDSPI_SendCidFailed = MAKE_STATUS(kStatusGroup_SDSPI, 14U),
kStatus_SDSPI_StopTransmissionFailed = MAKE_STATUS(kStatusGroup_SDSPI, 15U),
kStatus_SDSPI_SendApplicationCommandFailed
} |
| SDSPI API status. More...
|
|
enum | _sdspi_card_flag {
kSDSPI_SupportHighCapacityFlag = (1U << 0U),
kSDSPI_SupportSdhcFlag = (1U << 1U),
kSDSPI_SupportSdxcFlag = (1U << 2U),
kSDSPI_SupportSdscFlag = (1U << 3U)
} |
| SDSPI card flag. More...
|
|
enum | sdspi_response_type_t {
kSDSPI_ResponseTypeR1 = 0U,
kSDSPI_ResponseTypeR1b = 1U,
kSDSPI_ResponseTypeR2 = 2U,
kSDSPI_ResponseTypeR3 = 3U,
kSDSPI_ResponseTypeR7 = 4U
} |
| SDSPI response type. More...
|
|
Data Fields |
uint32_t | busBaudRate |
| Bus baud rate.
|
|
status_t(* | setFrequency )(uint32_t frequency) |
| Set frequency of SPI.
|
|
status_t(* | exchange )(uint8_t *in, uint8_t *out, uint32_t size) |
| Exchange data over SPI.
|
|
uint32_t(* | getCurrentMilliseconds )(void) |
| Get current time in milliseconds.
|
|
Define the card structure including the necessary fields to identify and describe the card.
uint32_t sdspi_card_t::flags |
Enumerator |
---|
kStatus_SDSPI_SetFrequencyFailed |
Set frequency failed.
|
kStatus_SDSPI_ExchangeFailed |
Exchange data on SPI bus failed.
|
kStatus_SDSPI_WaitReadyFailed |
Wait card ready failed.
|
kStatus_SDSPI_ResponseError |
Response is error.
|
kStatus_SDSPI_WriteProtected |
Write protected.
|
kStatus_SDSPI_GoIdleFailed |
Go idle failed.
|
kStatus_SDSPI_SendCommandFailed |
Send command failed.
|
kStatus_SDSPI_ReadFailed |
Read data failed.
|
kStatus_SDSPI_WriteFailed |
Write data failed.
|
kStatus_SDSPI_SendInterfaceConditionFailed |
Send interface condition failed.
|
kStatus_SDSPI_SendOperationConditionFailed |
Send operation condition failed.
|
kStatus_SDSPI_ReadOcrFailed |
Read OCR failed.
|
kStatus_SDSPI_SetBlockSizeFailed |
Set block size failed.
|
kStatus_SDSPI_SendCsdFailed |
Send CSD failed.
|
kStatus_SDSPI_SendCidFailed |
Send CID failed.
|
kStatus_SDSPI_StopTransmissionFailed |
Stop transmission failed.
|
kStatus_SDSPI_SendApplicationCommandFailed |
Send application command failed.
|
Enumerator |
---|
kSDSPI_SupportHighCapacityFlag |
Card is high capacity.
|
kSDSPI_SupportSdhcFlag |
Card is SDHC.
|
kSDSPI_SupportSdxcFlag |
Card is SDXC.
|
kSDSPI_SupportSdscFlag |
Card is SDSC.
|
Enumerator |
---|
kSDSPI_ResponseTypeR1 |
Response 1.
|
kSDSPI_ResponseTypeR1b |
Response 1 with busy.
|
kSDSPI_ResponseTypeR2 |
Response 2.
|
kSDSPI_ResponseTypeR3 |
Response 3.
|
kSDSPI_ResponseTypeR7 |
Response 7.
|
This function initializes the card on a specific SPI instance.
- Parameters
-
- Return values
-
kStatus_SDSPI_SetFrequencyFailed | Set frequency failed. |
kStatus_SDSPI_GoIdleFailed | Go idle failed. |
kStatus_SDSPI_SendInterfaceConditionFailed | Send interface condition failed. |
kStatus_SDSPI_SendOperationConditionFailed | Send operation condition failed. |
kStatus_Timeout | Send command timeout. |
kStatus_SDSPI_NotSupportYet | Not support yet. |
kStatus_SDSPI_ReadOcrFailed | Read OCR failed. |
kStatus_SDSPI_SetBlockSizeFailed | Set block size failed. |
kStatus_SDSPI_SendCsdFailed | Send CSD failed. |
kStatus_SDSPI_SendCidFailed | Send CID failed. |
kStatus_Success | Operate successfully. |
This function deinitializes the specific card.
- Parameters
-
This function checks if the card is write-protected via CSD register.
- Parameters
-
- Return values
-
true | Card is read only. |
false | Card isn't read only. |
status_t SDSPI_ReadBlocks |
( |
sdspi_card_t * |
card, |
|
|
uint8_t * |
buffer, |
|
|
uint32_t |
startBlock, |
|
|
uint32_t |
blockCount |
|
) |
| |
This function reads blocks from specific card.
- Parameters
-
card | Card descriptor. |
buffer | the buffer to hold the data read from card |
startBlock | the start block index |
blockCount | the number of blocks to read |
- Return values
-
kStatus_SDSPI_SendCommandFailed | Send command failed. |
kStatus_SDSPI_ReadFailed | Read data failed. |
kStatus_SDSPI_StopTransmissionFailed | Stop transmission failed. |
kStatus_Success | Operate successfully. |
status_t SDSPI_WriteBlocks |
( |
sdspi_card_t * |
card, |
|
|
uint8_t * |
buffer, |
|
|
uint32_t |
startBlock, |
|
|
uint32_t |
blockCount |
|
) |
| |
This function writes blocks to specific card
- Parameters
-
card | Card descriptor. |
buffer | the buffer holding the data to be written to the card |
startBlock | the start block index |
blockCount | the number of blocks to write |
- Return values
-
kStatus_SDSPI_WriteProtected | Card is write protected. |
kStatus_SDSPI_SendCommandFailed | Send command failed. |
kStatus_SDSPI_ResponseError | Response is error. |
kStatus_SDSPI_WriteFailed | Write data failed. |
kStatus_SDSPI_ExchangeFailed | Exchange data over SPI failed. |
kStatus_SDSPI_WaitReadyFailed | Wait card to be ready status failed. |
kStatus_Success | Operate successfully. |