Files
obsidian-vault-/Interview Question/1. Hardware Skill (I2C_SPI_UART).md
T
2025-12-29 22:34:17 +03:00

17 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. Длина линии. (ёмкости кабеля)
      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