Как проверить осциллографом, на какой скорости работает I2C?
Обновлено Редакция GAW
Частоту I2C задаёт ведущий через линию SCL, и осциллограф показывает её напрямую. Но для работы шины важна не только частота: режимы скорости отличаются требованиями к длительности уровней и к фронтам, которые зависят от подтяжек и ёмкости шины.
Что мерить и с чем сравнивать
Подключите щуп к SCL, землю — к земле рядом с устройством, и запустите обмен. Мерьте по уровням 30 и 70 % от напряжения питания шины, как задаёт UM10204.
| Параметр (табл. 11 UM10204) | Standard-mode | Fast-mode | Fast-mode Plus |
|---|---|---|---|
| Частота SCL, не больше | 100 кГц | 400 кГц | 1 МГц |
| Низкий уровень SCL, не меньше | 4,7 мкс | 1,3 мкс | 0,5 мкс |
| Высокий уровень SCL, не меньше | 4,0 мкс | 0,6 мкс | 0,26 мкс |
| Время нарастания, не больше | 1000 нс | 300 нс | 120 нс |
| Ёмкость линии, не больше | 400 пФ | 400 пФ | 550 пФ |
Период — величина, обратная частоте: 10 мкс на 100 кГц, 2,5 мкс на 400 кГц.
Если фронт слишком медленный
Время нарастания задают подтяжка и ёмкость шины. TI в SLVA689A даёт формулу для интервала от 30 до 70 %:
Наш расчёт для подтяжки 4,7 кОм и ёмкости 200 пФ: tr ≈ 0,8 мкс. Для 100 кГц это в пределах 1000 нс, а для 400 кГц — почти втрое больше допустимых 300 нс. TI для того же случая получает наибольшую подтяжку 1,77 кОм. Подходящий резистор для своей шины считает калькулятор подтягивающих резисторов, а почему длинный провод работает на 100 кГц и не работает на 400, разобрано в отдельном ответе.
Если низкий уровень SCL то и дело удлиняется, это не обязательно ошибка — так ведомое устройство растягивает такт, пока готовит данные.
Похожие вопросы
Почему частота SCL получается ниже заданной в программе?
Ведомое устройство может растягивать такт — держать SCL в нуле, пока не готово. Тогда низкий уровень длиннее, и период больше. Если же частота ниже из-за растянутых фронтов, это сигнал уменьшить подтяжку или ёмкость шины.
Каким щупом смотреть I2C?
Щупом 10X с коротким проводом земли, присоединённым к земле рядом с измеряемым устройством. У щупа 1X ёмкость больше, и он сам затягивает фронты на шине с подтяжками в несколько килоом.
Можно ли так же проверить SDA?
Да, но частоту задаёт только SCL: SDA меняется, когда SCL в нуле, и должна быть стабильной, пока SCL в единице. На SDA смотрят то же время нарастания и уровень нуля — он должен опускаться ниже 0,3 питания.
Источники
- NXP. UM10204 I2C-bus specification and user manual (Rev. 7.0, 1 October 2021) — табл. 11 — характеристики линий SDA и SCL для Standard-mode, Fast-mode и Fast-mode Plus: fSCL до 100, 400 и 1000 кГц; tLOW не меньше 4,7, 1,3 и 0,5 мкс; tHIGH не меньше 4,0, 0,6 и 0,26 мкс; tr не больше 1000, 300 и 120 нс; Cb не больше 400, 400 и 550 пФ; уровни отсчёта VIH(min) = 0,7 VDD и VIL(max) = 0,3 VDD; разд. 3.1.7–3.1.9 — синхронизация и растягивание такта
- Texas Instruments. SLVA689A: I2C Bus Pullup Resistor Calculation (revised October 2026) — ур. 5 — время нарастания от 0,3 до 0,7 VCC: tr = 0,8473 · Rp · Cb; ур. 1 — Rp(min) = (VCC − VOL(max)) / IOL; ур. 7 — пример: для Fast-mode при Cb = 200 пФ Rp(max) = 1,77 кОм; ур. 8 — Rp(min) при 3,3 В около 967 Ом
- Tektronix. ABCs of Probes, Primer, 60W-6053-15 (03/2021) — таблица щупов: P6101B 1X — 1 МОм, 100 пФ; P6109B 10X — 10 МОм, 13 пФ; длинный провод земли щупа добавляет индуктивность и звон на фронтах
Нашли ошибку?
Смотрите также
- Скоростные режимы I²CРежимы шины I²C от 100 кбит/с до 5 Мбит/с и их требования к фронтам и ёмкости
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины
- Почему I2C работает на 100 кГц, но не на 400 кГц?Фронт обязан быть короче 300 нс — нужна подтяжка меньше
- Растягивание такта I²CВедомое держит SCL в нуле: зачем, ограничения SMBus, совместимость
- Ёмкость шины I²C (Cb)Ёмкость линии I²C: 400 пФ, подтяжка и скорость