vault backup: 2026-03-19 17:03:08

This commit is contained in:
Aleksey Baranov
2026-03-19 17:03:08 +03:00
parent c517e45d3c
commit 94b352d49e
13 changed files with 13 additions and 12 deletions
+257
View File
@@ -0,0 +1,257 @@
Аппаратная часть.
# **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. `/dev/i2c-*` - представление устройств в системе (файлы устройств)
2. Утилиты: `i2cdetect`, `i2cget`, `i2cset`
# **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