LonelyWolf / stm32

STM32 stuff
The Unlicense
949 stars 496 forks source link

Перевод sd card в high-speed mode #13

Closed EverDoubtful closed 6 years ago

EverDoubtful commented 6 years ago

Здравствуйте Дмитрий, видел ваш коммент здесь(http://forum.easyelectronics.ru/viewtopic.php?f=35&t=29003) насчет перевода sd card в high-speed mode в stm32. Формирую cmd52 по всячески, но получаю тайм-аут постоянно. Подскажите если делали, пожалуйста.

LonelyWolf commented 6 years ago

Привет. Давно это было, сейчас прочитал и не припомню, с чего я на ту штуку уперся, т.к. CMD52 - это для SDIO I/O режима (или как там это зовется). Наверное хотел подсказать, как можно проверить, поддерживает ли карта HS... Для "обычного" SD для переключения в HS надо использовать команду CMD6. Сначала проверить, поддерживает ли карта HS (режим check function), а потом, если да, выдать запрос на переключение (режим switch function). Я игрался с этой функцией, но все мои карты и без явного запроса на переход в HS писали, что они и так уже в этом режиме (бит SHS установлен и BSS биты равны 001, что для 3.3V интерфейса означает SDR25 или 50MHz). Запрос этой команды в режиме switch ничего не менял. Включение BYPASS для SDIO на L4 давало 48МГц на линиях и скорость передачи увеличивалась почти вдвое. В общем, все карты, что я пробовал (от нонеймовских китайских 128Мб до крутого SDXC кингстона на 128Гб), прекрасно работали на 48МГц в режиме байпаса без всяких предварительных танцев с командами. И вот причину этого я так и не понял: я делал что-то не так, либо современные карты по дефолту не прочь работать на 50МГц из коробки...

EverDoubtful commented 6 years ago

Привет, пытал я эту команду, что-то все не то было. Потом нашел решение здесь http://vrtp.ru/index.php?showtopic=29688&st=150 Но ваш ответ придал мне уверенности что это возможно сделать, спасибо. Паузы большие (100, 200, 350 мс) между пакетами бывают иногда. Я слышал что это допустимо стандартом, вы как-нибудь боролись с таким явлением?

вт, 4 сент. 2018 г. в 1:52, Dmitry notifications@github.com:

Привет. Давно это было, сейчас прочитал и не припомню, с чего я на ту штуку уперся, т.к. CMD52 - это для SDIO I/O режима (или как там это зовется). Наверное хотел подсказать, как можно проверить, поддерживает ли карта HS... Для "обычного" SD для переключения в HS надо использовать команду CMD6. Сначала проверить, поддерживает ли карта HS (режим check function), а потом, если да, выдать запрос на переключение (режим switch function). Я игрался с этой функцией, но все мои карты и без явного запроса на переход в HS писали, что они и так уже в этом режиме (бит SHS установлен и BSS биты равны 001, что для 3.3V интерфейса означает SDR25 или 50MHz). Запрос этой команды в режиме switch ничего не менял. Включение BYPASS для SDIO на L4 давало 48МГц на линиях и скорость передачи увеличивалась почти вдвое. В общем, все карты, что я пробовал (от нонеймовских китайских 128Мб до крутого SDXC кингстона на 128Гб), прекрасно работали на 48МГц в режиме байпаса без всяких предварительных танцев с командами. И вот причину этого я так и не понял: я делал что-то не так, либо современные карты по дефолту не прочь работать на 50МГц из коробки...

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/LonelyWolf/stm32/issues/13#issuecomment-418202125, or mute the thread https://github.com/notifications/unsubscribe-auth/ABLyd_BjOIY2oem2l__PHYqJyiMBadsJks5uXbKigaJpZM4WXL9g .

LonelyWolf commented 6 years ago

В той теме много архивов прилеплено, лень было искать где там решение... но раз заработало, то отлично :) А на счет пауз - это смотря где они. На чтение стандарт отводит 100мс, на запись 250мс. Для SDXC вроде вдвое больше дозволительно (по крайней мере точно помню, что запись 500мс). Еще порой карта после записи приличного объема "подтупливает" в programming state. С этим бороться никак, просто стараться обрабатывать события с вменяемыми тайматуами. Также заметил, что 128MB карта дает чтение/запись значительно (в разы порой) быстрее, чем всякие толстые SDHC/SDXC... грубо говоря, чем больше объем карты, тем она неповоротливей.

ЗЫ: позже закомичу кусок с функцией перехода в HS режим... думал, что есть в репе, а оказывается нет.