Наблюдение за шиной I2C через осциллограф

Работа шины I2C начинается с формирования стартового бита: при высоком уровне SCL, линия SDA переходит в низкое состояние. Затем передается 7-битный адрес устройства и бит R/W (0 – запись, 1 – чтение). Устройство, обнаружив свой адрес, подтверждает это, опуская SDA на 9-м такте. Завершается передача стоповым битом: при высоком SCL, SDA переходит в высокое состояние.
Наблюдение за шиной  I2C через осциллограф
Изображение носит иллюстративный характер

Функция HAL_I2C_Master_Transmit сначала отправляет адрес устройства в режиме записи (R/W = 0), затем данные. При обращении к EEPROM, первый байт данных устанавливает адрес внутри EEPROM, а последующие байты записываются в EEPROM. После каждого байта, устройство подтверждает прием.

Функция HAL_I2C_Master_Receive сначала отправляет адрес устройства в режиме чтения (R/W = 1), затем начинает принимать данные от устройства. После получения требуемого количества байт, master прекращает их прием, отправляя на 9-м такте единицу, и генерирует стоповый бит. Это как бы запрос на чтение: сначала записываем, откуда читать, а потом читаем.

При неверном адресе, устройство не подтверждает передачу (SDA не опускается на 9-м такте). Мастер, обнаружив отсутствие подтверждения, завершает передачу стоповым битом. Понимание этих процессов и визуальный контроль с помощью осциллографа важны для отладки и диагностики проблем.


Новое на сайте

20900Искусственный интеллект стирает следы фишинга 20899Что может произойти, если злоумышленник доберётся до секретов Railway? 20898Ошибка Brotli открыла путь к RCE в Node.js, Bun и других системах 20897Миллионы компьютеров получили обновление, выключившее опасный Popcorn Time Updater 20896Как Bronze Sandcastle прячет бэкдоры в доверенных приложениях? 20895Вредоносный релиз LiteLLM мог раскрыть токены GitHub 20894Шесть уязвимостей под угрозой эксплуатации: CISA установила сроки обновления 20893Ошибка с QPACK: как небольшой запрос перегружает HTTP/3-сервер 20892Кто получил PHP2Shell до официального раскрытия уязвимостей? 20891Как ошибка в FortiSIEM открывает путь к удалённому запуску кода? 20890Как подключение Gmail к Gemini может повлиять на рекламу Google 20889Как ARTEX ускорил атаку через ConnectWise? 20888Кто следит за ИИ-агентом с доступом к корпоративным паролям? 20887Почему eMudhra уходит с мирового рынка SSL/TLS-сертификатов? 20886PHP2Shell: как пережить часы до исправления?
Ссылка