# i2C 1. **I2C - Общие вопросы и принцип работы** 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. **I2C - проблемы и диагностика** 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. Linux и I²C 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 в Linux? 1. stty -F /dev/ttyS0 2. echo "test" > /dev/ttyS0 3. cat /dev/ttyS0 4. minicom / picocom 5. dmesg | grep tty 6. Как работать с USB-UART адаптерами в Linux? 1. `/dev/ttyUSB0` (ch341, cp2102) 2. `lsusb` 3. `dmesg | grep tty`