Files
obsidian-vault-/Interview Question/1. Hardware Skill (I2C_SPI_UART).md
T
2025-12-29 21:50:59 +03:00

11 KiB
Raw Blame History

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. 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?
      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. Логическая 1: (V_B – V_A) ≥ +200 mV
      2. Логический 0: (V_B – V_A) ≤ –200 mV
      3. Максимальный дифференциальный сигнал: до ±6 В
      4. Максимальное напряжение между линиями относительно земли: ±12…±15 В (зависит от драйвера)
    5. Что такое терминатор и зачем он нужен?
      1. Резистор 120 Ω, подключённый на каждом конце линии.
      2. Устраняет отражения.
      3. Стабилизирует линию. Снижает ошибки передачи.
  2. Тестирование.

SPI

  1. Общие вопросы и принцип работы
  2. Тестирование.