Code: Select all
------------structs
MMCDriver MMCD1;
/* Maximum speed SPI configuration (18MHz, CPHA=0, CPOL=0, MSb first).*/
static SPIConfig hs_spicfg = {NULL, GPIOA, 15, 0};
/* Low speed SPI configuration (281.250kHz, CPHA=0, CPOL=0, MSb first).*/
static SPIConfig ls_spicfg = {NULL, GPIOA, 15,
SPI_CR1_BR_2 | SPI_CR1_BR_1};
/* MMC/SD over SPI driver configuration.*/
static MMCConfig mmccfg = {&SPID1, &ls_spicfg, &hs_spicfg};
----in main-----------------------------------------------------------
palSetPadMode(GPIOA, 4, PAL_MODE_UNCONNECTED);
palSetPadMode(GPIOA, 5, PAL_MODE_UNCONNECTED);
palSetPadMode(GPIOA, 6, PAL_MODE_UNCONNECTED);
palSetPadMode(GPIOA, 7, PAL_MODE_UNCONNECTED);
palSetPadMode(GPIOB, 3, PAL_MODE_ALTERNATE(5) | PAL_MODE_INPUT_PULLUP);
palSetPadMode(GPIOB, 4, PAL_MODE_ALTERNATE(5) | PAL_MODE_INPUT_PULLUP);
palSetPadMode(GPIOB, 5, PAL_MODE_ALTERNATE(5));
palSetPadMode(GPIOA, 15, PAL_MODE_ALTERNATE(5) | PAL_MODE_INPUT_PULLUP);
mmcObjectInit(&MMCD1);
mmcStart(&MMCD1, &mmccfg);
if (mmcConnect(&MMCD1)) {
chprintf(chp, "SD CARD FAILED");
} else {
chprintf(chp, "SD CARD SUCCEEDED");
}
I always get failed and can't work out why. I've tried external pullups, no pullups, etc, to no avail.
Best
Gareth