47 lines
1.3 KiB
C
Executable File
47 lines
1.3 KiB
C
Executable File
#include "hw_config.h"
|
|
|
|
/* SDIO Interface */
|
|
static sd_sdio_if_t sdio_if = {
|
|
/*
|
|
Pins CLK_gpio, D1_gpio, D2_gpio, and D3_gpio are at offsets from pin
|
|
D0_gpio. The offsets are determined by sd_driver\SDIO\rp2040_sdio.pio.
|
|
CLK_gpio = (D0_gpio + SDIO_CLK_PIN_D0_OFFSET) % 32;
|
|
As of this writing, SDIO_CLK_PIN_D0_OFFSET is 30,
|
|
which is -2 in mod32 arithmetic, so:
|
|
CLK_gpio = D0_gpio -2.
|
|
D1_gpio = D0_gpio + 1;
|
|
D2_gpio = D0_gpio + 2;
|
|
D3_gpio = D0_gpio + 3;
|
|
*/
|
|
.CMD_gpio = 3,
|
|
.D0_gpio = 4,
|
|
.baud_rate = 125 * 1000 * 1000 / 6 // 20833333 Hz
|
|
};
|
|
|
|
/* Hardware Configuration of the SD Card socket "object" */
|
|
static sd_card_t sd_card = {.type = SD_IF_SDIO, .sdio_if_p = &sdio_if};
|
|
|
|
/**
|
|
* @brief Get the number of SD cards.
|
|
*
|
|
* @return The number of SD cards, which is 1 in this case.
|
|
*/
|
|
size_t sd_get_num() { return 1; }
|
|
|
|
/**
|
|
* @brief Get a pointer to an SD card object by its number.
|
|
*
|
|
* @param[in] num The number of the SD card to get.
|
|
*
|
|
* @return A pointer to the SD card object, or @c NULL if the number is invalid.
|
|
*/
|
|
sd_card_t* sd_get_by_num(size_t num) {
|
|
if (0 == num) {
|
|
// The number 0 is a valid SD card number.
|
|
// Return a pointer to the sd_card object.
|
|
return &sd_card;
|
|
} else {
|
|
// The number is invalid. Return @c NULL.
|
|
return NULL;
|
|
}
|
|
} |