Главная chevron_right Функции chevron_right Связь chevron_right SPI.begin()

SPI.begin()

SPI.begin() инициализирует шину SPI: настраивает аппаратные контакты и переводит плату в режим контроллера SPI — вызывайте один раз в setup() перед любой работой с периферией.

Полная статья

Описание

begin() — первое, что нужно вызвать перед любой работой с устройствами на шине SPI. Функция автоматически настраивает аппаратные контакты: SCK и MOSI переводятся в режим выхода и устанавливаются в низкий уровень, SS — в режим выхода с высоким уровнем (устройство на шине не выбрано), MISO — в режим входа. После этого плата берёт на себя роль контроллера SPI и готова обмениваться данными с периферийными устройствами.

Важно понимать, что begin() не выбирает конкретное устройство и не задаёт параметры передачи — скорость, порядок бит, режим тактирования. Эти настройки указываются отдельно, через SPISettings, при каждом обращении к периферии.

Эта функция является частью библиотеки SPI. Подробности см. в разделе SPI.

Синтаксис

SPI.begin()

Параметры

Нет.

Возвращает

Ничего.

Где применяется

  • Инициализация любого SPI-устройства: дисплеев, флеш-памяти, АЦП, датчиков с SPI-интерфейсом.
  • Начало работы с несколькими периферийными устройствами на одной шине — у каждого свой вывод SS, но SPI.begin() вызывается один раз.
  • Запуск связи с SD-картой через SPI-библиотеку.
  • Любой скетч, использующий аппаратный SPI-интерфейс платы.

Практические замечания

  • Вызывайте begin() в setup() до любых обращений к SPI-устройствам — иначе контакты не будут настроены и данные не пройдут.
  • После begin() вывод SS находится в высоком уровне: периферийное устройство не выбрано. Перед передачей данных нужно самостоятельно опустить SS нужного устройства в низкий уровень, а после завершения — вернуть обратно.
  • Если вы управляете выводом SS вручную через digitalWrite(), убедитесь, что он объявлен как OUTPUTbegin() настраивает только аппаратный SS-контакт платы, но не произвольные цифровые выводы, которые вы используете для выбора устройств.
  • Параметры передачи (скорость, режим, порядок бит) задаются через SPI.beginTransaction(SPISettings(...)) непосредственно перед отправкой данных.
  • Повторный вызов begin() в уже работающем скетче не вызывает ошибок, но и смысла не имеет — достаточно одного вызова при старте.