Ну так, на вскидку, могу предложить поэкспериментировать с регистром SDIO_CLKCR - возможно контроллер SDIO быстрее процессора.
Если используется DMA - попробовать с настройкой DMA FIFO, может FIFO переполняется и DMA не успевает забрать данные.
Может данные пропадают между SDIO и DMA, а может между DMA и SRAM. А если используется FSMC - то может между DMA и FSMC.
Но контроллер SDIO похоже вычитывает все данные, т.к. с карты памяти данные идут в сопровождении контрольных сумм, и если бы пропуски были на шине карты то CRC не совпало бы и прием бы остановился. Значит данные теряются после SDIO контроллера (хотя нужно проверить и флаги контроллера SDIO при пропуске данных.
В общем идея такая - либо какой-то узел слишком быстрый, либо другой слишком медленный, либо шина связи между узлами занята обменом еще с каким-то устройством. Попробуйте еще поотключать лишние потоки и проверять свою систему отдельно от всего что может мешать. И скорость SDIO поменьше сделать.
Цитата
Собственно проблема в sd_card_mode.c, который работает только при счастливом стечении обстоятельств.
Взят из иаровского примера IAR-STM32F103ZE-SK...
А насколько совместим этот процессор с Вашим?