реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Скорость High Speed USB на STM32F2/F4
Flexz
сообщение Oct 2 2012, 12:20
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Кто уже реализовывал, каких скоростей удалось добиться? Зависит ли производительность от микросхемы физического уровня?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 2 2012, 12:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Flexz @ Oct 2 2012, 15:20) *
Кто уже реализовывал, каких скоростей удалось добиться? Зависит ли производительность от микросхемы физического уровня?

На основе модернизированной библиотеки от ST для Mass-Storage лично мне удавалось получать чуть более восьми Мегабайт в секунду (в качестве носителя использовалась SD-карточка; если же организовать "диск" прямо в памяти МК, то можно легко получить 20 Мегабайт, и даже больше). Другой специалист, переписавший код от ST, по его словам, получил порядка 12 Мегабайт, но я лично этого не видел ...
P.S. От PHY это едва ли сильно зависит. В обоих описанных мною случаях речь идет о USB3300 ...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Oct 2 2012, 14:03
Сообщение #3


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(kovigor @ Oct 2 2012, 16:44) *
На основе модернизированной библиотеки от ST для Mass-Storage лично мне удавалось получать чуть более восьми Мегабайт в секунду...

А это для чтения или записи?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 2 2012, 14:27
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(sonycman @ Oct 2 2012, 17:03) *
А это для чтения или записи?

Скорости весьма близки в обоих направлениях. "Бутылочное горлышко" в данном случае - не USB, а интерфейс SDIO в МК, который не позволяет при обмене с карточкой поднять тактовую частоту этого обмена выше 12 МГц ...
Go to the top of the page
 
+Quote Post
Flexz
сообщение Oct 2 2012, 17:22
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Цитата(kovigor @ Oct 2 2012, 16:44) *
На основе модернизированной библиотеки от ST для Mass-Storage...

"модернизированной" - это в смысле просто допиленной/оптимизированной под себя, или косяки какие-то были?
PS а 20+МБ это гуд)
Go to the top of the page
 
+Quote Post
Allregia
сообщение Oct 2 2012, 20:32
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(kovigor @ Oct 2 2012, 16:27) *
Скорости весьма близки в обоих направлениях. "Бутылочное горлышко" в данном случае - не USB, а интерфейс SDIO в МК, который не позволяет при обмене с карточкой поднять тактовую частоту этого обмена выше 12 МГц ...

А у Ф4 разве не 25 ?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 2 2012, 21:33
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Flexz @ Oct 2 2012, 20:22) *
"модернизированной" - это в смысле просто допиленной/оптимизированной под себя, или косяки какие-то были?
PS а 20+МБ это гуд)

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

Цитата(Allregia @ Oct 2 2012, 23:32) *
А у Ф4 разве не 25 ?

Прошу прощения. Поднял старые записи. Там было на самом деле не 12 МГц тактовой, а 24 ...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Oct 3 2012, 01:45
Сообщение #8


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(kovigor @ Oct 3 2012, 01:33) *
Прошу прощения. Поднял старые записи. Там было на самом деле не 12 МГц тактовой, а 24 ...

То есть у топовых STM32 получился кастрированный SDIO, который не работает в режиме High Speed - 48 МГц?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 3 2012, 04:18
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(sonycman @ Oct 3 2012, 04:45) *
То есть у топовых STM32 получился кастрированный SDIO, который не работает в режиме High Speed - 48 МГц?

Да, 48 выставить нельзя. 25 максимум, насколько я помню. Отсюда проблема со скоростью. Это для STM32F2xx. Возможно, для STM32F4xx эта проблема уже решена ...
Go to the top of the page
 
+Quote Post
Allregia
сообщение Oct 3 2012, 06:05
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(sonycman @ Oct 3 2012, 03:45) *
То есть у топовых STM32 получился кастрированный SDIO, который не работает в режиме High Speed - 48 МГц?


25МГц "by default", но там есть какая-то хитрая фраза про более высокую частоту. У меня пока руки не дошли разобраться.
Go to the top of the page
 
+Quote Post
Flexz
сообщение Oct 3 2012, 07:06
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



про сдшки в обоих мануалах (на 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 - непонятно.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 3 2012, 18:48
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



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

Код свой. Используется конвеер и ртос. Сделано в рамках проекта mkernel. В ближайшее время выложу в git.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 3 2012, 19:19
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(MBR @ Oct 3 2012, 22:48) *
В теории есть 50 и 100 мгцовые карты, но я в продаже не видел, да и не уверен, что по вольтажу совместимы.

Почти все продающиеся сейчас SD-карты - 50MHz и 2.7-3.6V
Go to the top of the page
 
+Quote Post
sonycman
сообщение Oct 3 2012, 19:38
Сообщение #14


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(MBR @ Oct 3 2012, 22:48) *
Максимум для существующих карт - 25 мгц. В теории есть 50 и 100 мгцовые карты, но я в продаже не видел...

А как вы определили, что в продаже карты только на 25 МГц? rolleyes.gif
У меня все SDHC карты, купленные за последние годы, без проблем работают на 48-50 МГц со скоростями до 15 МБ\сек.
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 9 2012, 07:53
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



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

Итого: 17 МБ/с на Qumo 16GB class 10, против 11 на 24 МГц
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 9 2012, 09:26
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(MBR @ Oct 9 2012, 10:53) *
Господа, я был адски неправ. Ошибка заключалась в том, что я вычитывал CSD регистры до перехода в high speed. Успешно запустил 48 МГц на STM32F2 в режиме divisor bypass.

Не понял, у вас на карточку подаются 48 МГц тактового сигнала вместо 24 ?
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 9 2012, 09:40
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(kovigor @ Oct 9 2012, 13:26) *
Не понял, у вас на карточку подаются 48 МГц тактового сигнала вместо 24 ?

Почему вместо? Сначала 400 КГц 1 бит, потом конфигурирование карты, 24 МГц 4 бит, переход в high speed (если карта поддерживает) и 48 МГц. Теоретически можно 50, но у меня почему-то pll не завелась. Пример либы от стм не умеет в high speed переходить.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 9 2012, 09:59
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(MBR @ Oct 9 2012, 12:40) *
Теоретически можно 50, но у меня почему-то pll не завелась.

Ясно. Но вот как вы выставили 48МГц, если в даташите написано, что 25МГц - это предел ?
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 9 2012, 10:03
Сообщение #19


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(kovigor @ Oct 9 2012, 13:59) *
Ясно. Но вот как вы выставили 48МГц, если в даташите написано, что 25МГц - это предел ?


Нет там такого:

Цитата
The USB OTG FS clock (48 MHz), the random analog generator (RNG) clock (≤ 48 MHz) and the SDIO clock (≤ 48 MHz) which are coming from a specific output of PLL (PLL48CLK)


Перечитал внимательно, теперь сам вижу, почему на 50 не завелось.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 9 2012, 10:11
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(MBR @ Oct 9 2012, 13:03) *
Нет там такого:

Ну, не знаю. А как же быть вот с этой фразой из Reference Manual:

"SDIO_CKis the clock to the card: one bit is transferred on both command and data lines
with each clock cycle. 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)." ?
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 9 2012, 10:22
Сообщение #21


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(kovigor @ Oct 9 2012, 14:11) *
Ну, не знаю. А как же быть вот с этой фразой из Reference Manual:

"SDIO_CKis the clock to the card: one bit is transferred on both command and data lines
with each clock cycle. 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)." ?

Я подозреваю, что тут говорится о физических ограничениях карт, а не самом интерфейсе и его просто забыли поправить.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 9 2012, 10:37
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(MBR @ Oct 9 2012, 13:22) *
Я подозреваю, что тут говорится о физических ограничениях карт, а не самом интерфейсе и его просто забыли поправить.

Странно. У меня Manual Doc ID 15403 Rev 4, и там на стр. 705 это написано. А в вашем Manual есть эта фраза ?
Go to the top of the page
 
+Quote Post
MBR
сообщение Oct 9 2012, 10:44
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(kovigor @ Oct 9 2012, 14:37) *
Странно. У меня Manual Doc ID 15403 Rev 4, и там на стр. 705 это написано. А в вашем Manual есть эта фраза ?

У меня тот же самый мануал. Но подумайте сами - на уровне передачи физических сигналов разница между SD и MMC это только 4 или 8 бит данных. Так почему должно быть такое нелепое ограничение на SD?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Oct 9 2012, 10:48
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(MBR @ Oct 9 2012, 13:44) *
У меня тот же самый мануал. Но подумайте сами - на уровне передачи физических сигналов разница между SD и MMC это только 4 или 8 бит данных. Так почему должно быть такое нелепое ограничение на SD?

Я им в техподдержку напишу. Гадать можно до бесконечности. Похоже, вы правы, но интересно, что скажет производитель ...
Go to the top of the page
 
+Quote Post
Flexz
сообщение Nov 5 2012, 18:26
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Ну вот и я добрался до железа с HS USB sm.gif Результаты очень даже радуют. На рам-диске (в озу контроллера) в режиме Mass-Storage сходу получилось 30МБ/с, с zero copy - уже 35, это без файловой системы, прямой доступ к диску. После устранения оверхеда в лице mass-storage, удалось раскачать до 42МБ/с, правда этот вариант несколько искусственный, т.к. проц просто непрерывно передает большие блоки, но для оценки максимальной достижимой производительности - сойдет.
Еще что интересно - на таких скоростях похоже уже начинает оказывать влияние контроллер хоста. Указанные выше цифры были получены при подключении к USB 3.0 порту компа, в 2.0 портах скорость на 3-6 МБ/с ниже. Понятное дело, что HS/SS ни при чем, дело либо в организации самого контроллера, либо производительности шины на которой он сидит.
Go to the top of the page
 
+Quote Post
dubb
сообщение Nov 7 2012, 07:23
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 18-08-09
Из: Сибири
Пользователь №: 51 936



Как я понял, Вы все используете USB в режиме Device?
А кто-нибудь тестил USB HS в режиме, когда контроллер - хост? Если да, то какие скорости удалось получить? Сильно-ли пришлось пилить существующие экзамплы?
Спасибо

Сообщение отредактировал dubb - Nov 7 2012, 10:15
Go to the top of the page
 
+Quote Post
Flexz
сообщение Nov 7 2012, 08:27
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Да, пока только девайс. Хост еще вообще не смотрел, но в ближайшей перспективе буду, как нарисуется вторая плата. Планируется соединить две STM32F4 одну хостом, другую девайсом.
Go to the top of the page
 
+Quote Post
Flexz
сообщение Dec 2 2012, 14:57
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Добрался наконец-то до хоста. F4 с флешкой, судя по первым экспериментам скорость упирается в производительность флешки. Пробовал три штуки:
1. Довольно тормозная флешка Emtec. Комп ее пишет на скорости где-то 2.7-2.9МБ/с, процессор - 2.5
2. СДшка через ридер, компе 8МБ/с, проц - 7.5
3. Большая и шустрая флешка 32гига, на компе пишется со скоростью 20-22МБ/с в HS режиме почему-то не пошла. Проц ее видит, можно посмотреть каталоги, но при попытке создать файл - он создается, но в него ничего не пишется, функция записи тупо повисает. Где именно пока не разбирался.

В FS режиме все три показывают скорость в районе 0.7-0.9 МБ/с.
Go to the top of the page
 
+Quote Post
MBR
сообщение Dec 3 2012, 07:50
Сообщение #29


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Цитата(Flexz @ Dec 2 2012, 18:57) *
Проц ее видит, можно посмотреть каталоги, но при попытке создать файл - он создается, но в него ничего не пишется, функция записи тупо повисает. Где именно пока не разбирался.

У меня такое было, когда не было включено увеличенное энергопотребление по CMD6.

По usb-hs скорости впечатляют. Это c какой частотой микроконтроллера получено? Какая обвязка?
Go to the top of the page
 
+Quote Post
Flexz
сообщение Dec 3 2012, 08:54
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 9-10-08
Из: Московская обл.
Пользователь №: 40 797



Так у меня обычная USB-Flash, только во втором тесте подрубал СД-шку через ридер.
Частота полная - 168МГц, физика - USB3300.

У меня есть подозрения, что где-то в HS-библиотеке бага-таки есть, т.к. еще когда я гонял эмулятор ком-порта - передача рандомно висла. Так же прога, но в FS режиме работала нормально часами. Надо копаться в этом деле с отладчиком, а времени нету пока.
Go to the top of the page
 
+Quote Post
MBR
сообщение Dec 4 2012, 05:42
Сообщение #31


Частый гость
**

Группа: Участник
Сообщений: 107
Регистрация: 26-09-10
Пользователь №: 59 748



Еще один момент. Может и не в либе дело. Все буферы должны быть по doubleword align. Самый простой способ проверить - отрубить дма и посмотреть.
Go to the top of the page
 
+Quote Post
GeorgeVo
сообщение Dec 28 2012, 08:42
Сообщение #32





Группа: Новичок
Сообщений: 3
Регистрация: 27-08-09
Пользователь №: 52 066



Люди, нужен драйвер под STM32F4xx в режиме BULK. На контроллере нужно иметь несколько endpoint'ов, часть которых обрабатывается программно, часть посредством DMA вводит/выводит данные во внешнюю память. По этому каналу нужно обеспечить скорость не ниже 15Mbyte/sec. Кто-то сделать сможет? Готовы отблагодарить... vgeorge@yandex.ru

Go to the top of the page
 
+Quote Post
Allregia
сообщение Dec 28 2012, 13:09
Сообщение #33


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Цитата(MBR @ Dec 4 2012, 07:42) *
Еще один момент. Может и не в либе дело. Все буферы должны быть по doubleword align. Самый простой способ проверить - отрубить дма и посмотреть.


Дело похоже и в либе, и в проце самом, потом как с процом ревизии "Z" оно виснет реже чем с "А". Но все равно виснет чере какое-то время sad.gif
Go to the top of the page
 
+Quote Post
AndreyKar
сообщение Jan 23 2013, 06:42
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 17-01-07
Пользователь №: 24 508



Без микросхемы физического уровня т.н. работал? Какие результаты, устойчивость работы?
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 03:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.06846 секунд с 7
ELECTRONIX ©2004-2016