Онлайн-симулятор шин SPI и I2C — это инструмент для визуального и пошагового анализа передачи данных между микроконтроллером и внешними устройствами по последовательным интерфейсам. Он предназначен для имитации и отладки командных последовательностей, чтения и записи в EEPROM, работы с регистрами и побитового протокольного взаимодействия.
👉 Можно выбрать тип шины (SPI или I2C), ввести передаваемые данные в шестнадцатеричном формате (например: A0 00 10), а также указать ожидаемый ответ от устройства (актуально для MISO в SPI или при чтении EEPROM).
При нажатии на кнопку «Старт передачи» запускается анимация, отображающая временные диаграммы сигналов шины:
- Для SPI: отображаются линии SS (выбор ведомого), CLK (тактовый сигнал), MOSI (данные от ведущего) и MISO (ответ от ведомого). Сигналы отображаются синхронно, по битам, с автоматическим расчётом тактовой последовательности. В журнале выводится, какие биты были переданы и приняты в каждом байте.
- Для I2C: рисуются линии SCL (такты) и SDA (данные). Имитация начинается с сигнала START, затем передаются байты с подтверждением (ACK) и завершается сигналом STOP. Каждый байт сопровождается подписью и фиксируется в логах в HEX и бинарном виде.
Если в переданных байтах обнаружено обращение к EEPROM, программа автоматически определяет тип микросхемы (например, 24C02, 24C16, 24C512) по длине команды. Распознаётся режим (чтение или запись), а также вычисляется страница и адрес смещения, которые отображаются в журнале событий.

Примеры команд:
- A0 00 42 — запись в EEPROM по адресу 0x00 значения 0x42
- A1 — чтение из EEPROM с текущего адреса
- 3F 12 00 — пользовательская команда SPI (например, чтение регистра 0x12)
- MISO: FF 00 77 — эмуляция ответа ведомого устройства в SPI
Журнал событий отображает каждый переданный байт, состояние линий, команду, подтверждение и ответы устройства. Это позволяет использовать симулятор для:
- обучения интерфейсам SPI и I2C,
- визуального анализа протокольных ошибок,
- подготовки и проверки команд EEPROM,
- разработки встроенного ПО и прошивок микроконтроллеров.
Справочная таблица: типы EEPROM, адреса и объёмы
| Модель | Объём | Адрес (I²C) | Формат адресации | Особенности |
|---|---|---|---|---|
| 24C01 | 1 кбит / 128 байт | 0xA0…0xAE | 1 байт адреса | Адрес блока задаётся в команде |
| 24C02 | 2 кбит / 256 байт | 0xA0…0xAE | 1 байт адреса | До 8 устройств на шине |
| 24C04 | 4 кбит / 512 байт | 0xA0…0xA6 | 1 байт адреса + выбор блока | 2 блока по 256 байт |
| 24C08 | 8 кбит / 1 Кбайт | 0xA0…0xA6 | 1 байт адреса + выбор блока | 4 блока по 256 байт |
| 24C16 | 16 кбит / 2 Кбайт | 0xA0…0xA6 | 1 байт адреса + выбор блока | 8 блоков по 256 байт |
| 24C32 | 32 кбит / 4 Кбайт | 0xA0…0xA2 | 2 байта адреса | Полная адресация, без блоков |
| 24C64 | 64 кбит / 8 Кбайт | 0xA0…0xA2 | 2 байта адреса | До 4 устройств на шине |
| 24C128 | 128 кбит / 16 Кбайт | 0xA0…0xA2 | 2 байта адреса | Память без разбивки на блоки |
| 24C256 | 256 кбит / 32 Кбайт | 0xA0…0xA2 | 2 байта адреса | Стандартный формат |
| 24C512 | 512 кбит / 64 Кбайт | 0xA0…0xA2 | 2 байта адреса | Поддержка больших массивов |
Структура адресации памяти EEPROM
Младшие модели (24C01…24C16) используют 1-байтную адресацию, и выбор внутренних блоков памяти происходит за счёт изменения I²C-адреса устройства (битов A2…A0 в команде). Каждая страница (обычно по 256 байт) отображается на отдельный подадрес. Например, 24C16 содержит 8 блоков по 256 байт, доступных по адресам 0xA0, 0xA2, …, 0xAE.
EEPROM 24C16 (2 КБ)
Общий объём: 2048 байт (8 × 256)
Адреса на шине: 0xA0, 0xA2, 0xA4, 0xA6, 0xA8, 0xAA, 0xAC, 0xAE
0xA0 → [0000…00FF]
0xA2 → [0100…01FF]
0xA4 → [0200…02FF]
0xA6 → [0300…03FF]
0xA8 → [0400…04FF]
0xAA → [0500…05FF]
0xAC → [0600…06FF]
0xAE → [0700…07FF]
EEPROM 24C256 (32 КБ)
Адресация: полноценная 2-байтная (0x0000…0x7FFF)
Базовые I²C-адреса: 0xA0, 0xA2, 0xA4
Команда: A0 (запись) или A1 (чтение)
→ MSB (старший байт адреса)
→ LSB (младший байт адреса)
→ Данные
В отличие от младших чипов, 24C256 и старше не делят память на страницы на уровне адресов, вся память линейная.
👉 Важно: При работе с моделями 24C32 и выше необходимо отправлять два байта адреса (MSB + LSB) перед чтением или записью. Эти чипы не используют адресацию по A2…A0 — биты устанавливаются аппаратно или игнорируются.
Симулятор работает полностью в браузере, не требует подключения оборудования и поддерживает покадровую анимацию логических уровней, что делает его удобным инструментом как для начинающих, так и для опытных инженеров.







