mirror of
https://github.com/EmbedDevIOT/obsidian-vault-.git
synced 2026-11-06 03:23:25 +03:00
163 lines
11 KiB
Markdown
163 lines
11 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. 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. Тестирование. |