Почему FTDI, а не AVR со встроенным контроллером USB?


8

Я сделал простую программу на Visual C #, которая взаимодействует с AVR через чип FT232RL.

ПК <-> FTDI <-> MCU.

Я использую FTD2XX_NET.dll для прямого доступа к USB-устройству.

Мне интересно, в чем разница между парой FTDI-AVR и одним AVR со встроенным USB-контроллером? Я думаю, что должна быть какая-то разница в скорости общения. Чем еще отличается?


2
С FTDI программисту для AVR не нужно реализовывать USB-стек, а просто поддерживать UART. Я уверен, что есть много других отличий, поэтому я не отвечаю, а просто комментирую
Funkyguy

1
Кроме того, FTDI поставляются с подписанными драйверами для большинства платформ и действительными жестко закодированными VID и PID, поэтому вам не нужно платить за 65536 адресов, когда вам нужен только один.
Венни

Спасибо за комментарии. Другая разница в производительности? Какой способ лучше для связи с ПК и MCU? Если честно, FTDI намного проще от встроенных контроллеров USB.
MrBit

В программном обеспечении для ПК с FTDI очень мало сложных функций. И я не знаю, стоит ли усилий с одним AVR
MrBit

1
FTDI - тупой сериал. MCU может выполнять предварительную обработку, активировать побочные каналы, поддерживать UMS и т. Д.
Игнасио Васкес-Абрамс

Ответы:


11

Есть несколько причин, но они, по крайней мере для большинства людей, довольно нишевые.

Причины, которые я вижу и испытал

  • Выбор AVR с поддержкой USB весьма ограничен, особенно семейство TINY. Если по какой-либо причине требуется AVR, который не имеет комбинации USB и некоторого другого периферийного устройства, это простой вариант. Один пример, который приходит на ум, это AVR с поддержкой PLL.
  • Несмотря на то, что периферийное устройство USB реализовано аппаратно, в прошивку все равно необходимо вставить USB-стек. Это занимает довольно много ресурсов (например, для полной реализации CDC LUFA требуется не менее 6 КБ флэш-памяти и 1,5 КБ ОЗУ, и это одна из самых легких библиотек)
  • Прерывания USB и события шины USB занимают ресурсы, которые могут испортить критичную по времени прошивку. Например: высокоскоростные измерения АЦП могут очень плохо испортиться при прерывании задачи USB.
  • Не все реализации библиотеки USB работают также со всеми AVR с поддержкой USB. Например: загрузчики USB, использующие LUFA, не работают с устройствами XMEGA.
  • FTDI использует подписанные драйверы, которые автоматически устанавливаются с помощью Центра обновления Windows, в то время как многие библиотеки USB, например ASF и LUFA, этого не делают. Это делает развертывание для конечных пользователей более громоздким.
  • Некоторые реализации имеют более низкую производительность, например, FT2232H может соединять FIFO с USB со скоростью 8 МБ / с, что невозможно сделать с AVR.
  • Многие проекты не имеют полного контроля над аппаратным и программным обеспечением, например, 3D-принтеры имеют совершенно разные аппаратные и программно-аппаратные проекты. Для поддержания максимально возможного уровня взаимодействия функции USB и микроконтроллера разделены.

Однако с готовыми к использованию USB-библиотеками, значительной стоимостью мостов USB FTDI (обычно они стоят дороже, чем даже очень дорогие AVR) и отсутствием снижения производительности в большинстве приложений, в настоящее время очень сложно оправдать использование чипов FTDI, если вы иметь полный контроль над оборудованием и прошивкой.


2
Даже если проект находится на микроконтроллере, который имеет встроенный интерфейс USB, и планируется использовать его, все равно стоит иметь заголовок для доступа к выводам UART, поскольку вы можете тривиально получить полезные выходные данные отладки, пытаясь получить USB код для работы.
Крис Страттон

4
@ Комментарий ChrisStratton указывает на еще одну проблему: USB-устройства на порядок сложнее отлаживать, чем простой последовательный UART. Таким образом, он ускоряет разработку и удаляет неизвестные, оставляя конец USB для отлаженного, работающего чипа FDTI. Очевидно, что экономические показатели меняются в зависимости от количества, но для небольших производств с нехваткой времени решение FDTI обычно лучше.
markrages

Ух ты, твой tl;drабзац наверняка был неожиданным окончанием ... Ты заговорил с помощью прошивки только для прошивки USB / последовательных стеков (хотя и с очень правильными точками), а затем BAM ... "Только идиот будет использовать FTDI". Веселое. Люблю это!
Алекс

@alexgray: Wow вы действительно говорите в крайности там. Я не думаю, что я что-то говорила о чепухе; Это всего лишь типичные задачи, которые ставятся перед людьми при разработке продукта. Я имел дело с проектами, которые оптимизированы практически по всем комбинациям этих точек. Для хобби-проектов может быть подход Трампа против Сандерса к решению «я использую мост FTDI RS-232 или нет?», Но в реальном проектировании вы должны просто объективно рассмотреть все плюсы и минусы и прийти к оптимальный вывод.
user36129

4

Есть преимущества в использовании отдельного 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, который является недорогим.


Что касается скорости передачи AVR UART, да, она действительно медленная ... Итак, (чтобы это исправить), каким другим способом существует связь между чипами AVR и FTDI? Теперь я на 230,4 кбит / с в режиме
Uart

@ user3829694 - Я не уверен, что ты имеешь в виду. Вы спрашиваете, как быстрее, чем 230,4 кбит / с? Или вы говорите, что 230,4 кбит / с - это нормально для вас?
gbulmer

Я спрашиваю, если я хочу больше скорости, что еще я могу сделать? Я думаю, FT245 FIFO, он может достигать 1 Мбит / с. Я пытаюсь сделать HID проекты с «мониторингом в реальном времени», просто чтобы собрать данные из avr (с датчиками и т. Д.) В форму ПК. Но с UART даже на максимальной скорости (230,4 кбит / с) скорость передачи всего буфера (256 байт) занимает около 9 мс: 230,4 кбит = 28,8 кБайт = 1 / 28,8 = 34 722 байт на байт * 256 байт = 8,88 мс / 256 байт, я думал, что на этот раз это не очень хорошо для мониторинга в реальном времени
MrBit

если я хочу обновлять свою форму каждые 10-100 мс (отправляя-получая данные каждые 10-100 мс), у AVR не остается времени для обработки других задач.
MrBit

@ user3829694 - Ладно, вы хотите быстро перемещать данные с минимальными издержками.
gbulmer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.