Jump to content

    
r2axz

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

Recommended Posts

13 minutes ago, rx3apf said:

Но не делать же ради этого полноценный встроенный конфигуратор a la ANSI терминал ? (Было бы красиво, но очень уж избыточно). Можно же тупо регистр = значение. Прочитать/записать/справка по синтаксису (без подробностей). Впрочем, это дело совершенно "хозяйское" (потому и говорю - в порядке бреда ;)

А я сделал уже :) Кнопочки влево-вправо работают. Удаление/вставка в любое место работает. Кнопочкой вверх можно вызвать предыдущую команду (только одну, это доказательство того факта, что я не конченый псих). Backspace в "исполнении mac OS" работает. Что еще. А можно написать

uart all tx output od rts actve high

То есть, применить команду ко всем портам и конфигурировать больше одного сигнала за раз. Конечно это не полноценный ANSI терминал, но это гораздо удобнее, чем когда ты нажимаешь кнопочку backspace а тебе вместо удаления гора кракозябр лезет. Так бесит это! А тут вроде удобно получилось :) 

13 minutes ago, rx3apf said:

Да, само собой. Да хоть бы и FT4232 на четыре порта. Но три - ни то, ни се, да и в повседневной жизни редко может пригодиться.

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

 

Можно использовать один порт для подглядывания за остальными двумя))) в порядке бреда...

Edited by r2axz

Share this post


Link to post
Share on other sites

Можно и что-то в стиле BBS-ок смастерить, можно сделать картинку в стиле старого BIOS SETUP (без разворачивания окон, максимум пролистывание вариантов или ввода значения текстом или числом), с рамочками и цветом. Но это явно для более масштабного проекта. telnet под роутеры красивостями на заморачивается, все совсем тупо. Но тоже, как вариант.

Share this post


Link to post
Share on other sites
4 minutes ago, rx3apf said:

 

Можно и что-то в стиле BBS-ок смастерить, можно сделать картинку в стиле старого BIOS SETUP (без разворачивания окон, максимум пролистывание вариантов или ввода значения текстом или числом), с рамочками и цветом. Но это явно для более масштабного проекта. telnet под роутеры красивостями на заморачивается, все совсем тупо. Но тоже, как вариант.

 

Ну я все таки не заморачивался ради не особо полезных красивостей, а решал конкретную проблему имени себя. Лично я часто промахиваюсь по кнопкам и у меня правда портится настроение когда я не могу стереть написанное :) Поэтому я все-таки считаю что нашел разумный по функционалу и сложности реализации компромисс. 

Share this post


Link to post
Share on other sites
8 минут назад, rx3apf сказал:

Можно и что-то в стиле BBS-ок смастерить, можно сделать картинку в стиле старого BIOS SETUP

Можно вместо одного из последовательных портов сделать rndis и полноценную веб-морду для любых настроек.

Share this post


Link to post
Share on other sites
14 минут назад, r2axz сказал:

 Лично я часто промахиваюсь по кнопкам и у меня правда портится настроение когда я не могу стереть написанное :) 

У меня не просто настроение в таких случаях портится, я вообще зверею ;) TeraTerm чем хорош - можно выделить, и оно сразу вставляется обратно на передачу. Но от ошибок это не спасает, хоть и облегчает жизнь с передачей.

Share this post


Link to post
Share on other sites
3 minutes ago, rx3apf said:

У меня не просто настроение в таких случаях портится, я вообще зверею ;) TeraTerm чем хорош - можно выделить, и оно сразу вставляется обратно на передачу. Но от ошибок это не спасает, хоть и облегчает жизнь с передачей.

Вот, я не одинок))) Поэтому я и решил чутка заморочиться.

 

17 minutes ago, Сергей Борщ said:

Можно вместо одного из последовательных портов сделать rndis и полноценную веб-морду для любых настроек.

Как-то это too much все-таки для подобного устройства)))

Share this post


Link to post
Share on other sites
4 часа назад, r2axz сказал:

Конфигуратор доступен в виде шелла на первом порту когда PB5 замкнут на землю.

А если устройство реализует CDC ACM, то может быть можно параллельно работать с ним через его control-EP0? Не знаю - давно уже не использовал CDC...

Но если это возможно, то тогда можно написать конфигуратор, работающий командами через control-EP0, с дружелюбным интерфейсом (без необходимости запоминать кучу текстовых команд).

При желании туда даже не только конфигурирование, но и какой-то мониторинг обмена по COM-портам добавить можно (с лампочками, счётчиками байт и даже графиками).

Хотя это конечно будет не мультиплатформенно....

Share this post


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

А если устройство реализует CDC ACM, то может быть можно параллельно работать с ним через его control-EP0? Не знаю - давно уже не использовал CDC...

В теории можно, но на практике Control Endpoint по-умолчанию занят драйвером операционной системы, который использует этот endpoint для SET_CONTROL_LINE_STATE, GET/SET_LINE_CODING и т.п. То есть, как минимум нужно будет написать свой драйвер CDC ACM для каждой интересующей операционной системы. Чтобы перейти через равенство с текущим вариантом, надо сделать драйвера для кучи версий Windows, Mac OS, Linux. И мы все равно на этом шаге потеряем всякие маргинальные операционные системы которые волею судеб используют три калеки, но которые при этом все-таки умеют CDC. Без спец-драйвера сам порт вполне может работать, а вот конфигуратор - нет. Далее, чтобы выполнялся критерий удобства, для того же самого Linux нужно обеспечить бинарные сборки драйвера под распространенные дистрибутивы. Получается куча работы, а мы еще даже до самого конфигуратора не дошли.

6 hours ago, jcxz said:

Но если это возможно, то тогда можно написать конфигуратор, работающий командами через control-EP0, с дружелюбным интерфейсом (без необходимости запоминать кучу текстовых команд).

Дружелюбный интерфейс - это понятие очень скользкое. Дружелюбен ли будет GUI-интерфейс конфигуратора в окружении какого-нибудь сервера, на котором и оконного менеджера-то нет. Или какого-нибудь встраиваемого решения? Не особо ведь, правда? А если нам надо управлять настройками из какого-нибудь скрипта, то GUI-решение тоже не годится. Значит надо как минимум сделать command-line решение для конфигурации. И только после этого начать кропотливо кодить UI. Под все платформы выше...

6 hours ago, jcxz said:

без необходимости запоминать кучу текстовых команд

И весь этот, не побоюсь этого слова, гигантский объем работы надо проделать для того, чтобы пользователь не запоминал три(!) команды, одна из которых help, а две другие подробно описаны этим help прямо внутри управляющего шелла. И ради этого удобства надо еще поставить себе кучу ненужного софта... Получается странно...

6 hours ago, jcxz said:

При желании туда даже не только конфигурирование, но и какой-то мониторинг обмена по COM-портам добавить можно (с лампочками, счётчиками байт и даже графиками).

Это отличная идея! Но это отличная идея для абсолютно другого продукта. Анализатор обмена по последовательному порту и переходник - это концептуально совершенно разные вещи. И пользователи у них разные. И если для анализатора действительно было бы правильным писать софт для визуализации данных и ожидать от пользователя его установки, то переходник должен тупо сразу работать и иметь минимально возможное количество зависимостей. Вот честно, я очень грущу из-за того, что виндовс до 10-ки требует INF-файл который ей объясняет что "вот с этим устройством, пожалуйста, используй свой встроенный драйвер usbser.sys", ибо это лишняя зависимость... До кучи, если бы я делал анализатор, то внутри он был бы устроен тоже совершенно иначе. В частности, я бы запоминал временные метки событий и еще кучу подобных вещей.

Весь смысл конфигуратора в том, что он облегчает использование переходника в составе различных схем согласования, потенциально снижая количество требуемых деталей и упрощая схемотехнику. Не более. И то, все это в контексте штучных устройств и лабораторных экземпляров. Если нам таких устройств нужно 10, то проще изменить конфигурацию в прошивке и сразу прошить как надо.

Share this post


Link to post
Share on other sites

А вот, кстати, что стоит проверить - выгрузить какой-нибудь хороший  толстый файлец не несколько mb (а то и десятков mb) и принять его (эхом или с другого порта). Будет 1:1 ? Или, вдруг, что выпадет или исказится ?

Была у меня поганая история - много лет грузил прошивки в устройства просто по copy /b <file> COMx, переходником были FT232 и FT2232 (обычно 921600 и 115200), все работало и был уверен, что тут никаких вообще сложностей нет и быть не может. И вдруг понадобилось это сделать через CP2102 (китайские платы, а вот насколько оригинальные чипы не поручусь, но драйвер родной). И - облом. Не шьется ! 115200, управления потоком нет (приемник заведомо успевает). Решил глянуть, что уходит - а там реально пропадают байты на выходе ! Понятное дело, что без управления потоком на приеме можно потерять (сам виноват), но на ВЫХОДЕ !!!??? Реально дурдом, причем вполне даже воспроизводимый (там где-то после нескольких кило начинают выпадать байты). Что-то мой склероз подсказывает, что когда-то встречал утверждения о непофиксенной много лет ошибке в виндовом драйвере, но тут-то ведь установленный драйвер от Silabs ?

Решать пришлось отказом от "copy /b", написав на vbs утилиту, посылающую блоками по 256 байтов и дающую чуть-чуть (в районе 1%) задержку, чтобы общая скорость потока укладывалась в 115200,8,n,1. Но как же это гадостно, а ?

 

 

Share this post


Link to post
Share on other sites

Как вариант - перепрошивка сотовых телефонов/модулей. Перегнать на 460800 или 921600 пару десятков МБ по протоколу, который в первом приближении X-modem, при том, что аппаратный контроль потока там обычно отсутствует.

 

Share this post


Link to post
Share on other sites

X-модем - мимо. Там же квитирование, следующий блок не пойдет, пока нет подтверждение. Самый-то цимес просто слить файл на максимальной скорости без какого-либо управления - дойдет ?

Share this post


Link to post
Share on other sites
2 minutes ago, rx3apf said:

 

X-модем - мимо. Там же квитирование, следующий блок не пойдет, пока нет подтверждение. Самый-то цимес просто слить файл на максимальной скорости без какого-либо управления - дойдет ?

 

Только что для теста слил файл размером около 6 MB c одного порта на другой на скорости 921600, без использования hardware flow control. Размер и содержимое совпали. Это был мой специальный тестовый файл который я многократно в процессе разработки использовал именно для этих целей. Но прежде чем вам отвечать, я не поленился и еще ра повторил этот тест на самой свежей версии прошивки.

Share this post


Link to post
Share on other sites
35 минут назад, rx3apf сказал:

X-модем - мимо. Там же квитирование, следующий блок не пойдет, пока нет подтверждение. 

Оно-то так, но не совсем. Квитирование и повторная пересылка блоков затормозят процесс. Порой весьма существенно, вплоть до потери всякого терпения. :)

Скрытый текст

Как-то на заре пришлось устанавливать Win98 на ушатанный ноутбук, в котором единственным средством общения с внешним миром остался COM-порт со слегка "поджаренным" приёмопередатчиком. На 115200 работать отказался, а на 57600 дистрибутив таки передался. За 6 часов. Именно по x-modem.

 

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.