Примеров именно под Discovery я не нашёл, пришлось выдирать и переправлять из примеров к плате STM3240G-EVAL.
Получившийся код прилагаю.
Сама карта подключена проводками к соответствующим ногам проца:
PC8 - DAT0
PC9 - DAT1
PC10 - DAT2
PC11 - DAT3
PC12 - CLK
PD2 - CMD
На всех ногах, кроме CLK стоят pull-upы 47к на +3в. Как собственно нарисовано в схеме STM3240G-EVAL

Выключателей CardDetect и ReadOnly нет вообще (разъём коряво припаяли, они всё время замкнуты на корпусе

Опрос:
Код
// Init SD card
sdErr = SD_Init ( );
if ( sdErr == SD_OK )
{ // Карта инициализирована
isSdPresent = true;
STM_EVAL_LEDOn ( LED_GREEN ); // Светодиодик
strcpy ( buffer, "Card init OK\r\n" );
} // if
else
{
isSdPresent = false;
STM_EVAL_LEDOn ( LED_RED ); // Ошибка инициализации карты
sprintf ( buffer, "Card init FAIL, code = %d\r\n", (int)sdErr );
} // if
sdErr = SD_Init ( );
if ( sdErr == SD_OK )
{ // Карта инициализирована
isSdPresent = true;
STM_EVAL_LEDOn ( LED_GREEN ); // Светодиодик
strcpy ( buffer, "Card init OK\r\n" );
} // if
else
{
isSdPresent = false;
STM_EVAL_LEDOn ( LED_RED ); // Ошибка инициализации карты
sprintf ( buffer, "Card init FAIL, code = %d\r\n", (int)sdErr );
} // if
Результат - код ошибки 2 - CRC Error. buffer выводится на комп через виртуальный USB COM-порт.
Пытался регулируовать скорость макросом SDIO_TRANSFER_CLK_DIV - вообще виснет.
Сама карта (даже 2) рабочая. В картридерах работают и по SPI (на проце AT91SAM7S256) тоже.
Помогите, кто может.
Ещё непонятно, что такое
#define SDIO_FIFO_ADDRESS ((uint32_t)0x40012C80)
Буфер обмена с картой? Тогда чего адрес фиксированый? Может не туда улетает?
Спасибо.