Почему логический анализатор показывает ложные импульсы на I2C?
Обновлено Редакция GAW
Линии I2C — открытый сток: в ноль их тянет транзистор быстро, а в единицу поднимает только подтягивающий резистор, заряжая ёмкость шины. Фронт получается экспоненциальным и медленным. У логического анализатора на входе цифровой буфер с двумя порогами: у Saleae Logic 8 ниже 0,6 В — ноль, выше 1,2 В — единица, а между ними поведение не определено. Если фронт идёт через эту зону долго, анализатор успевает сделать там несколько выборок, и шум даёт лишние переходы.
Сколько фронт находится в неопределённой зоне
Напряжение на линии растёт как . Время прохода от 0,6 до 1,2 В при 3,3 В:
| Подтяжка и ёмкость | RC | Время в зоне 0,6–1,2 В | Выборок при 25 Мвыб/с |
|---|---|---|---|
| 10 кОм, 200 пФ | 2 мкс | около 500 нс | около 12 |
| 4,7 кОм, 200 пФ | 0,94 мкс | около 240 нс | около 6 |
| 2,2 кОм, 100 пФ | 0,22 мкс | около 55 нс | 1–2 |
(наш расчёт). Чем больше выборок попадает в неопределённую зону, тем вероятнее ложный импульс, и декодер I²C сбивается.
Что делать
- Включить фильтр глитчей в программе анализатора — так советует Saleae для медленных фронтов I²C.
- Проверить подтяжку. По UM10204 время нарастания не должно превышать 1000 нс на 100 кГц и 300 нс на 400 кГц. Подходящий резистор считает калькулятор подтяжки I2C, а что такое время нарастания, объясняет словарь.
- Не путать с реальной проблемой. Входы микросхем I²C имеют фильтр коротких выбросов, поэтому ложный импульс на анализаторе не всегда виден устройству. Если сомневаетесь, посмотрите фронт осциллографом.
Выбор частоты выборки и порогов описан в статье «Логический анализатор», сам протокол — в статье «I2C».
Похожие вопросы
Какую длительность фильтра глитчей выбрать?
Меньше самого короткого настоящего импульса, но больше ложных. Для I2C на 100 кГц полупериод SCL — 5 мкс, а ложные переходы длятся доли микросекунды, так что фильтр в сотни наносекунд их убирает, не трогая данные.
Значит ли ложный импульс на анализаторе, что шина работает плохо?
Не обязательно: по UM10204 у входов устройств Fast-mode есть триггер Шмитта и подавление коротких выбросов, и они медленный фронт видят как один переход. Но если время нарастания больше нормы, шину нужно исправлять — это проверяют осциллографом.
Поможет ли выбрать порог 3,3 В вместо 1,8 В на Logic Pro?
Обычно да. У Logic Pro входы на компараторах с одним порогом, без широкой неопределённой зоны, как у Logic 8, а порог 1,65 В в середине размаха далеко и от шума у нуля, и от шума у питания. Крутизна RC-фронта при этом не больше — она наибольшая в начале фронта, — поэтому на очень медленных фронтах фильтр глитчей всё равно полезен.
Источники
- Saleae Support. Supported Voltages — у Logic 8 цифровые входы между 0,6 и 1,2 В ведут себя неопределённо; для медленных фронтов, например I2C с открытым стоком, включать программный фильтр глитчей; у Logic Pro — компараторы с порогами 0,6, 0,9 и 1,65 В, точность ±15 %; защита ±25 В
- Saleae. Logic 8, Technical Data Sheet (DOC_620-00011, V20260521) — цифровая выборка до 100 Мвыб/с на трёх каналах, 25 Мвыб/с на восьми; порог VIL 0,6 В, VIH 1,2 В; цифровые сигналы выбирать не менее чем в 4 раза чаще высшей частоты
- NXP Semiconductors. UM10204: I2C-bus specification and user manual, Rev. 7.0, 1 October 2021 — табл. 11: время нарастания tr не больше 1000 нс в Standard-mode и 300 нс в Fast-mode, ёмкость шины до 400 пФ; разд. 5.1: у входов Fast-mode — подавление выбросов и триггер Шмитта; фронт линии с открытым стоком задаёт подтягивающий резистор и ёмкость шины
Нашли ошибку?
Смотрите также
- Логический анализаторВыборка ≥ 4× сигнала, пороги, ±25 В, общая земля с ПК, Saleae, sigrok, FX2
- Подтягивающие резисторы I²CДиапазон Rp по напряжению, скорости и ёмкости шины
- Время нарастания (rise time)Длительность фронта между двумя порогами
- Фильтр выбросов I²C (tSP)Входной фильтр SDA и SCL, подавляющий импульсы короче 50 нс
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек