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

Полноценный адаптер USB-Serial с 3 UART портами на STM32 Blue Pill

Столкнулся с тем, что ни на CP2102 ни на моих USB CDC ACM состояние линий портов не показывают ни одна из программ, до которых смог дотянуться. 

Из свежепроверенного - RealTerm ничего не показывает.

Еще раз вопрос - чем смотрите?

Изменено пользователем GenaSPB

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


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

7 hours ago, GenaSPB said:

Столкнулся с тем, что ни на CP2102 ни на моих USB CDC ACM состояние линий портов не показывают ни одна из программ, до которых смог дотянуться. 

Из свежепроверенного - RealTerm ничего не показывает.

Еще раз вопрос - чем смотрите?

Я для тестов использовал Termite 3.4 (by CompuPhase). У него в настройках есть секция "Plug-ins", а в ней "Status LEDs", вот им и смотрю. 

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


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

Вроде тема обсуждения экономии ендпоинтов за счет совместного использования общего номера для нотификации продолжалась тут.

Новости с фронтов:

В устройстве заменил прошивку на обновленную. W10, x64. Устройство перестало опознаваться (составное УСБ устройство, с восклицателныи знаком про то что не удалось загрузить драйвер).

Есть компьютер в котором ранее устройство не подключалось - с аналогичными симптомами.

Зависимости от версии/билда W10 выявить не удалось - есть компьютеры нормально работающие и есть не опознающие.
С одинакоаой версией и билд номером.

Изменено пользователем GenaSPB

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


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

Отличная работа! Огромное спасибо автору проекта.
Недавно понадобилось логировать обмен на UART интерфейсе одного устройства, т.е. понадобилось два USB-UART адаптера одновременно.
Прошил плату BluePill прошивкой автора, установил драйвер (Win7 x64), запустил терминал. Всё работает отлично.
Кстати, на моей плате для энумерации USB установлен резистор 10 кОм, но несмотря на это всё работает. Позже заменю резистор на 1,5 кОм.

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


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

On 1/5/2021 at 4:58 PM, GenaSPB said:

Вроде тема обсуждения экономии ендпоинтов за счет совместного использования общего номера для нотификации продолжалась тут.

Новости с фронтов:

В устройстве заменил прошивку на обновленную. W10, x64. Устройство перестало опознаваться (составное УСБ устройство, с восклицателныи знаком про то что не удалось загрузить драйвер).

Есть компьютер в котором ранее устройство не подключалось - с аналогичными симптомами.

Зависимости от версии/билда W10 выявить не удалось - есть компьютеры нормально работающие и есть не опознающие.
С одинакоаой версией и билд номером.

 

Спасибо за информацию. Недавно "лазил к вам в код" и видел commit messages на эту тему. Собственно лазил по поводу идей для борьбы с общей бедой с RTS и виндой. Но похоже проблема решается только с помощью workaround на уровне пользовательского приложения: типа хочешь поставить RTS, поставь заодно и DTR. Хоть даже в то же самое состоянии, но поставь))) Ох уж эти милые "особенности" Микрософта)

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


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

Да с rts и виндой так и есть. Было перепробовано много вариантов борьбы через атрибуты дескрипторов.

Предлагал автору OmniRig включить соответствующие изменения в его проект - был послан. Код был приложен.

Есть предположение что неопознание устирйства с shared endpoints зависит от  наличия хабов и их особенностей.

Изменено пользователем GenaSPB

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


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

5 hours ago, GenaSPB said:

Да с rts и виндой так и есть. Было перепробовано много вариантов борьбы через атрибуты дескрипторов.

Предлагал автору OmniRig включить соответствующие изменения в его проект - был послан. Код был приложен.

Есть предположение что неопознание устирйства с shared endpoints зависит от  наличия хабов и их особенностей.

 

Я, кстати, дизассемблировал usbser.sys на Windows 10 и посмотрел в чем там дело. Благо у MS есть отладочные символы для этого драйвера, поэтому разобраться что там где - тривиально. Так вот, надежды нет: если посмотреть на функции SetBreak или SetClrDtr, то там в какой-то момент происходит "call ClassVendorCommand" и это та функция, которая шлет нужный нам SetControlLineState. А вот пара функций SetRts и ClrRts такого вызова внутри себя просто не содержит. То есть, выглядит все так, что просто забыли дописать вызов функции и все. Такая вот типичная и банальная бага, никакой магии.

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


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

On 1/5/2021 at 4:58 PM, GenaSPB said:

Вроде тема обсуждения экономии ендпоинтов за счет совместного использования общего номера для нотификации продолжалась тут.

Новости с фронтов:

 

Для информации - у меня на восьмерке никогда не работала такая экономия (проверял еще года три назад), на XP SP3 работает. Смысла особого делать не по стандарту нет (не смотря на немалый соблазн сэкономить :) ) девайс может перестать работать в самый неподходящий момент.

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


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

Так и перестал... причём по прибытии к заказчику.. 

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


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

Оформил в виде готового устройства:
-прикрутил светодиодную индикацию,
-добавил выбор напряжения логических уровней UART,
-добавил ESD защиту,
-состряпал платку вместо BluePill,
-запихнул в корпус.
Задействовал только линии RX/TX, т.к. остальные мне не понадобились.

Ссылка на статью

Изменено пользователем masya-chel

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


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

А почему подтяжка на USB DP гвоздями прибита? Надо же было на любую свободную ногу ее подключить. В таком виде устройство не годится для работы: чуть что, придется провод вытаскивать и втыкать обратно.

Ну и я таки не понимаю практической пользы от такого устройства. Моим ответом на бессмысленность этого был "семипортовый CDC" на одном микроконтроллере.

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


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

  

  

26.07.2021 в 19:32, Eddy_Em сказал:

чуть что, придется провод вытаскивать и втыкать обратно.

А что именно? Как узнать, что надо переподключиться?

26.07.2021 в 19:32, Eddy_Em сказал:

Ну и я таки не понимаю практической пользы от такого устройства.

 

Имеющие дело с серийным производством поймут. Тестовый стенд, к примеру. Ещё бы программатор туда добавить... :)

  

26.07.2021 в 19:32, Eddy_Em сказал:

Моим ответом на бессмысленность этого был "семипортовый CDC" на одном микроконтроллере.

С семью UART? Почему бы нет. Ну если есть достаточно денег, то можно и 8-портовую моксу купить, чего уж.

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


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

3 hours ago, Harbinger said:

Как узнать, что надо переподключиться?

Ну, например, после перезагрузки МК. Особенно после прошивки: если не сделать управляемой подтяжки (у STM32F0x2 такой проблемы нет: там подтяжка встроена в МК), придется каждый раз после прошивки МК выдергивать шнурок USB и вставлять обратно, чтобы компьютер выполнил энумерацию.

3 hours ago, Harbinger said:

Тестовый стенд, к примеру.

Ну, не знаю: можно же N преобразователей на PL2303 или Ch340 воткнуть. Но, видимо, кому-то это все же нужно на базе 1 устройства.

3 hours ago, Harbinger said:

С семью UART?

Нет, конечно: у имеющихся у меня в наличии STM'ок столько усартов нет. Все порты были виртуальными.

Да я и никогда не делал прямого преобразователя USART-USB: нет такой задачи, для этого достаточно баксовый переходничок использовать. Я CDC делаю исключительно для "общения" с микроконтроллером (а N CDC может быть нужно, если, скажем, по первому идет базовое "общение", по второму - отладка, по третьему - конфигурация и т.п.). В основном же мои железки выдают себя за один-единственный CDC (точней, даже не совсем CDC, а эмулятор PL2303).

Кстати, STM32F103 мало того, что самые неполноценные из ST'шных микроконтроллеров, так еще и не умеют одновременно CAN и USB. Поэтому большинство моих поделок - на STM32F0x2. Постепенно я начал осваивать STM32F303, но пока нет нужды в флоатах и мощностях аж Cortex-M4.

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


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

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

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

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

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

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

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

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

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

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