Ошибка Invalid adxl345 id: got 0 vs e5 при выполнении команд ACCELEROMETER_QUERY или MEASURE_AXES_NOISE в Klipper означает, что микроконтроллер запросил у акселерометра ADXL345 идентификатор чипа, а в ответ получил нули вместо ожидаемого значения 0xE5. Значение 0xE5 — это «зашитый» производителем код устройства, который датчик обязан возвращать по регистру DEVID. Полученный 0 говорит о том, что обмена данными по шине SPI фактически не произошло: линия MISO «молчит» и притянута к нулю.

Проще говоря, Klipper не видит датчик вообще. Причина почти всегда аппаратная: обрыв или перепутанные провода, отсутствие питания модуля, неверно указанные пины в конфигурации или неисправный сам акселерометр. Разберём диагностику по шагам — от самых частых причин к редким.

Что означает ошибка и как работает проверка ID

При инициализации и при каждом запросе Klipper читает регистр DEVID акселерометра по интерфейсу SPI. Исправный ADXL345 всегда отвечает байтом 0xE5 — это аппаратная константа, описанная в даташите Analog Devices. Если ответ отличается, хост останавливает работу и выводит сообщение вида got 0 vs e5.

Важно различать два типа «неправильных» ответов:

  • 🔌 got 0 — на линии MISO постоянный низкий уровень. Типично при обрыве провода MISO, отсутствии питания датчика или неправильном пине CS.
  • 📶 got ff — линия MISO «висит» в высоком уровне. Чаще указывает на обрыв CS или на то, что датчик вообще не подключён, а линия подтянута резистором.
  • 🎲 Случайное значение (например, got 5a) — данные искажены помехами: слишком длинные провода, отсутствие скрутки, наводки от моторов.
  • ✅ e5 — корректный ответ, датчик опознан и готов к работе.
💡

Значение 0xE5 — это аппаратный идентификатор ADXL345. Ответ «0» означает полное отсутствие связи по SPI, а не программный сбой: ищите проблему в проводке, питании или пинах.