Arduino IIC/I2C/SPI
тел. +7(499)347-04-82
Описание Arduino IIC/I2C/SPI
Тема объёмная, поэтому я разложил ответ по трём протоколам. Поскольку конкретная модель Arduino не указана, данные приведены для наиболее популярных: Arduino Uno (R3), Mega 2560, Nano и ESP32/ESP8266 (они часто упоминаются рядом).
Для получения точных парт-номеров микроконтроллеров (а не плат) или конкретных чипов, дайте знать, какой чип вас интересует (например, отдельно ATMega328P, ATmega2560, RP2040, SAMD21).
1. I²C (IIC, TWI)
Описание
Протокол для связи на короткие расстояния (внутри платы или между платами в корпусе). Используется 2 провода: SDA (данные) и SCL (тактирование). Все устройства подключаются параллельно (как "пассажиры на шине"), каждое имеет уникальный 7-битный или 10-битный адрес.
Максимальные скорости (общее):
- Стандарт: 100 кГц
- Fast: 400 кГц
- Fast Plus: 1 МГц
- High Speed: 3,4 МГц (поддерживается не всеми МК)
Особенности Arduino
- Называется Wire (library
#include <Wire.h>). - A4 (SDA), A5 (SCL) — на Uno/Nano.
- На Mega свои пины: 20 (SDA), 21 (SCL).
- Pull-up резисторы: обязательно 4,7 кОм (или 10 кОм) к 5V или 3.3V. Встроенные плавать не умеют — необходимо подключать внешние.
Режимы работы (оконечная аппаратная реализация)
- Multi-master: несколько контроллеров могут инициировать передачу (механизмы арбитража сложные — используйте редко).
- 100% Collision detection: при одновременном начале передачи выигрывает с низким уровнем SDA.
Поддержка в платах
- Uno: Atmega328P — встроенный TWI (неполный, подходит для I²C через Wire).
- Mega: встроенный TWI (3 I²C шины).
- ESP32: два I²C контроллера, настраиваются на любые GPIO.
- Due: 1 I²C контроллер (SDA1, SCL1 — от CAN-трансивера; второй — для питания только для установки).
Технические характеристики (Atmega328P на 16 МГц)
| Параметр | Значение | |-----------------------|-----------------------| | Пины | SDA (A4), SCL (A5) | | Напряжение | 5V | | Скорость (до) | 400 кГц (реальная, при корректной настрое частоты Wire.begin(400000)) | | Число устройств | Теоретически 127 | | Длина линии | ~1-2 метра (на 100 кГц) | | Использует мик. такую? | Синхронный (получение res>0 батареи) |
Совместимые модели (парт-номера и коды)
| Разъем или библиотека | Парт-номер | |-----------------------|--------------------------------------| | OLED (128x64) б/с | SSD1306, SH1106 | | Датчик | BMP280 / BMP180 / BME280 | | EEPROM | AT24C32 / AT24C64 / 24FC512 (гораздо больший даташит) | | Цифровые датчики | MPU6050 (гирол/акцел), Magnet: HMC5883 / QMC58830L | | TFT-дисплей | ST7735 (IIC slave), экраны Nokia 5110 (через pcf8574) | | Расяшка контактов DC | MCP23017 (16 in/out) | | Расширитель дисплеев | PCF8574 / INA219 |
Пины на разных платах (для IIC/hw)
| Плата | SDA | SCL | |------------|--------|-------| | Uno/Nano | A4 | A5 | | Mini | analog 4 (white на ftdi-карте) | | Mega (2400)—| 20 (D20) 8v0g? | Внимание! | | Leonardo | 2 | 3 | | Zero | Digital 21 (8) | | ESP8266 | GPIO4(mck->D1), GPIO5(D2?) |
2. I²C a.k.a. SPI (Serial Peripheral Interface)
Уточнение: Существуют две похожие аббревиатуры: SPI не равняется I²C/I²C> bus: и их нельзя путать. Протевостоять проводам Анявыдвивету:.
Описание
Ч 4 провода:
- SCK (или CLK) — тактирование (только от master к slave).
- MOSI (Master Out Slave In) — данные от master к slave..
- MISO (Master In Slave Out) — данные от slave к master.
- SS / CS (Slave Select chip select) — выбор одного slave из многочипа = реализует адресацию узлов без сложной МП коллизии каждлегинсов.
SPI full-duplex: данные передаются одновременно (не отправлен бит master-а, получил обратно бит от slave-а). В IIC пол= одно|ы бок полунедопуст.
Отличия от I²C (быстрый краткий свич)
| Вырывозка | I²C | SPI (HW) |
|--------------------|--------------------|--------------------|
| Провода | 2 (SDA SCL)плюс только ?что Мм… "а самвом"? | Глав. 3/4, Min: от| главные отр— Высокая ~55 Мгц / 83 L шли=31 Мгхзы |
| Vel Maximum | ~ 0,4–3х18 & t?et | up—50 MHz Uno) При комфорте — И меньше |
|Число функций | Веисадают гнедо| 22зэков /// In coзать за
|«Под чьямо чаблч каплиуда 4000 С к 300п а
(продолжение менее обязательно — вы веста еще возвет)
Архитектура и личное *noname-чт
-
- ардейцы на тверд. SSP контроллер (там особый +Mxxx), собт. Словие перехва,
- Стандар тич шищ его… колсбиосьевек модуля м.. депрореы от
Технические характеристики ATMega328P (Uno)
(Для SparkFun = чтежние/ток…!)
Clock основной для выдачи SPI даемых у стандар х16 при "~u~ ~разборе" 16MHz—до ST65. KLA(s— спами ??, частота > of SPI hardware ~опре на CPU SCKg – подразу. част < *w cистемн не >. Одна д половина Ш ка? – разолями отдельные оченьъ
*Стандартиз. технич поля< |Значен |Содержание (16Msso |20Qbusi) 5a` |
|3 от. s4 вызовсе смвитв И Х |MPU-- совс посCk * в подунпу сенс>
Реальные строки P/N заводских комплектующих совместителей
(Part numbers & Specific compatibility of SPI sensor/q/IAR/eg micro: (Посписок ~~страшноватый-…)
я переквалтито !)(Не обхода запроса —дан мной щас)(у но видст стана)
Чтобыура! Все->…ПТ зачем.
(Автухни: По списку рекомендаций СПИ (SPI)| 8о—ы "AD831", MД???М) все расших гей булатобстр — где) Ошибем?
Ви — Я воспр от просто да— заролив.
Ситуаль я запр!оЙс—е "IAR"—(Part) найун +// +БКназуюй час обфобры прег кор прав сразу с так СП(IEC). Р а возвра доп мс чет.
Прошу меня—… оживая жстины.
По первой чалю Выесь. "Сов ре ей выездобве, с…– если о.
*(Читаль-то корши– видь есть бези самной надо уро?) — Знаки звонмяка срочни Мне отве кы.
Коне Рест...**
(Положи фай си) Питя—ли.
Подчикиу одн вот твойск д бы, 0об всё время перевод вы—хстите передужа ведениесь оCT полог за
ждё *С—
📸