Как выбрать интерфейс для устройства — UART, SPI, I2C или CAN
Интерфейс определяет состав компонентов, топологию платы и предельную длину линии. Сравниваем четыре интерфейса по числу абонентов, скорости и длине, разбираем обвязку и типовые ошибки.
Интерфейс обмена данными выбирается на этапе схемотехники и потом определяет и состав компонентов, и топологию платы, и предельную длину линии между устройствами. Смена интерфейса после выпуска опытной партии означает переработку схемы, платы и программного обеспечения, поэтому решение принимается до закупки микроконтроллера — исходя из расстояния, числа абонентов, требуемой скорости и условий, в которых работает изделие.
Разберём, чем различаются UART, SPI, I2C и CAN, какие компоненты нужны каждому из них, где проходят практические границы применения и что учитывается при выборе. Компоненты лежат в разделах интерфейсных микросхем и микроконтроллеров.
Чем различаются четыре интерфейса
| Интерфейс | Линии | Число абонентов | Типовая скорость | Практическая длина | Где применяется |
|---|---|---|---|---|---|
| UART | 2 (приём и передача) | 2 при прямом соединении | 9,6–921,6 кбит/с | до 1 м без преобразователя, до 1200 м через RS-485 | связь с модулем, отладочный вывод, обмен между платами |
| SPI | 4 и по линии выбора на каждое устройство | один ведущий, несколько ведомых | до десятков Мбит/с | в пределах платы, до 20–30 см | память, АЦП, дисплеи, радиомодули |
| I2C | 2 с подтягивающими резисторами | до 100 и более по адресам | 100, 400 кбит/с, реже выше | в пределах платы или соседних плат | датчики, часы реального времени, энергонезависимая память |
| CAN | 2 витой пары с согласованием | десятки узлов на общей шине | 125 кбит/с — 1 Мбит/с, CAN FD выше | до 40 м на 1 Мбит/с, до 500 м на 125 кбит/с | распределённые системы, техника, промышленное оборудование |
Что требуется каждому интерфейсу кроме микроконтроллера
- UART внутри платы дополнительных компонентов не требует. Для выхода за пределы корпуса ставится преобразователь в RS-485 или RS-232 — микросхема приёмопередатчика, защитные элементы по линии и согласующий резистор.
- SPI требует по одной линии выбора на каждое ведомое устройство. Если выводов не хватает, добавляется дешифратор. На высоких частотах важна длина и симметрия проводников на плате.
- I2C работает только с подтягивающими резисторами на обеих линиях: типовое значение 4,7 кОм при 100 кбит/с и 2,2 кОм при 400 кбит/с. При большом числе устройств ёмкость шины ограничивает скорость.
- CAN требует отдельного приёмопередатчика, даже если контроллер шины встроен в микроконтроллер, и согласующих резисторов 120 Ом на обоих концах линии.
- Гальваническая развязка добавляется там, где узлы питаются от разных источников или разнесены по оборудованию: развязывающие микросхемы или оптопары ставятся между контроллером и приёмопередатчиком.
- Разъёмы подбираются под число линий и условия эксплуатации — от штыревых на плате до промышленных исполнений из раздела разъёмов и соединителей.
Как выбор сужается по условиям задачи
- Обмен в пределах платы с быстрой периферией. SPI: выше скорость, нет накладных расходов на адресацию, простая схемотехника. Ограничение — число линий выбора.
- Много медленных датчиков на плате. I2C: две линии на всю группу, адресация встроена. Ограничение — суммарная ёмкость шины и совпадение адресов у однотипных микросхем.
- Связь двух устройств на расстоянии до сотни метров. UART через RS-485: простая реализация, устойчивость к помехам за счёт дифференциальной передачи.
- Несколько узлов в одном изделии или на объекте. CAN: арбитраж на шине, контроль ошибок и повторная передача выполняются аппаратно, отказ одного узла не блокирует обмен.
- Сильные помехи и длинные трассы. Дифференциальные интерфейсы — CAN или RS-485. Однопроводные линии I2C и SPI за пределы платы не выводятся.
- Требование к детерминированности. CAN: приоритет кадра задаётся идентификатором, и важные сообщения получают шину первыми.
Что чаще всего приводит к переделке платы
- Вывод I2C на межплатный кабель: ёмкость линии растёт, фронты затягиваются, обмен начинает сбоить при нагреве.
- Совпадение адресов у двух одинаковых датчиков на одной шине, когда микросхема не имеет вывода выбора адреса.
- Отсутствие согласующих резисторов на концах линии CAN либо установка их на каждом узле вместо двух крайних.
- Нехватка выводов микроконтроллера под линии выбора SPI, обнаруженная после разводки платы.
- Отсутствие развязки между узлами с разными источниками питания — разность потенциалов земли выводит из строя приёмопередатчики.
- Выбор микроконтроллера без запаса по числу аппаратных блоков интерфейсов: программная реализация занимает вычислительное время и не выдерживает требуемых скоростей.
Что проверяется при подборе компонентов
- Число аппаратных блоков каждого интерфейса в микроконтроллере и возможность их назначения на нужные выводы.
- Диапазон питания и логические уровни: сопряжение узлов на 5 В и 3,3 В требует преобразователя уровней.
- Температурный диапазон приёмопередатчиков — для промышленного исполнения он отличается от бытового.
- Защита линий от выбросов: защитные диоды на вводах кабельных интерфейсов.
- Стабильность тактирования: для высоких скоростей UART внутренний генератор не всегда обеспечивает нужную точность, ставится кварцевый резонатор.
- Наличие компонентов в нужном корпусе и объёме на весь тираж изделия, а не только на опытную партию.
Что прислать для подбора
- Состав узлов изделия и расстояния между ними.
- Число и тип периферийных микросхем: датчики, память, дисплей, модули связи.
- Требуемая скорость обмена и допустимая задержка.
- Условия эксплуатации: температура, уровень помех, наличие длинных кабельных трасс.
- Питание узлов — от одного источника или от разных.
- Планируемый тираж и срок серийного выпуска.
Частые вопросы
Можно ли совмещать несколько интерфейсов в одном изделии? Это обычная практика: датчики на I2C, память на SPI, связь с внешним оборудованием по CAN или RS-485. Проверяется только, хватает ли аппаратных блоков и выводов микроконтроллера.
Чем CAN FD отличается от обычного CAN? Увеличенным полем данных и повышенной скоростью на участке передачи данных. Требуется поддержка со стороны контроллера и приёмопередатчика у всех узлов шины, поэтому смешивать поколения в одной сети нужно с оглядкой на режим работы.
Сколько устройств реально держит шина I2C? Ограничение не в числе адресов, а в суммарной ёмкости линии — 400 пФ для стандартного режима. На практике это до десяти-пятнадцати микросхем на плате; дальше ставится повторитель или шина делится на сегменты.
Нужен ли отдельный приёмопередатчик, если CAN встроен в микроконтроллер? Нужен. Встроенный блок формирует логические сигналы, а физический уровень шины с дифференциальной передачей обеспечивает отдельная микросхема.
Что выбрать для отладки на этапе разработки? UART: он выводит диагностику при минимальных затратах и не мешает работе остальных интерфейсов. Линию имеет смысл предусмотреть на плате даже тогда, когда в серийном изделии она не используется.
Что мы делаем
Подбираем микроконтроллер с нужным составом аппаратных интерфейсов и запасом выводов, комплектуем обвязку — приёмопередатчики, развязку, защитные элементы и согласующие резисторы, проверяем наличие компонентов в нужных корпусах на весь тираж и предлагаем аналоги там, где позиция снята с производства. Поставляем электронные компоненты из Китая с проверкой партии при приёмке.
Пришлите состав узлов изделия, расстояния между ними и требуемые скорости на micro@tkasiatorg.ru — подберём интерфейс, компоненты обвязки и дадим спецификацию с ценами и сроками поставки.
