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 кГц |
400000 | fast mode, 400 кГц |
1000000 | fast mode plus, 1 МГц |
3400000 | high 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, проверьте схему, подтяжки и документацию на все подключённые модули.