Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Модуль 8.1 — Экосистема встраиваемого Rust

Слайды

Упражнение 8.1.1: ID LSM303AGR

Используйте новые знания, чтобы запустить первое приложение и прочитать ID акселерометра LSM303AGR. Связаться с LSM303AGR можно по I2C, который есть на плате micro:bit. Обратите внимание, что nRF52833 поддерживает I2C через периферийное устройство TWIM (Two-Wire Interface Master).

Для начала настроим периферию I2C на нашей отладочной плате и прочитаем регистр ID акселерометра LSM303AGR. Отправная точка находится в файле exercises/8-embedded/1-embedded-ecosystem/src/main.rs в репозитории.

Попробуйте запустить существующий проект, а затем реализуйте функциональность в соответствии с комментариями в коде.

Чтобы работать с проектом, выполните из его папки в терминале:

  • cargo build: собирает проект;
  • cargo run: собирает проект, прошивает его на устройство и выводит логи в терминал (использует инструмент probe-rs run).

В обоих случаях можно добавить флаг --release, чтобы включить оптимизации.

Несколько подсказок, которые помогут начать
  • Документацию по HAL можно открыть командой cargo doc --open. Она собирается для точного чипа и версии, которые мы используем. Обычно документацию ищут на docs.rs, но там может открыться HAL для другого варианта nRF.
  • Как настроить I2C для nRF52833: демонстрационный пример TWIM из embassy-nrf.
  • Даташит LSM303AGR: https://www.st.com/resource/en/datasheet/lsm303agr.pdf. ID акселерометра хранится в регистре WHO_AM_I_A по адресу 0x0F. Для обращения к самому акселерометру нужен адрес 0x19.
  • Используйте метод Twim::blocking_write_read: сначала он записывает адрес устройства, затем адрес регистра, а затем читает содержимое в буфер. (Подсказка: поискать метод можно в сгенерированной документации.)