STM32duino & SPI
Подсоедините датчик к отладочной плате по следующей схеме:
Теперь откроем тестовый скетч:
Нажмите «Файл», затем «Примеры > Adafruit BMP280 Library > bmp280test».
Чтобы выбрать интерфейс SPI и настроить использование правильных ножек микроконтроллера, найдите следующие строки:
и приведите их к виду:
Обратите внимание - мы передаем библиотеке BMP280 только имя ножки PA4, с которой связан сигнал ChipSelect. Все остальные сигналы - MOSI, MISO, SCK - по умолчанию связаны с ножками аппаратного блока SPI ( об этом говорит комментарий « // hardware SPI » ). В случае Arduino Uno это ножки D11, D12, D13 соответственно, в случае VB32F4V50 - это PA7, PA6, PA5, которые связаны с периферийным блоком SPI1. Использование аппаратного SPI практически всегда предпочтительно, поскольку освобождает ядро микроконтроллера от необходимости «вручную» выводить на ножки необходимые сигналы, экономя большУю часть процессорного времени.
Мы готовы загружать скетч! Нажмите кнопку «загрузить», дождитесь окончания компиляции и загрузки, откройте Монитор порта. В нем вы должны увидеть примерно следующее:
Если датчик не присылает данные, или присылает явно не корректные - например, показывает высоту 3 км, или температуру воздуха -30 *С, попробуйте предпринять следующие шаги:
Вызовите из setup() функцию SPI.setClockDivider(divider):
Эта функция задает величину делителя тактовой частоты SPI - интерфейса. Поэкспериментируйте с этим параметром, пока не добьетесь приема правильных данных.
Иногда предыдущий совет не приносит результата, в этом случае можно попробовать изменить параметры компиляции скетча:
Нажмите «Инструменты > Optimize: ... > Debug (-g)»
Если и это не помогает - хреново, чо.
Last updated