Перейти к содержанию
    

Скорость High Speed USB на STM32F2/F4

Кто уже реализовывал, каких скоростей удалось добиться? Зависит ли производительность от микросхемы физического уровня?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто уже реализовывал, каких скоростей удалось добиться? Зависит ли производительность от микросхемы физического уровня?

На основе модернизированной библиотеки от ST для Mass-Storage лично мне удавалось получать чуть более восьми Мегабайт в секунду (в качестве носителя использовалась SD-карточка; если же организовать "диск" прямо в памяти МК, то можно легко получить 20 Мегабайт, и даже больше). Другой специалист, переписавший код от ST, по его словам, получил порядка 12 Мегабайт, но я лично этого не видел ...

P.S. От PHY это едва ли сильно зависит. В обоих описанных мною случаях речь идет о USB3300 ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На основе модернизированной библиотеки от ST для Mass-Storage лично мне удавалось получать чуть более восьми Мегабайт в секунду...

А это для чтения или записи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А это для чтения или записи?

Скорости весьма близки в обоих направлениях. "Бутылочное горлышко" в данном случае - не USB, а интерфейс SDIO в МК, который не позволяет при обмене с карточкой поднять тактовую частоту этого обмена выше 12 МГц ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На основе модернизированной библиотеки от ST для Mass-Storage...

"модернизированной" - это в смысле просто допиленной/оптимизированной под себя, или косяки какие-то были?

PS а 20+МБ это гуд)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорости весьма близки в обоих направлениях. "Бутылочное горлышко" в данном случае - не USB, а интерфейс SDIO в МК, который не позволяет при обмене с карточкой поднять тактовую частоту этого обмена выше 12 МГц ...

А у Ф4 разве не 25 ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

"модернизированной" - это в смысле просто допиленной/оптимизированной под себя, или косяки какие-то были?

PS а 20+МБ это гуд)

Ошибок не было. Но я, например, доработал механизм обмена, в результате проект стал давать указанную мной скорость против изначально наблюдавшихся пяти с чем-то Мегабайт ...

 

А у Ф4 разве не 25 ?

Прошу прощения. Поднял старые записи. Там было на самом деле не 12 МГц тактовой, а 24 ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прошу прощения. Поднял старые записи. Там было на самом деле не 12 МГц тактовой, а 24 ...

То есть у топовых STM32 получился кастрированный SDIO, который не работает в режиме High Speed - 48 МГц?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть у топовых STM32 получился кастрированный SDIO, который не работает в режиме High Speed - 48 МГц?

Да, 48 выставить нельзя. 25 максимум, насколько я помню. Отсюда проблема со скоростью. Это для STM32F2xx. Возможно, для STM32F4xx эта проблема уже решена ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть у топовых STM32 получился кастрированный SDIO, который не работает в режиме High Speed - 48 МГц?

 

25МГц "by default", но там есть какая-то хитрая фраза про более высокую частоту. У меня пока руки не дошли разобраться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

про сдшки в обоих мануалах (на 2 и 4) написано ровно одно и тоже

The clock frequency can vary between 0 MHz and 20 MHz (for a

MultiMediaCard V3.31), between 0 and 48 MHz for a MultiMediaCard V4.0/4.2, or between

0 and 25 MHz (for an SD/SD I/O card).

Чем вызвано ограничение для SD - непонятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня получилось USB порядка 20 мб/с при диске в памяти. 10 мб/с при работе с SDIO. Скорость может отличаться в обе стороны при разных картах. pll тактуется на 48 мгц, обмен по шине - 24. Максимум для существующих карт - 25 мгц. В теории есть 50 и 100 мгцовые карты, но я в продаже не видел, да и не уверен, что по вольтажу совместимы. STM32F215

 

Код свой. Используется конвеер и ртос. Сделано в рамках проекта mkernel. В ближайшее время выложу в git.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В теории есть 50 и 100 мгцовые карты, но я в продаже не видел, да и не уверен, что по вольтажу совместимы.

Почти все продающиеся сейчас SD-карты - 50MHz и 2.7-3.6V

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Максимум для существующих карт - 25 мгц. В теории есть 50 и 100 мгцовые карты, но я в продаже не видел...

А как вы определили, что в продаже карты только на 25 МГц? :rolleyes:

У меня все SDHC карты, купленные за последние годы, без проблем работают на 48-50 МГц со скоростями до 15 МБ\сек.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, я был адски неправ. Ошибка заключалась в том, что я вычитывал CSD регистры до перехода в high speed. Успешно запустил 48 МГц на STM32F2 в режиме divisor bypass. Скорость выросла значительно. Протестирую и отпишусь о результатах.

 

Итого: 17 МБ/с на Qumo 16GB class 10, против 11 на 24 МГц

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...