Arduino из-за высокоскоростной связи USB с ПК

Я работаю над проектом, в котором используется Arduino Due (микроконтроллер ATSAM3X8E). Моя цель — иметь возможность отслеживать значения некоторых ключевых переменных, которые я использую в своей прошивке, в режиме реального времени. Дело в том, что мне нужно построить график изменения значений переменных во времени.

Для этого я решил отправить данные на свой компьютер через родной порт USB. Ограничение в реальном времени, которое у меня есть, заключается в том, что мне нужно отправить значения 20 переменных (каждая из них длиной 8 байтов) в течение 0,1 мс. На Arduino Due имеется встроенный порт USB, который подключается к периферийному USB-устройству чипа. Я попытался использовать UART через USB, настроив Due в режиме USB-устройства. Я могу получить скорость только до 115200 бод, используя последовательную связь (UART) (любые более высокие скорости не позволяют Due или моему хост-компьютеру правильно отправлять данные).

Итак, я проделал некоторую домашнюю работу и обнаружил, что устройства на основе USB имеют разные классификации в зависимости от того, что они делают. Я хочу знать, существует ли высокоскоростной протокол со скоростью не менее 2 Мбит/с, который я могу использовать поверх USB для передачи данных на мой компьютер с Due, и, если есть эквивалентный драйвер, который я могу использовать на моем ПК с Windows для успешного захвата этих высокоскоростных данных - любые рекомендации будут очень полезны.

Заранее спасибо!

Субраманиан


person Subbu    schedule 06.02.2017    source источник


Ответы (1)


Собственный USB-порт Arduino Due поддерживает высокоскоростной USB (480 Мбит/с), и по умолчанию он отображается для компьютера как виртуальный COM-порт USB. Это виртуальный последовательный порт, поэтому вы можете отправлять данные так быстро, как позволяют драйверы USB, и вы не ограничены виртуальной «скоростью передачи данных» COM-порта, которая не имеет значения. . Я думаю, что виртуальный COM-порт будет достаточно быстрым для вас, и вы должны попробовать его, прежде чем делать что-то более сложное.

Чтобы использовать этот порт, используйте SerialUSB в вашей программе Arduino. Объект имеет тот же интерфейс, что и Serial. У вас уже должны быть драйверы для него, если вы установили Arduino IDE или используете Windows 10.

Обратите внимание, что виртуальные COM-порты USB обычно используют конечные точки USB, которые не гарантируют какой-либо конкретной задержки или пропускной способности. Если ваш компьютер занят общением с другими устройствами на шине, вы можете получить меньшую пропускную способность, чем вы надеялись, но у вас здесь большая погрешность, поэтому я не думаю, что это будет проблемой на практике. Если вы хотите быть в безопасности, просто убедитесь, что вы можете буферизовать несколько миллисекунд данных на стороне устройства, чтобы не потерять данные. Возможно, вам придется заглянуть внутрь кода ядра Arduino, чтобы увидеть, насколько велики его буферы.

person David Grayson    schedule 06.02.2017