Существует ли простой (разрешительная лицензия) драйвер Leonardo для моста USB-USART для замены чипа FTDI?

serial usb programmer

Я делаю плату для разработки ESP32 и подумываю о том, чтобы установить микросхему Arduino Leonardo между портом USB и контактами USART ESP32, чтобы она работала в качестве преобразователя USB/USART вместо микросхемы FTDI, чтобы я мог программировать ESP32 через последовательный порт USB, как и любая другая плата Arduino.

Существует ли библиотека/скетч, лицензированная по разрешительной лицензии (MIT, BSD, Apache и т. д.), которая может заставить чип Leonardo действовать как устройство последовательного порта HID, имеющее имя устройства, которое я хочу для легкой идентификации в диспетчере устройств и который не требует специальной установки драйверов в Windows и Linux после подключения к компьютеру?

Спасибо, что уделили время.

, 👍0

Обсуждение

вам следует провести более тщательное исследование, прежде чем спрашивать. "Чип Леонардо"? «Последовательный порт HID»? почему вы не хотите использовать 32u4 в качестве последовательного порта USB-TTL? только Uno и Mega используют микроконтроллер Atmel для USB. большинство плат имеют USB-чипы FTDI или CH340., @Juraj

@Juraj Я использую небольшой чип PIC32MX в качестве интерфейса USB на своих платах. Мне нравится гибкость, которую дает вам создание собственного интерфейса. Например, активация DTR в моей системе автоматически создает импульс сброса, вместо того, чтобы просто удерживать линию на низком уровне., @Majenko

Причина, по которой я использую 32U4, заключается в том, что я также хотел бы использовать его в качестве виртуального HID-привода компакт-дисков с виртуальным компакт-диском, предоставляющим exe-приложение, позволяющее конечному пользователю загружать прошивку, взаимодействовать с существующей прошивкой и т. д. И самое главное, его можно программировать так, как я хочу, и весь код, который я добавляю к нему, принадлежит мне., @Foxcat385


1 ответ


1

Почему бы не написать свой собственный?

Во-первых, вам нужно создать собственное определение платы. Для этого найдите файл boards.txt в ядре AVR вашей установки. Затем найдите блок записей, начинающийся с leonardo., и скопируйте весь блок. Измените leonardo на имя по вашему выбору.

Затем измените запись .name, чтобы дать вашей плате новое имя в IDE.

Наконец, найдите (переименованные) записи:

leonardo.build.vid=0x2341
leonardo.build.pid=0x8036
leonardo.build.usb_product="Arduino Leonardo"

Конечно, leonardo будет таким, каким вы его изменили. Теперь вы можете присвоить вашей плате новые VID и PID, чтобы однозначно идентифицировать их, а также изменить usb_product, чтобы дать имя вашей плате.

Вы также можете добавить запись myboard.build.usb_manufacturer="...", чтобы изменить производителя Arduino по умолчанию.

Теперь у вас есть определение платы, которое идентифицирует вашу плату такой, какой вы хотите ее видеть. Итак, теперь просто напишите скетч, который проходит через последовательный порт между USB и UART, а также обрабатывает сигналы DTR и RTS, чтобы иметь возможность войти в режим флэш-памяти на ESP32 (подсказка: используйте Serial.dtr() и Serial.rts(), чтобы проверить состояние этих сигналов).

,

Это вполне исчерпывающий ответ. Спасибо! Однако я до сих пор не понимаю, где находится библиотека драйверов последовательного порта HID (под разрешительной лицензией), которую я могу включить в свой проект на C++, и какие функции/классы мне нужно использовать для взаимодействия с USB-стороной. Я понимаю последовательную библиотеку, но это для USART между Леонардо и ESP32. Мне нужна виртуальная часть USART. Не могли бы вы добавить это к своему ответу?, @Foxcat385

Оно уже здесь. Он находится в ядре Arduino. Библиотека не нужна., @Majenko

О, так есть Serial и Serial1? Это верно?, @Foxcat385

Да. Последовательный порт — это USB, а Serial1 — контакты TX/RX., @Majenko