# **i2C (Inter-Integrated Circuit)** 1. **Общие вопросы и логика работы** 1. Шина _двухпроводная_: SDA (данные) и SCL (тактовый). OpenDrain линия + pull up резисторы. 1. Что означает Open Drain? Устройства могут только тянуть линию вниз (0), а “1” формируется резистором подтяжки. 2. Опишите преимущества: 1. Арбитраж. Несколько устройств на шине 2. Отсутствие конфликтов (драйвер против драйвера) 3. Pull up резисторы. Для чего нужны: 1. Чтобы линии SDA и SCL могли уходить в состояние логической “1”. 2. Типичные значения: **2.2–10 кΩ** (зависит от скорости и ёмкости линии). 4. Что будет если pull up слишком большой? 1. Медленный rise-time 2. Ошибки на высоких скоростях 3. Потери данных 2. Режим работы **master–slave**. 1. Мастер генерирует такты. Слайв отвечает 3. Скорости. 1. Standart - 100kHz 2. Fast mode - 400kHz 3. Fast + 1MHz 4. Адресация 7 или 10 бит. 1. Как задается адрес устройства? 2. Разница 7 и 10 бит (7 стандартная) 5. Транзакции и сигналы: 1. Как выполняется передача (пример посылки) 1. start → address + R/W → ack → data bytes → stop. 2. Что такое Start и Stop в I2C 1. START - Переход SDA - в HIGH - LOW при HIGH SCL 2. STOP - обратный переход SDA LOW → HIGH при HIGH SCL 3. Что такое ACK и NACK (Используется для подтверждения прима каждого байта) 1. ACK - slave тянет SDA LOW 2. NACK - SDA остаётся HIGH 6. Протоколы over I2C 1. SMBus - подмножество I²C с более строгими таймингами и дополнительными протоколами (battery management, sensors) 2. PMBus - протокол управления питанием поверх SMBus/I²C. Используется в телеком/серверных блоках питания 2. **Тестирование** 1. Как влияет длина линии (емкость) ? 1. Чем больше суммарная ёмкость, тем хуже rise-time (меньше скорость) 2. длинные транзакции, шум, ошибки тактирования. 2. Что дает использование логического анализатора ? 1. Проверить корректность инициализации битрейта (100/400 kHz и выше). 2. Детальный анализ SDA и SCL 3. Анализ проблемы на уровне таймингов 4. Проверять **ACK/NACK**, корректность адресации. 3. Что дает использование осциллографа 1. Фронты SDA/SCL 2. Наводки 3. Соответствие rise/fall таймингам 4. Уровни напряжений 4. Тестирование на практике 1. Проверка адресации (i2cdetect) 2. Запись/чтение регистров 3. Тест на шум/помехи 5. Как проверить I²C в Linux? 1. # **UART (Universal Asynchronous Receiver/Transmitter)** 1. **Общие вопросы и логика работы.** 1. Что такое UART? 1. Асинхронный последовательный интерфейс передачи данных “точка-точка" 2. Двухпроводная шина (RX, TX, GND) 3. Уровни (TTL 3.3 В / TTL 5 В) 2. Что значит асинхронный последовательный интерфейс? 1. Линии не содержат тактового сигнала. Синхронизация происходит по битам START/STOP. 3. UART = RS-232 (отличия) ? 1. UART – протокол передачи данных. RS-232 – электрический стандарт уровней (±3…±15 В). 2. В чем разница TTL UART и RS - 232 1. TTL: 0/3.3 В или 0/5 В / RS-232: –15 В → лог. 1, +15 В → лог. 0 (инверсная логика) 4. Какие параметры нужно согласовать между устройствами? 1. Скорость (baud rate) - Количество символов (битовых переходов) в секунду. 1. Стандартные скорости 9600, 115200. 2. Количество бит данных 3. Чётность (parity) 4. Количество стоп-битов 5. Flow control (RTS/CTS) Контроль потока. 5. Как устроен формат UART кадра? 1. 1 стартовый бит (0) 2. 5–9 бит данных 3. необязательный бит чётности 4. 1 или 2 стоп-бита (1) 6. Как определяется начало передачи? 1. По переходу TX с HIGH → LOW (start бит). 7. Что происходит, если неверно настроен baud rate? 1. Искажённый битовый поток 2. Ошибки приёма 3. “кракозябры” в терминале 8. Зачем используются стоп-биты? 1. Для восстановления синхронизации при асинхронной передаче. 9. Что такое XON/XOFF? 1. Программный flow-control. 2. `XOFF` посылается для остановки передачи, `XON` — для возобновления. 10. Что такое аппаратный flow-control (RTS/CTS)? 1. RTS (Ready To Send) — устройство готово принимать данные 2. CTS (Clear To Send) — разрешение на передачу. Используется для предотвращения переполнения буфера. 11. Что будет, если не использовать flow-control при высоких скоростях? 1. Переполнение FIFO / Потеря данных / Framing errors 2. **Тестирование.** 1. Способы тестирования UART? 1. Проверить сигнал осциллографом 2. Запустить loopback тест 3. Отправить известную последовательность и сравнить (проверка UART - USB конвертором) 4. Проверить стресс/нагрузку 2. Что такое loopback тест 1. Соединение TX → RX, чтобы проверять передачу/приём на одном устройстве. 3. Как обнаружить линии с шумом? 1. Нестабильные фронты 2. Framing errors (Стоп-бит не обнаружен в ожидаемое время → нарушение кадра.) 3. Анализ сигнала на осциллографе 4. На что влияет длина UART кабеля? 1. Ослабление сигнала 2. Шум 3. Перекрёстные помехи 4. Максимальная длина зависит от скорости (обычно 1–2 м ) 5. Как уменьшить шум в UART? 1. Экранированный кабель + скрутка 2. Переход на RS - 485 (дифференциальный сигнал) 3. Разнести питание и сигнал 6. Как проверить UART в Linux? 1. `stty -F /dev/ttyS0` 2. `echo "test" > /dev/ttyS0` 3. `cat /dev/ttyS0` 4. `minicom / picocom` 5. `dmesg | grep tty` 7. Как работать с USB-UART адаптерами в Linux? 1. `/dev/ttyUSB0` (ch341, cp2102) 2. `lsusb` 3. `dmesg | grep tty # **RS-485** 1. **Общие вопросы и логика работы** 1. Что такое RS485 и для чего применяется? 1. Дифференциальный последовательный интерфейс. 2. Предназначенный для связи на большие расстояния (до 1200 м) и многоточечной топологии (до 32 устройств). 3. Обеспечивает высокую помехоустойчивость и может работать на скоростях до 10 Мбит/с на коротких дистанциях. 2. Что значит дифференциальный интерфейс и в чём преимущества? 1. Сигнал передаётся по двум линиям A и B. Информация кодируется **разностью напряжений**, а не абсолютными уровнями. 2. Высокая помехоустойчивость. 3. Возможность работы на больших расстояниях. 4. Устойчивость к земляным петлям и снижение влияния электромагнитных наводок. 3. Чем RS-485 отличается от RS-232? 1. Тип сигнала: RS-232 - однотактный. RS-485 - дифференциальный 2. Расстояние: RS-232 - до 15м. RS-485 - 1200м 3. Скорость RS-232 - до ~115 кбит/с. RS-485 - до 10 Мбит/с 4. Топология RS-232 - точка - точка. RS-485 - многоточка 5. Устойчивость к помехам RS-232 - низкая. RS-485 - высокая 4. От чего зависит максимальная скорость RS-485? 1. Длина линии. (ёмкости кабеля) 2. Количество узлов (слейвов) 3. Крутизны фронтов драйвера 4. Типовые параметры (10 Мбит/с → до 10–20 м / 1 Мбит/с → до 300 м / 100 кбит/с → до 1200 м) 5. Какие уровни сигналов определены в RS-485? 1. Логическая 1: **(V_B – V_A) ≥ +200 mV** 2. Логический 0: **(V_B – V_A) ≤ –200 mV** 3. Максимальный дифференциальный сигнал: до ±6 В 4. Максимальное напряжение между линиями относительно земли: ±12…±15 В (зависит от драйвера) 6. Что такое терминатор и зачем он нужен? 1. **Резистор 120 Ω**, подключённый на каждом конце линии. 2. Устраняет отражения. 3. Стабилизирует линию. Снижает ошибки передачи. 7. Можно ли ставить терминатор в середине линии? 1. Он должен быть только на **двух концах** шины. 2. Дополнительные терминаторы приводят к перегрузке драйвера и ухудшению сигнала. 8. Что такое bias-резисторы (fail-safe biasing) 1. Это пара резисторов (Pull-up на B, Pull-down на A), которые формируют устойчивый логический уровень, когда линия неактивна. 2. Типовые значения (Pull-up(down): 680-1k) Без них приемник может «дрожать» между 0 и 1 из-за шумов. 9. Что будет, если bias-резисторы установлены на каждом узле RS-485? 1. Получится слишком сильный ток смещения → возможный перегрев или некорректный уровень idle. 2. Bias ставится только **на одном узле** (обычно master). 10. Как устройства определяют, кто говорит в RS-485? 1. Не определено протоколом. Регламентируется протоколом верхнего уровня (Modbus RTU и т.д.) 11. Что будет, если два устройства одновременно начнут передавать? 1. Возникнет коллизия: сигнал искажается 2. CRC/паритетные ошибки. 2. **Тестирование.** 1. Способы тестирования линии: 1. Проверить осциллографом 2. Логическим анализатором. 2. Как тестировать RS-485 линию осциллографом? 1. Дифференциальную форму сигнала (AB) 2. фронты/спады (slew rate) 3. отражения (ringing) 4. уровни idle и biasing 5. помехоустойчивость при подключённых нагрузках 3. Как проверить работу на длинной линии? 1. Проверка работы терминаторов. 2. измерение ошибок CRC при передаче 3. шумовое воздействие (индуктор, электромотор и т.п.) 4. Как проверить устойчивость при нескольких узлах? 1. подключение 5–32 узлов 2. тест работы на разных расстояниях 3. нагрузочное тестирование 4. тест потери питания одного узла (не должен тянуть линию вниз) # **SPI (Serial Peripheral Interface)** 1. **Общие вопросы и логика работы** 1. Что такое SPI и где используется? 1. Serial Peripheral Interface - синхронный последовательный интерфейс Master-Slave. 2. DAC, ADC, Sensors, Display, EEPROM. 3. Высокоскоростные периферийные устройства 4. Главные преимущества: высокая скорость (до десятков МГц) и простота протокола. 2. Какие сигналы содержит классический SPI? 1. **SCLK** - тактовая линия 2. **MOSI** - Master Out Slave In 3. **MISO** - Master In Slave Out 4. **CS/SS** - выбор ведомого (активный низкий) 3. Какая максимальная частота SPI? 1. Зависит от: конкретного устройства (обычно 4–60 МГц) 2. длины трасс/кабеля 4. Можно ли подключить несколько slave к одному SPI? 1. Да - с общими MOSI/MISO/SCLK и индивидуальными CS. 5. Что такое 3-wire и 4-wire SPI? 1. **3-wire:** SCLK + SDIO + CS (двунаправленный канал данных) 2. **4-wire:** SCLK + MOSI + MISO + CS 6. Может ли SPI выполнять чтение и запись одновременно? 1. Да, SPI - full duplex интерфейс: 7. Что такое setup time и hold time для SPI? 1. **Setup time** - время, за которое данные становятся стабильными до активного фронта SCLK 2. **Hold time** - время, после которого данные должны оставаться стабильными после фронта 8. Что такое QSPI и чем отличается от SPI? 1. передаёт данные по 4 линиям вместо 1 2. скорость выше в 4 раза 3. используется для флэш-памяти и дисплеев 4. требует другую инициализацию 9. Что такое Dual SPI? 1. Использует **две** линии данных (как половина QSPI). 2. **Тестирование.** 1. Что важно проверить при тестировании SPI устройства? 1. частоту SCLK 2. стабильность фронтов 3. корректность работы CS 4. правильность данных MISO/MOSI 5. реакцию на нарушения таймингов 2. Как тестировать SPI при помощи логического анализатора? 1. Подключить MOSI/MISO/SCLK/CS 2. Декодировать SPI 3. Отследить значения регистров 4. Проверить синхронизацию с фронтами 5. Проверить, что CS не дребезжит 3. Что делать, если устройство читает 0xFF или 0x00 вместо реальных данных? 1. неверный CS 2. неправильный CPHA/CPOL 3. недостаточное время ответа slave 4. слишком высокая частота SCLK 4. Что произойдёт при слишком высокой частоте SPI? 1. искажённые фронты 2. пропадание отдельных бит 3. CRC/verify ошибки в протоколе устройства 4. «шумящие» осциллограммы на MISO 5. Можно ли моделировать SPI трафик без железа? 1. да, с использованием Python + spidev mock 2. или с помощью FPGA/Pattern Generator 3. или LA в режиме pattern generation