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

ttyACM на Линуксе

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

 

  Подключаю стмку к Линуксу по 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 ? Может можно поправить где то конфигурационные файлы ? Вообще приветствуются все идеи.
Задавал тот же вопрос на юникс стакиксченчж, но там пока глухо. То ли праздники, то ли никто не сталкивался с подобным.

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

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


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

4 minutes ago, Космонавт said:

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

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

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


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

38 минут назад, Космонавт сказал:

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

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

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


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

15 hours ago, Сергей Борщ said:

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

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

putty.png

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


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

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

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

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

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

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

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

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

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

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