Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Промышленные технологии

SPI, I2C, UART: протоколы связи и их применение

1. Интерфейс UART

Что такое UART

Universal Asynchronous Receiver/Transmitter (UART) — последовательный протокол для связи хоста с периферией. Обеспечивает последовательную передачу, асинхронную и двунаправленную. Две линии: Tx (передача) и Rx (прием). Обычно Tx — цифровой пин 0, Rx — пин 1. Синхронизирует управление компьютером и внешними последовательными устройствами.

Как работает

Три режима: Simplex (однонаправленно), Half Duplex (по очереди в обе стороны), Full Duplex (одновременно в обе стороны).

Принцип передачи:

  1. Передающий UART преобразует параллельные данные мастера в последовательные для приемного UART. Приемный — обратно в параллельные для устройства-приемника.
  2. Асинхронность: нет тактового сигнала. UART генерирует старт/стоп биты для обозначения начала/конца сообщения.
  3. Оба UART должны работать на одном Baud rate (скорости). Допуск <10%, иначе данные бесполезны.

Протокол работы UART

Передача и прием данных

  1. Передающий UART получает данные от шины данных (CPU)
  2. Добавляет 3 бита: старт, паритет, стоп → пакет данных → на пин TX
  3. Передача прекращается при истощении данных

Управление прерываниями

Прерывания для автоотправки буфера. Сценарии: FIFO Overflow, Line Break, Frame Error, Parity Error; прием, передача, таймаут приема.

Операция FIFO

Stellaris UART: два 16-байтных FIFO (прием/передача). Настраиваемая глубина (1/8, 1/4, 1/2…) для разных прерываний.

Передающий FIFO: ввод данных до заполнения → стоп ввода (иначе потеря) → побайтовая отправка до опустошения → новый слот.

Приемный FIFO: автосохранение/стирание → всегда место. Трансиверный FIFO решает неэффективность CPU и частые прерывания UART. Нет потерь данных.

Loopback

Внутренний loopback для отладки: RX получает отправленные данные.

Последовательный ИК-протокол (SIR)

IrDA SIR как энкодер/декодер: перевод полудуплексного SIR в асинхронный UART поток. Декодированный вход и цифровой выход в UART.

Преимущества UART

  1. Простой, хорошо документирован, легко использовать
  2. Не требует линии тактового сигнала
  3. Бит паритета для проверки ошибок

Недостатки UART

  1. Размер кадра ≤9 бит, низкая скорость
  2. Не поддерживает много мастеров/слейвов
  3. Обязательный baud rate в пределах 10%
  4. Низкая скорость межустройственной передачи

Примеры UART в микроконтроллерах

2. Интерфейс I2C

Что такое I2C

Inter-Integrated Circuit (I2C) похож на UART, но для датчиков и модулей. Двунаправленная двухпроводная синхронная шина. Подключает множество устройств без компромисса пути — общая шина и адресация. Платеж: ниже скорость vs SPI. Скорость зависит от шумов, качества проводов, data rate. Подключение низкоскоростных устройств: EEPROM, ADC, микроконтроллеры.

Как работает

Две линии: SDA (данные) и SCL (такт). SCL синхронизирует передачу, SDA — данные. Мастер инициирует передачу, генерирует такт, открывает ведомое устройство. Адресуемое устройство — slave. Мастер и слейв не имеют постоянного data rate — зависит от направления передачи. Мастер уведомляет слейва перед передачей и приемом. Pull-up резистор на питание I2C обязателен.

Протокол I2C

Метод передачи

  1. Мастер посылает старт: SDA высокий→низкий, затем SCL высокий→низкий
  2. Мастер шлет 7/10-бит адрес + бит R/W каждому слейву
  3. Слейвы сравнивают адрес. Совпал → ACK (SDA низкий). Не совпал → SDA высокий
  4. Мастер шлет/принимает фрейм данных. После завершения приемник возвращает ACK
  5. Мастер: SCL высокий, затем SDA высокий — конец связи

Синхронизация такта

Каждый мастер генерирует свой такт на SCL. Данные валидны только во время высокого уровня такта.

Режимы передачи

Fast Mode

400 кбит/с. Подавление глитчей, slope control на выходе.

High-Speed Mode

3,4 Мбит/с. Быстрее Fast Mode.

Преимущества I2C

  1. Мало пинов/сигналов даже при множестве устройств
  2. Гибкость: multi-master, multi-slave
  3. Простота: 2 двунаправленных провода для многих устройств
  4. Адаптивность, поддержка множества мастеров

Недостатки I2C

  1. Низкая скорость, нужны pull-up резисторы (SPI — push-pull). Open-drain ограничивает скорость
  2. Резисторы занимают место на PCB
  3. Сложно при множестве устройств

Примеры I2C в микроконтроллерах

3. Интерфейс SPI

Что такое SPI

Serial Peripheral Interface (SPI) — для микроконтроллеров. Full duplex — одновременная передача/прием. Быстрее I2C, мин. 8 бит за такт. Простой протокол → высокие скорости. Важен для дисплеев, SD-карт, термометров (внезапные изменения инфо).

Как работает

Два способа:

Устройств сколько угодно, но лимит — доступные hardware CS линии. При point-to-point адресация не нужна.

Протокол SPI

4 линии:

  1. MOSI (Master Out Slave In)
  2. MISO (Master In Slave Out)
  3. SCLK (такт)
  4. NSS (Slave Select)

Multi-slave: у каждого слейва свой NSS → усложняет железо vs I2C. Два сдвиговых регистра → синхронная передача от мастера (CPU) к периферии.

Преимущества SPI

  1. Простота: нет сложной адресации слейвов как в I2C
  2. Самый быстрый из последовательных интерфейсов (быстрее UART, I2C)
  3. Нет старт/стоп бит — непрерывная передача
  4. Отдельные MISO/MOSI — одновременный прием/передача

Недостатки SPI

  1. Много занятых пинов — лимит устройств
  2. Нет flow control, нет подтверждения приема/передачи (в I2C есть ACK)
  3. Нужно 4 линии (UART — 2), нет проверки ошибок (нет паритета)
  4. Только один мастер

Примеры SPI в микроконтроллерах

Сравнение UART, I2C, SPI

Таблица сравнения по скорости, пинам, режимам, сложности, применению.

Какой протокол «лучший»?

Нет superiores. Выбор под проект: SPI — для скорости. I2C — для множества устройств без сложной схемы.

Заключение

Разобранны ключевые аспекты UART, I2C, SPI: интерфейсы, скорости, плюсы/минусы. Готовы ответить на вопросы. Обращайтесь — поможем сразу.

Промышленные технологии

  1. MQTT против DDS: выбор правильного M2M протокола для IoT
  2. Понимание сетевых протоколов: от физического уровня к продвинутому арбитражу
  3. Основы цифровой памяти: адресация, доступ и волатильность
  4. Основные платы расширения для Raspberry Pi: I2C, UART, GPIO и не только — Наборы, хэдеры и защита
  5. 14 инновационных применений нанотехнологий: от медицины к материалам
  6. Серебряная пайка: процесс, материалы и применение
  7. Раскрытие производственной эффективности: проверенные стратегии данных
  8. Оптимизация приёма данных для более умного принятия решений
  9. Сорта древесины и их практическое применение: от строительства до производства бумаги
  10. Вольфрам: исторические применения и современные инновации