Jump to content

    
Sign in to follow this  
Космонавт

ttyACM на Линуксе

Recommended Posts

  С новым годом многоуважаемое сообщество. Давненько не писал на электроникс но вот пришло время, нужен совет.
Давеча появилась необходимость передавать данные на ПК, со скоростью примерно мегабит. Физический последовательный порт справляется с такой скоростью довольно плохо, поэтому решено было остановится на ЮСБ.

 

  Подключаю стмку к Линуксу по USB с эмуляцией виртуального последовательного порта (communication device class). Подключение прямое, никаких хабов, переходников и т.д. Кубом сгенерил проект с полноскоростным юсб 2.0 12МБит. Пк видит подключение как /dev/ttyACM0. Стмкой передаю тестовую последовательность в порт по одному байту, каждая посылка с периодичностью 11мкс. На Линуксе открываю Putty порт с параметрами 921600, 1 стоп бит, без контроля четности и логирую все это в файл.

  В логе наблюдаю такую картину ...0x01 0x02 0x03 0x05 0x06 0x08 0x0B 0x0C 0x0E 0x16 0x17... видно, что некоторые байты были пропущены. На виндовс машинах так же провалы в последовательности, и они больше чем в Линуксе.

 

  При увеличении периода до 87 мкс что примерно соответствует битрейту 115200, последовательность передается без ошибок.

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

Edited by Космонавт

Share this post


Link to post
Share on other sites
4 minutes ago, Космонавт said:

Собственно вопрос - действительно ли лимит драйвера 115200 ?

Со стороны ПК - нет (под Линуксом, во всяком случае). А вот со стороны куба можно ждать чего угодно.

Share this post


Link to post
Share on other sites
38 минут назад, Космонавт сказал:

В логе наблюдаю такую картину ...

Насколько я помню, putty пишет в лог не все байты. Байты с кодом 0x00 она у меня точно отбрасывала. Выставленная в настройках терминальной программы скорость влияет только на число, передаваемое в команде SET_LINE_CODING и на скорость обмена по USB никак не влияет.

Share this post


Link to post
Share on other sites
15 hours ago, Сергей Борщ said:

putty пишет в лог не все байты

Вот фрагмент моего лога. Как видно нули там есть. Да и было бы странно, что бы на 115200 логировалось все, а на 921600 - не все. Пока копаю в сторону куба.

putty.png

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.

Sign in to follow this