Есть преимущества в использовании отдельного USB-чипа и возможности подключения AVR через UART.
USB-стек должен отвечать на опрос хост-компьютера. Это происходит по крайней мере каждую миллисекунду. Это означает, что еще труднее гарантировать жесткий ответ в реальном времени на события, поскольку MCU может прерываться для ответа на опрос USB хостов.
Когда нечего сообщать или MCU хочет полностью сосредоточиться на задаче в реальном времени, он все равно должен реагировать на некоторые события USB-опроса хоста, иначе хост «потеряет» устройство. Так что это трудно игнорировать. Выделенный USB-чип, такой как FTDI, снимает эти задачи с AVR.
Небольшая проблема заключается в том, что стек USB будет занимать разумное количество флэш-памяти и оперативной памяти, поэтому чип требует больше ресурсов, чем простой AVR.
Кроме того, две части могут быть разделены на две платы, поэтому USB не является фиксированной стоимостью, но может быть разделен между несколькими платами.
С другой стороны, основное преимущество использования AVR со встроенным USB-периферийным устройством и USB-стеком состоит в том, что можно купить и собрать только одну деталь.
Я не проверял в последнее время, но я считаю, что новые чипы FTDI обеспечивают более высокую скорость передачи данных USB, чем USB AVR. Тем не менее, AVR UART были настолько медленными, что AVR с USB быстрее, чем комбинация FTDI (или любого интерфейса USB), связывающегося через UART AVR из-за медленного AVART UART.
Изменить: FTDI делают другие интерфейсы, чем UART. Например SPI. У меня нет опыта их использования. Некоторые AVR поддерживают передачу SPI 9 (возможно, 12) мегабит. FTDI - мастер SPI, который не идеален. Если AVR передает, это может быть хорошо. Так как у FTDI есть буферы, но получение может быть «как питье из пожарного шланга». AFAIK, вам нужно будет поработать на главном ПК, чтобы заставить его работать.
Самая высокая скорость передачи может быть через дочернюю плату Ethernet 100 Мбит, но я не видел измерений пропускной способности.
Я счастлив использовать другие микроконтроллеры, кроме AVR. Поэтому я мог бы использовать что-то с быстрым UART и контроллером DMA, который мог бы перемещать символы без участия ЦП. Если это полезный подход, возможно, посмотрите на Arduin Due или mbed, ST mbed называется nucelo, который является недорогим.