Создание высокоскоростной связи USB с STM32F4 и Java на ПК с Linux

У меня есть плата STM32F4Discovery , и я пытаюсь установить связь между программой переменного тока (без ОС) на плате и программой Java на компьютере с Ubuntu. Я нашел много подобных руководств по USB, но все они пытаются сделать последовательный порт RS232 слишком медленным (например, 9600 бод или макс. 14,4 Кбит/с).

Прямо сейчас я потерян, и мне нужно выяснить, как мне это сделать. Можно ли в этом случае организовать высокоскоростную связь и насколько быстрой она может быть? Спецификации USB 2.0 говорят, что это может быть до 480 Мбит/с. Не могли бы вы сказать мне, с какой библиотекой это возможно? И есть ли какая-либо передовая практика для двусторонней связи через USB?

Я очень ценю любые подсказки.

Ответы (1)

Протокол USB делится на несколько классов , таких как HID, Mass Storage, Audio и т. д.

1. Вам следует попытаться найти класс, который требует передачи данных с высокой скоростью передачи данных, примерами таких классов могут быть устройства Video или Mass Storage. Классы, которые используют объемные или изохронные пакеты для передачи данных по шине, будут иметь высокие скорости передачи данных, поскольку они имеют больший размер пакета и могут иметь большие временные интервалы для использования шины.

2. Затем вам следует просмотреть примеры кода, поставляемые с вашей платой, для этих вышеперечисленных классов.

Не могли бы вы дать немного больше информации о том, какие данные вы хотите передавать между платой и ПК?

Спасибо, Джей. Нам нужно передать информацию о датчике с платы обнаружения в программу Java, работающую на ПК с Linux, которая сама по себе является другой аналогичной платой. И нам нужно отправить команды движка со стороны java на доску обнаружения. Сейчас мне нужно передавать 250 байт каждые несколько миллисекунд, но в будущем это число будет увеличено.
@Mehdi Это должно быть очень строгое время? USB не подходит для такого рода приложений. USB отлично подходит для общей передачи данных, где критическое время не является проблемой. Я бы использовал SPI, если расстояние короткое.
@Spoon Скорость не критична, чуть раньше или позже не имеет значения в нашем случае. Спасибо за подсказку.
Беспокойство вызывает не «скорость» (похоже, у вас есть четко выраженная потребность быть быстрее, чем обычный «серийный», и вы изучаете это, что хорошо), просто изменчивость времени прибытия «команд», которые вы упомянул. Я видел сломанное программное обеспечение, потому что USB-драйверы могут все испортить. Однако вы используете другие классы, которые я не использовал, и я считаю, что учитываю эту проблему. У меня есть проект, которому однажды понадобится такое USB-подключение. Удачи... Я могу задавать вопросы, когда наконец доберусь туда сам...