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

Wire.setClock()

Wire.setClock() задаёт тактовую частоту I²C-шины — например, 100000 для стандартного режима или 400000 для быстрого. Вызывайте после Wire.begin().

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

Описание

Wire.setClock() позволяет управлять скоростью I²C-шины. Стандартная частота библиотеки Wire — 100 кГц, однако большинство современных датчиков и дисплеев поддерживают режим 400 кГц, а некоторые контроллеры допускают ещё более высокие скорости.

Важно понимать: частота шины — это общая настройка для всех устройств, подключённых к ней одновременно. Если хотя бы один модуль рассчитан только на 100 кГц, повышать скорость до 400 кГц нельзя — обмен станет ненадёжным или вовсе прекратится.

Функция входит в состав библиотеки Wire.

Синтаксис

Wire.setClock(clockFrequency)

Параметры

  • clockFrequency — частота I²C-шины в герцах. Тип данных: uint32_t.

Наиболее распространённые значения:

ЗначениеРежим
10000низкая скорость, 10 кГц
100000стандартный режим, 100 кГц
400000fast mode, 400 кГц
1000000fast mode plus, 1 МГц
3400000high speed mode, 3,4 МГц

Возвращает

Ничего.

Пример кода

В примере шина Wire переключается на 400 кГц сразу после инициализации:

void setup() {
  Wire.begin();
  Wire.setClock(400000);
}

void loop() {
}

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

  • Ускорение опроса датчиков — если и плата, и датчик поддерживают 400 кГц, частота обмена заметно возрастает без изменений в логике скетча.
  • Дисплеи с частым обновлением — повышенная скорость I²C снижает задержки при передаче графических данных.
  • Длинные шлейфы и нестабильная шина — иногда помогает снижение частоты до 50 кГц или даже 10 кГц: сигнал становится устойчивее.
  • Несколько устройств на одной шинеWire.setClock() позволяет выбрать скорость, которую гарантированно поддерживают все подключённые модули.

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

  • Вызывайте после Wire.begin(). Функция настраивает уже инициализированный интерфейс, поэтому вызов до begin() не имеет смысла.
  • Проверяйте datasheet периферии. Максимальная частота — это не только возможность платы, но и ограничение каждого конкретного устройства на шине.
  • Подтягивающие резисторы имеют значение. На 400 кГц и выше слишком слабая подтяжка, большая ёмкость шины или длинные провода быстро приводят к сбоям. Стандартные значения — 4,7 кОм для 100 кГц и 2,2 кОм для 400 кГц.
  • Не все платы поддерживают все режимы. Реальный диапазон частот зависит от микроконтроллера и версии библиотеки Wire.
  • При нестабильной связи снижайте частоту первым делом. На макетной плате с длинными проводами 100 кГц часто надёжнее, чем 400 кГц.

Примечания и предупреждения

Режимы 1 МГц и 3,4 МГц поддерживаются далеко не всеми платами и периферийными устройствами. Если после повышения частоты обмен перестал работать, вернитесь к 100000, проверьте схему, подтяжки и документацию на все подключённые модули.