mirror of
https://github.com/EmbedDevIOT/obsidian-vault-.git
synced 2026-11-05 22:23:26 +03:00
257 lines
18 KiB
Markdown
257 lines
18 KiB
Markdown
Аппаратная часть.
|
||
# **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 |