Формат пакета данных при инициализации USB в качестве COM-порта
Кто-нибудь знает, как выглядят данные в пакете данных, когда USB инициализируется как COM-порт?
У меня есть Arduino Mega 2560. Я инициализировал COM-порт со скоростью передачи данных 9600 бод. Я знаю, что существует четыре типа USB-пакетов:
- Пакет токенов (обычно используется для идентификации устройства и инициации транзакции.)
- Пакет данных (содержит данные, которые должны быть переданы от хоста к клиенту или наоборот).
- Пакет подтверждения (Подтверждение безошибочного приема данных.)
- Специальные пакеты (связь между узлами и дифференциал скоростей).
Полезная нагрузка в пакете данных форматируется как
ДАННЫЕ1 >> нагрузки >> контрольные суммы CRC16 ; ДАННЫЕ2 >> >> нагрузки >> контрольные суммы CRC16 ; и т. д.
До этого момента мне ясно, что происходит.
Теперь все, что я хочу знать, это
- Как структурируются данные в разделе полезной нагрузки, когда USB инициализируется как COM-порт?
- Как скорость передачи данных входит в картину, т. е. Как достигается определенная скорость передачи данных в этом типе связи?
- Как осуществляется связь с точки зрения последовательности пакетов? Меняется ли последовательность пакетов? (Как маркер>>данные>>подтверждение>>данные>>подтверждение>>...)
Мне действительно нужно срочно это знать, так как я работаю над программой, которая должна подключаться к 3 платам MEga2560 через USB-концентратор. Я хочу исправить свои конструктивные ограничения в зависимости от того, какова максимальная скорость передачи данных, которую я могу достичь для всех плат.
@Damon, 👍0
Обсуждение1 ответ
Как только USB-соединение инициализируется как COM-порт, оно больше не использует традиционные USB-пакеты (только внутренние). Он действует как обычный COM-порт. Этот уровень абстракции создается чипом 8u2 на стороне Arduino и драйвером на стороне ПК.
Если вам нужно использовать USB без абстракции COM-порта, вам, вероятно, придется настроить микросхему 8u2 таким образом. Я думаю, что его можно будет настроить, например, в качестве какого-нибудь HID-устройства. Вам также нужно будет позаботиться о стороне ПК, и вам, возможно, придется написать свой собственный драйвер.
Для получения руководства по взлому и настройке чипа 8u2 на Mega см. Следующую ссылку:
http://arduino.cc/en/Hacking/DFUProgramming8U2
Можете ли вы предложить мне любую ссылку, где я могу прочитать больше об этом:- "он больше не использует традиционные USB-пакеты" . Это было бы действительно полезно., @Damon
Первое предложение здесь не очень точное. Нет никакой разницы между инициализацией и работой - это все еще USB-устройство на проводе и последовательное устройство для клиентских программ, расположенное ниже драйвера ttyACM (или как там его называет ваша операционная система)., @Chris Stratton
- Как разделить входящую строку?
- Какова максимальная длина провода для последовательной связи между двумя Arduino?
- Последовательная связь между двумя Arduino (запрос и получение)
- Не нашел датчик отпечатков пальцев :( Arduino Mega 2560 Adafruit Fingerprint Sensor
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- Как правильно получить MIDI с Arduino, с 6n138?
- Bluetooth-модуль HC-05 не принимает AT-команды
- Сбой Arduino во время последовательной печати без очевидной причины
То, что вы ищете,-это ссылка на схему CDC/ACM (или, где это применимо, на более старые уникальные схемы поставщиков, такие как микросхемы ftdi). Возможно, вам будет интересно ознакомиться либо с соответствующим драйвером ядра linux, либо с некоторым кодом хоста Android USB, либо с прошивкой чипа 8u2. Однако обычно приложение не обращает на это никакого внимания и позволяет операционной системе справиться с этим., @Chris Stratton
Видимая пользователю скорость передачи данных не влияет на USB (которая, вероятно, составляет 12 Мбит/с), это просто параметр конфигурации, передаваемый через последовательный канал 8u2-Mega2560. Что вам действительно нужно следить на USB, так это *задержка* - независимо от "последовательной" скорости передачи данных это может занять больше времени, чем на истинном последовательном канале, чтобы отправить байт или два и получить ответ, так как USB-часть соединения ограничена пакетами, отправленными с фиксированными интервалами, независимо от того, насколько они малы., @Chris Stratton