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

SPI.setClockDivider()

SPI.setClockDivider() задаёт делитель тактового сигнала шины SPI относительно системной частоты, но считается устаревшей — в новых проектах используйте SPISettings вместе с SPI.beginTransaction().

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

Описание

setClockDivider() управляет тактовой частотой шины SPI, деля системную частоту на выбранный коэффициент. По умолчанию используется SPI_CLOCK_DIV4, то есть тактовый сигнал SPI составляет четверть системной частоты — 4 МГц на платах с тактовой частотой 16 МГц.

На платах AVR доступны фиксированные делители: 2, 4, 8, 16, 32, 64 и 128. На Arduino Due делитель задаётся числом от 1 до 255, а значение по умолчанию равно 21, что также соответствует примерно 4 МГц.

Функция входит в состав библиотеки SPI. Подробнее — в разделе SPI.

Внимание: функция устарела. Не используйте её в новых проектах. Для настройки параметров шины SPI применяйте SPISettings совместно с SPI.beginTransaction().

Синтаксис

  • SPI.setClockDivider(divider)
  • SPI.setClockDivider(chipSelectPin, divider) (только для Arduino Due)

Параметры

  • divider — коэффициент деления тактовой частоты. На платах AVR допустимы константы: SPI_CLOCK_DIV2, SPI_CLOCK_DIV4, SPI_CLOCK_DIV8, SPI_CLOCK_DIV16, SPI_CLOCK_DIV32, SPI_CLOCK_DIV64, SPI_CLOCK_DIV128. На Arduino Due — целое число от 1 до 255.
  • chipSelectPin — номер вывода выбора ведомого устройства (chip select); используется только на Arduino Due.

Возвращает

Ничего.

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

  • Чем выше делитель, тем ниже тактовая частота SPI и тем медленнее передаются данные. Это может быть нужно при работе с медленными или чувствительными к частоте периферийными устройствами.
  • Слишком высокая тактовая частота — частая причина потери данных или некорректной работы устройства. Если обмен ведётся нестабильно, попробуйте увеличить делитель.
  • На платах AVR нельзя задать произвольное значение делителя: используются только предопределённые константы SPI_CLOCK_DIV2SPI_CLOCK_DIV128.
  • На Arduino Due каждое периферийное устройство может иметь собственный делитель, передаваемый через параметр chipSelectPin.
  • В современном коде вместо setClockDivider() используйте SPISettings вместе с SPI.beginTransaction(), где тактовая частота задаётся в герцах напрямую, а не через делитель.