Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32 и USB (практика)

Чт ноя 10, 2022 11:06:33

никакого смысла на FS иметь точку 8 байт нет.

А как же EP interrupt в CDC? Она нафиг не нужна, но как бы требуется…

Re: STM32 и USB (практика)

Чт ноя 10, 2022 11:19:45

А как же EP interrupt в CDC? Она нафиг не нужна, но как бы требуется…
С ней-то проблем нет, так как не требуется через неё пересылать большие объемы данных.

Re: STM32 и USB (практика)

Чт ноя 10, 2022 11:29:33

Ну, так если надо большие объемы пересылать, почему бы и размер буфера конечной точки не сделать побольше? Хотя бы 64Б, если больше нельзя…
У меня еще не было времени по OTG почитать, но у "обычных" USB на STM32 размер буфера под USB - от 512Б и выше. У тех же F0, если CAN не использовать - аж килобайт! И если конечных точек немного, а протокол позволяет, можно вполне побольше размер сделать. Можно даже 7 CDC на один интерфейс запихать, места хватит (1024/64=16 - даже 64Б останется свободных).

Re: STM32 и USB (практика)

Чт ноя 10, 2022 11:32:37

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

Re: STM32 и USB (практика)

Чт ноя 10, 2022 11:54:58

почему не работает с маленьким

Надо одновременно в wireshark смотреть, что за пакеты летают, а в отладчике по USART (если сделать буфер побольше, использовать DMA и работать на скорости 3Мбод, то все ОК, я так делал) смотреть диагностический выхлоп прошивки.
Я тоже со временем дойду до OTG. Думал, уже на этой неделе заняться, но завалили бумажной работой. Подозреваю, что уже до середины декабря придется всякие техзадания/отчеты/документацию писать, а не интересными вещами заниматься. Ну и полно текущей работы: те же данные с последних наблюдений надо побыстрей обработать, чтобы в годовой отчет включить.

Re: STM32 и USB (практика)

Чт ноя 10, 2022 12:24:58

В общем, не уверен на 100%, но есть ощущение, что +- понял правильно. ST в который раз удивляет, конечно.

В RM в разделе Operational model/IN data transfers/Generic non-periodic IN data transfers/Internal data flow/2 написано, что при записи в FIFO увеличивается внутренний трехбитовый счетчик пакетов, расположенных на данный момент в FIFO и что число пакетов, которые одновременно могут в FIFO лежать, равно 8. Однако у меня сложилось ощущение, что данное ограничение поменьше, а именно 4, из-за чего проблема не с 8-байтными конечными точками, а точками, под FIFO которых выделено памяти больше, чем x4. В обработчике пустого FIFO надо как-то отслеживать количество пакетов в нем, чтобы не записать лишнего.

Изображение

Вышел из ситуации следующим образом: у меня жестко для каждой IN Точки под FIFO выделяется <Макс. размер пакета>*2 байтов (но RM гласит, что не может быть меньше 64, что для 8-байтовой точки выходит за границу 4), а прерывание по пустому буферу стоит по умолчанию, то есть когда освободилась половина FIFO, что позволяет мне без доп.проверок смело писать в буфер один пакет (ну или сколько там байтов осталось).

UPD: проверил, в обработчике пустого FIFO можно даже 2 пакета записать, то есть в коде у меня пишется MIN(<байт осталось>, 2 * MaxPacketSize)

Re: STM32 и USB (практика)

Пн ноя 14, 2022 22:43:00

Eddy_Em, я тут экспериментов ради попробовал HS и есть две новости (как обычно, разной степени позитива):
1. Если везде поменять "FS" на "HS", то все нормально работает.
2. Все нормально работает в режиме FS. Практически на всех контроллерах (у меня из "топовых" только F407) нет встроенного PHY для HS, надо докупать и устанавливать отдельно (возможно, это было очевидно, но я не знал), что после беглого просмотра Aliexpress сформировало понимание, что это еще около 2$ + обвязка (отдельный чип находил рублей за 100, а готовый модуль стоит почему-то 500+).

Re: STM32 и USB (практика)

Пн ноя 14, 2022 23:26:54

azhel12, спасибо. Я думал, HS будет "напрямую" работать. А вона как!..
Ну, да ладно: разрабатывать обвязку CCD или CMOS я пока не собираюсь, мне и FS за глаза хватит для большинства задач.

Re: STM32 и USB (практика)

Вт ноя 15, 2022 10:02:03

azhel12, спасибо. Я думал, HS будет "напрямую" работать. А вона как!..

Нет. Надо было внимательно искать в рефмане по слову 'USB' и дополнительно в дереве тактирования, идет ли куда надо линия 480 МГц.
Мне удалось найти чуть ли не единственный камень, в котором вроде бы USB-HS есть - GD32E505 / GD32E507 (а вот в GD32E503 нету). Но их еще поди купи. Кстати, если кому-то удастся, пришлите и мне парочку.

Re: STM32 и USB (практика)

Вт ноя 15, 2022 11:01:56

Надо было внимательно искать в рефмане по слову 'USB'
Достаточно было бегло просмотреть. :)

Re: STM32 и USB (практика)

Вт ноя 15, 2022 12:00:35

Недостаточно. С ходу просто непонятно что именно искать.
Разве что линия 480 МГц действительно достаточно очевидна. И то мало ли как производитель решил извратиться.
Кстати, если для вас это так просто, проверьте меня: правда ли, что из распространенных ARM'ов и RISC-V этот USB-HS есть только в gd32e505, gd32e507 или все же есть что-то более доступное?

Re: STM32 и USB (практика)

Вт ноя 15, 2022 12:03:12

COKPOWEHEU, так можно же внешний PHY хоть к F407 прицепить в случае необходимости. В одной из наших сдохших апогейских ПЗСок именно так и сделали: транспортом занимается микроконтроллер, который присобачен к внешнему PHY для обеспечения HS.
Надо бы поковыряться в КМОП'ках на USB3: интересно, как там забульбенили…

Re: STM32 и USB (практика)

Вт ноя 15, 2022 12:03:43

Подозрения, конечно, были изначально, вызванные вопросом "А как оно может работать на 480, если у меня частота процессора 180?", но про отдельный PHY - решение неочевидное.

Re: STM32 и USB (практика)

Вт ноя 15, 2022 14:12:18

COKPOWEHEU, так можно же внешний PHY хоть к F407 прицепить в случае необходимости. В одной из наших сдохших апогейских ПЗСок именно так и сделали: транспортом занимается микроконтроллер, который присобачен к внешнему PHY для обеспечения HS.

Можно. Но это лишние компоненты и куча исследовательской работы почему именно оно не работает - потому что руки кривые и я неправильно написал код, потому что руки кривые и я неправильно спаял обвязку или потому что руки кривые и я не учел СВЧ-эффекты.
Надо бы поковыряться в КМОП'ках на USB3: интересно, как там забульбенили…

Я бы без крайней нужды не полез. Обычные контроллеры и HS-то загрузить не могут, куда им гигабитами ворочать. Плюс те же СВЧ-эффекты: выдерживать длину дорожек, все эти емкости и резонансы, бр-р-р.
azhel12 писал(а):А как оно может работать на 480, если у меня частота процессора 180?"

А в чем собственно проблема, если есть умножители частоты? Модуль USB вполне обособлен, почему бы внутри не стоять своему умножителю, который берет условно 48 МГц и где-то внутри себя умножает на 10.
azhel12 писал(а):но про отдельный PHY - решение неочевидное.

Тоже нет, поскольку если пройтись поиском по "USB" или "OTG" или хотя бы посмотреть описания ножек (а это ведь приходится делать в любом случае - как иначе плату разводить), бросятся в глаза странные названия вроде OTG_HS_ULPI_D5.

Re: STM32 и USB (практика)

Вт ноя 15, 2022 16:31:38

Меня, кстати, поначалу смутила олимексовская плата, которая сейчас на столе лежит (я все надеюсь, что таки смогу выделить неделю-две на опыты с USB, чтобы и на F407 написать CDC). Так у нее разведены оба USB, а внешнего PHY нет! Я вот и понадеялся, что там HS внутри STM'ки, а фигвам… Т.е. оба выхода подключены как обычные FS. Ну и ладно, зато можно придумать какую-нибудь непонятную хрень, чтобы 2 USB было. Не знаю, правда, зачем такое может в реальной жизни понадобиться. Это как мои 7 CDC на одном микроконтроллере: прикольно, но бесполезно. Разве что разделить интерфейсы и вывести один отладочный — с одного подаем команды и смотрим выхлоп, а отладочный через wireshark парсим. Это если вдруг в башку дурь какая зайдет вроде storage реализовать (но, надеюсь, что смогу прожить в полном уме и здравии еще хотя бы лет 10).

Re: STM32 и USB (практика)

Вт ноя 15, 2022 16:33:53

Недостаточно. С ходу просто непонятно что именно искать.
Не надо ничего искать. Прямо в оснвных возможностях всё написано.

правда ли, что из распространенных ARM'ов и RISC-V этот USB-HS есть только в gd32e505, gd32e507 или все же есть что-то более доступное?
Я с чипами gd32 не работал. С USB HS в микроконтроллере тоже.

Re: STM32 и USB (практика)

Вт ноя 15, 2022 16:50:36

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

Например, один хост, второй девайс. Хранилка паролей, которая перехватывает нажатия клавиатуры и при необходимости воспроизводит.
Или два девайса, чтобы связать два компа друг с другом.
Или два хоста, чтобы копировать с одной флешки на другую.
Извращений можно много придумать.
Eddy_Em писал(а):Разве что разделить интерфейсы и вывести один отладочный
В качестве отладочного UART проще.
Eddy_Em писал(а): Это если вдруг в башку дурь какая зайдет вроде storage реализовать
Э?
VladislavS писал(а):Не надо ничего искать. Прямо в оснвных возможностях всё написано.

Ага, в пункте 57.2.1. Почти что на первой странице, ага.
VladislavS писал(а):Я с чипами gd32 не работал. С USB HS в микроконтроллере тоже.

Так мы ж про чтение документации говорили, а не про реальное использование.

Re: STM32 и USB (практика)

Вт ноя 15, 2022 16:54:46

Не, хост - это слишком сложно. Ну его нафиг, без линукса хост городить. На это полжизни уйдет!
В качестве отладочного UART проще.

Вот то-то и оно, на 3Мбод нормально работает.
Э?

Чтобы реализовать USB storage, придется еще и файловую систему выдирать и причесывать. Я не представляю себе, сколько уйдет времени, чтобы реализовать хотя бы EXT2 на МК. А уж reiserfs… Не vfat же там делать, чтобы вендовозы поганые могли свои гнилые ручонки совать, куда не надо!

Re: STM32 и USB (практика)

Вт ноя 15, 2022 17:08:44

Eddy_Em писал(а):чтобы вендовозы поганые могли свои гнилые ручонки совать, куда не надо!

Очень рациональное и веское обоснование. Судя по всему, Eddy_Em умышленно игнорирует логику и здравый смысл, которые не растут в его анальном огороде. :)))

Re: STM32 и USB (практика)

Вт ноя 15, 2022 17:29:16

Ага, в пункте 57.2.1. Почти что на первой странице, ага.
Ну да, в начале раздела USB. А вы про USB в разделе GPIO что-ли читаете обычно?

Добавлено after 1 minute 48 seconds:
Так мы ж про чтение документации говорили, а не про реальное использование.
В той документации что я читал - не попадалось.
Ответить