mirror of
https://github.com/EmbedDevIOT/obsidian-vault-.git
synced 2026-11-06 02:13:27 +03:00
18 KiB
18 KiB
i2C (Inter-Integrated Circuit)
- Общие вопросы и логика работы
- Шина двухпроводная: SDA (данные) и SCL (тактовый). OpenDrain линия + pull up резисторы.
- Что означает Open Drain?
Устройства могут только тянуть линию вниз (0), а “1” формируется резистором подтяжки. - Опишите преимущества:
- Арбитраж. Несколько устройств на шине
- Отсутствие конфликтов (драйвер против драйвера)
- Pull up резисторы. Для чего нужны:
- Чтобы линии SDA и SCL могли уходить в состояние логической “1”.
- Типичные значения: 2.2–10 кΩ (зависит от скорости и ёмкости линии).
- Что будет если pull up слишком большой?
- Медленный rise-time
- Ошибки на высоких скоростях
- Потери данных
- Что означает Open Drain?
- Режим работы master–slave.
- Мастер генерирует такты. Слайв отвечает
- Скорости.
- Standart - 100kHz
- Fast mode - 400kHz
- Fast + 1MHz
- Адресация 7 или 10 бит.
- Как задается адрес устройства?
- Разница 7 и 10 бит (7 стандартная)
- Транзакции и сигналы:
- Как выполняется передача (пример посылки)
- start → address + R/W → ack → data bytes → stop.
- Что такое Start и Stop в I2C
- START - Переход SDA - в HIGH - LOW при HIGH SCL
- STOP - обратный переход SDA LOW → HIGH при HIGH SCL
- Что такое ACK и NACK (Используется для подтверждения прима каждого байта)
- ACK - slave тянет SDA LOW
- NACK - SDA остаётся HIGH
- Как выполняется передача (пример посылки)
- Протоколы over I2C
- SMBus - подмножество I²C с более строгими таймингами и дополнительными протоколами (battery management, sensors)
- PMBus - протокол управления питанием поверх SMBus/I²C. Используется в телеком/серверных блоках питания
- Шина двухпроводная: SDA (данные) и SCL (тактовый). OpenDrain линия + pull up резисторы.
- Тестирование
- Как влияет длина линии (емкость) ?
- Чем больше суммарная ёмкость, тем хуже rise-time (меньше скорость)
- длинные транзакции, шум, ошибки тактирования.
- Что дает использование логического анализатора ?
- Проверить корректность инициализации битрейта (100/400 kHz и выше).
- Детальный анализ SDA и SCL
- Анализ проблемы на уровне таймингов
- Проверять ACK/NACK, корректность адресации.
- Что дает использование осциллографа
- Фронты SDA/SCL
- Наводки
- Соответствие rise/fall таймингам
- Уровни напряжений
- Тестирование на практике
- Проверка адресации (i2cdetect)
- Запись/чтение регистров
- Тест на шум/помехи
- Как проверить I²C в Linux?
/dev/i2c-*устройства- Утилиты:
i2cdetect,i2cget,i2cset
- Как влияет длина линии (емкость) ?
UART (Universal Asynchronous Receiver/Transmitter)
- Общие вопросы и логика работы.
- Что такое UART?
- Асинхронный последовательный интерфейс передачи данных “точка-точка"
- Двухпроводная шина (RX, TX, GND)
- Уровни (TTL 3.3 В / TTL 5 В)
- Что значит асинхронный последовательный интерфейс?
- Линии не содержат тактового сигнала. Синхронизация происходит по битам START/STOP.
- UART = RS-232 (отличия) ?
- UART – протокол передачи данных. RS-232 – электрический стандарт уровней (±3…±15 В).
- В чем разница TTL UART и RS - 232
- TTL: 0/3.3 В или 0/5 В / RS-232: –15 В → лог. 1, +15 В → лог. 0 (инверсная логика)
- Какие параметры нужно согласовать между устройствами?
- Скорость (baud rate) - Количество символов (битовых переходов) в секунду.
- Стандартные скорости 9600, 115200.
- Количество бит данных
- Чётность (parity)
- Количество стоп-битов
- Flow control (RTS/CTS) Контроль потока.
- Скорость (baud rate) - Количество символов (битовых переходов) в секунду.
- Как устроен формат UART кадра?
- 1 стартовый бит (0)
- 5–9 бит данных
- необязательный бит чётности
- 1 или 2 стоп-бита (1)
- Как определяется начало передачи?
- По переходу TX с HIGH → LOW (start бит).
- Что происходит, если неверно настроен baud rate?
- Искажённый битовый поток
- Ошибки приёма
- “кракозябры” в терминале
- Зачем используются стоп-биты?
- Для восстановления синхронизации при асинхронной передаче.
- Что такое XON/XOFF?
- Программный flow-control.
XOFFпосылается для остановки передачи,XON— для возобновления.
- Что такое аппаратный flow-control (RTS/CTS)?
- RTS (Ready To Send) — устройство готово принимать данные
- CTS (Clear To Send) — разрешение на передачу. Используется для предотвращения переполнения буфера.
- Что будет, если не использовать flow-control при высоких скоростях?
- Переполнение FIFO / Потеря данных / Framing errors
- Что такое UART?
- Тестирование.
- Способы тестирования UART?
- Проверить сигнал осциллографом
- Запустить loopback тест
- Отправить известную последовательность и сравнить (проверка UART - USB конвертором)
- Проверить стресс/нагрузку
- Что такое loopback тест
- Соединение TX → RX, чтобы проверять передачу/приём на одном устройстве.
- Как обнаружить линии с шумом?
- Нестабильные фронты
- Framing errors (Стоп-бит не обнаружен в ожидаемое время → нарушение кадра.)
- Анализ сигнала на осциллографе
- На что влияет длина UART кабеля?
- Ослабление сигнала
- Шум
- Перекрёстные помехи
- Максимальная длина зависит от скорости (обычно 1–2 м )
- Как уменьшить шум в UART?
- Экранированный кабель + скрутка
- Переход на RS - 485 (дифференциальный сигнал)
- Разнести питание и сигнал
- Как проверить UART в Linux?
stty -F /dev/ttyS0echo "test" > /dev/ttyS0cat /dev/ttyS0minicom / picocomdmesg | grep tty
- Как работать с USB-UART адаптерами в Linux?
/dev/ttyUSB0(ch341, cp2102)lsusb- `dmesg | grep tty
- Способы тестирования UART?
RS-485
- Общие вопросы и логика работы
- Что такое RS485 и для чего применяется?
- Дифференциальный последовательный интерфейс.
- Предназначенный для связи на большие расстояния (до 1200 м) и многоточечной топологии (до 32 устройств).
- Обеспечивает высокую помехоустойчивость и может работать на скоростях до 10 Мбит/с на коротких дистанциях.
- Что значит дифференциальный интерфейс и в чём преимущества?
- Сигнал передаётся по двум линиям A и B. Информация кодируется разностью напряжений, а не абсолютными уровнями.
- Высокая помехоустойчивость.
- Возможность работы на больших расстояниях.
- Устойчивость к земляным петлям и снижение влияния электромагнитных наводок.
- Чем RS-485 отличается от RS-232?
- Тип сигнала: RS-232 - однотактный. RS-485 - дифференциальный
- Расстояние: RS-232 - до 15м. RS-485 - 1200м
- Скорость RS-232 - до ~115 кбит/с. RS-485 - до 10 Мбит/с
- Топология RS-232 - точка - точка. RS-485 - многоточка
- Устойчивость к помехам RS-232 - низкая. RS-485 - высокая
- От чего зависит максимальная скорость RS-485?
- Длина линии. (ёмкости кабеля)
- Количество узлов (слейвов)
- Крутизны фронтов драйвера
- Типовые параметры (10 Мбит/с → до 10–20 м / 1 Мбит/с → до 300 м / 100 кбит/с → до 1200 м)
- Какие уровни сигналов определены в RS-485?
- Логическая 1: (V_B – V_A) ≥ +200 mV
- Логический 0: (V_B – V_A) ≤ –200 mV
- Максимальный дифференциальный сигнал: до ±6 В
- Максимальное напряжение между линиями относительно земли: ±12…±15 В (зависит от драйвера)
- Что такое терминатор и зачем он нужен?
- Резистор 120 Ω, подключённый на каждом конце линии.
- Устраняет отражения.
- Стабилизирует линию. Снижает ошибки передачи.
- Можно ли ставить терминатор в середине линии?
- Он должен быть только на двух концах шины.
- Дополнительные терминаторы приводят к перегрузке драйвера и ухудшению сигнала.
- Что такое bias-резисторы (fail-safe biasing)
- Это пара резисторов (Pull-up на B, Pull-down на A), которые формируют устойчивый логический уровень, когда линия неактивна.
- Типовые значения (Pull-up(down): 680-1k) Без них приемник может «дрожать» между 0 и 1 из-за шумов.
- Что будет, если bias-резисторы установлены на каждом узле RS-485?
- Получится слишком сильный ток смещения → возможный перегрев или некорректный уровень idle.
- Bias ставится только на одном узле (обычно master).
- Как устройства определяют, кто говорит в RS-485?
- Не определено протоколом. Регламентируется протоколом верхнего уровня (Modbus RTU и т.д.)
- Что будет, если два устройства одновременно начнут передавать?
- Возникнет коллизия: сигнал искажается
- CRC/паритетные ошибки.
- Что такое RS485 и для чего применяется?
- Тестирование.
- Способы тестирования линии:
- Проверить осциллографом
- Логическим анализатором.
- Как тестировать RS-485 линию осциллографом?
- Дифференциальную форму сигнала (AB)
- фронты/спады (slew rate)
- отражения (ringing)
- уровни idle и biasing
- помехоустойчивость при подключённых нагрузках
- Как проверить работу на длинной линии?
- Проверка работы терминаторов.
- измерение ошибок CRC при передаче
- шумовое воздействие (индуктор, электромотор и т.п.)
- Как проверить устойчивость при нескольких узлах?
- подключение 5–32 узлов
- тест работы на разных расстояниях
- нагрузочное тестирование
- тест потери питания одного узла (не должен тянуть линию вниз)
- Способы тестирования линии:
SPI (Serial Peripheral Interface)
- Общие вопросы и логика работы
- Что такое SPI и где используется?
- Serial Peripheral Interface - синхронный последовательный интерфейс Master-Slave.
- DAC, ADC, Sensors, Display, EEPROM.
- Высокоскоростные периферийные устройства
- Главные преимущества: высокая скорость (до десятков МГц) и простота протокола.
- Какие сигналы содержит классический SPI?
- SCLK - тактовая линия
- MOSI - Master Out Slave In
- MISO - Master In Slave Out
- CS/SS - выбор ведомого (активный низкий)
- Какая максимальная частота SPI?
- Зависит от: конкретного устройства (обычно 4–60 МГц)
- длины трасс/кабеля
- Можно ли подключить несколько slave к одному SPI?
- Да - с общими MOSI/MISO/SCLK и индивидуальными CS.
- Что такое 3-wire и 4-wire SPI?
- 3-wire: SCLK + SDIO + CS (двунаправленный канал данных)
- 4-wire: SCLK + MOSI + MISO + CS
- Может ли SPI выполнять чтение и запись одновременно?
- Да, SPI - full duplex интерфейс:
- Что такое setup time и hold time для SPI?
- Setup time - время, за которое данные становятся стабильными до активного фронта SCLK
- Hold time - время, после которого данные должны оставаться стабильными после фронта
- Что такое QSPI и чем отличается от SPI?
- передаёт данные по 4 линиям вместо 1
- скорость выше в 4 раза
- используется для флэш-памяти и дисплеев
- требует другую инициализацию
- Что такое Dual SPI?
- Использует две линии данных (как половина QSPI).
- Что такое SPI и где используется?
- Тестирование.
- Что важно проверить при тестировании SPI устройства?
- частоту SCLK
- стабильность фронтов
- корректность работы CS
- правильность данных MISO/MOSI
- реакцию на нарушения таймингов
- Как тестировать SPI при помощи логического анализатора?
- Подключить MOSI/MISO/SCLK/CS
- Декодировать SPI
- Отследить значения регистров
- Проверить синхронизацию с фронтами
- Проверить, что CS не дребезжит
- Что делать, если устройство читает 0xFF или 0x00 вместо реальных данных?
- неверный CS
- неправильный CPHA/CPOL
- недостаточное время ответа slave
- слишком высокая частота SCLK
- Что произойдёт при слишком высокой частоте SPI?
- искажённые фронты
- пропадание отдельных бит
- CRC/verify ошибки в протоколе устройства
- «шумящие» осциллограммы на MISO
- Можно ли моделировать SPI трафик без железа?
- да, с использованием Python + spidev mock
- или с помощью FPGA/Pattern Generator
- или LA в режиме pattern generation
- Что важно проверить при тестировании SPI устройства?