Jump to content

    
r2axz

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

Recommended Posts

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

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

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

Edited by GenaSPB

Share this post


Link to post
Share on other sites
7 hours ago, GenaSPB said:

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

Edited by GenaSPB

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
On 1/5/2021 at 4:58 PM, GenaSPB said:

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

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

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by GenaSPB

Share this post


Link to post
Share on other sites
5 hours ago, GenaSPB said:

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

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

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

 

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

Share this post


Link to post
Share on other sites
On 1/5/2021 at 4:58 PM, GenaSPB said:

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

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.