Здравствуйте!
Я успешно адаптировал пример с сайта ST USB MassStorage на своей плате (использовал F103VCT6).
Однако, измеренная скорость чтения оказалась 200, а записи - 36 кБайт/с.
На карточку ( TRANSCEND 2 G MicroSD ) с ПК пишутся файлы по 2МБайт, поэтому надо побыстрее.
Как я понял, в обмене задействован блок 512 байт, равный сектору ( 8 блоков по 64=MAX_BULK_SIZE).
Функция WriteMultiBLocks у меня работает около 12 мс (из-за встроенного цикла задержки, без которого
пишет быстро, почти 1 МБ/с, но только в файлах одни нули потом ), отсюда 512/0.012 = 42 кБ/с, минус
накладные расходы, получаем 36 кБайт. Замена на WriteBlock (пишется все равно 1 сектор) и ReadBlock
дала прирост до 280 при чтении и 70 кБайт/с при записи соответственно. Все равно, этого мало.
Мне нужны советы по оптимизации модуля sdio_stm32f1 или увеличения блока с 512 Б до 16КБ, например,
тогда можно было бы поднять скорость обмена и использовать Write- и ReadMultiBlocks, время выполнения
будет примерно те же 12 мс (замерял на блоках 12КБ).
Проект прилагаю (основан на примере ST и STM32Primer2_GPS_Tracker-master от Nemui Trinomius.
Ссылки на рабочие проекты приветствуются, особенно gcc и iar.