#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; } }