Я сделал простую программу на Visual C #, которая взаимодействует с AVR через чип FT232RL.
ПК <-> FTDI <-> MCU.
Я использую FTD2XX_NET.dll для прямого доступа к USB-устройству.
Мне интересно, в чем разница между парой FTDI-AVR и одним AVR со встроенным USB-контроллером? Я думаю, что должна быть какая-то разница в скорости общения. Чем еще отличается?
Ответы:
Есть несколько причин, но они, по крайней мере для большинства людей, довольно нишевые.
Причины, которые я вижу и испытал
Однако с готовыми к использованию USB-библиотеками, значительной стоимостью мостов USB FTDI (обычно они стоят дороже, чем даже очень дорогие AVR) и отсутствием снижения производительности в большинстве приложений, в настоящее время очень сложно оправдать использование чипов FTDI, если вы иметь полный контроль над оборудованием и прошивкой.
источник
tl;dr
абзац наверняка был неожиданным окончанием ... Ты заговорил с помощью прошивки только для прошивки USB / последовательных стеков (хотя и с очень правильными точками), а затем BAM ... "Только идиот будет использовать FTDI". Веселое. Люблю это!Есть преимущества в использовании отдельного 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, который является недорогим.
источник