Embedded HandbookПриложения
Все разделы › XVIII. ESP32: второй микроконтроллер
ESP32, STM32F103, STM32F407 · уровень средний · 7 мин чтения
Открыть в интерактивном справочнике

160. Длинные линии на плате и в проводах: волновое сопротивление, отражения, согласование, фронт I²C

Вывод ESP32 или STM32 переключается за единицы наносекунд, даже если программа меняет его раз в секунду. Для такого фронта дорожка в несколько сантиметров или провод к датчику — уже не «проводник», а линия, по которой сигнал бежит волной и отражается от конца. Отсюда звон, ложные фронты на тактовых входах и шина I²C, которая работает на столе и сбоит в корпусе.

Здесь расчёт микрополосковой линии на FR-4 (формула IPC-2141, microstrip.py) и две модели ngspice 39 в образе stm-lab:1 (_verify/esp160/): отражения в линии без согласования и с ним, и фронт шины I²C через подтягивающий резистор. Числа моделей — идеализация: реальные дорожки, разъёмы и входы микросхем дадут другие, но порядок и выводы те же.

Как это называется в документации

Оригинал Перевод
transmission line длинная линия: проводник, по которому сигнал идёт волной
characteristic impedance (Z0) волновое сопротивление
propagation delay задержка распространения
reflection, ringing, overshoot отражение, звон, выброс
series / parallel termination последовательное и параллельное согласование
microstrip микрополосковая линия: дорожка над сплошным слоем земли
effective permittivity эффективная диэлектрическая проницаемость
rise time время нарастания фронта
pull-up resistor, bus capacitance подтягивающий резистор, ёмкость шины

160.1 Когда дорожка становится линией

Линия 50 Ом от вывода с выходным сопротивлением 25 Ом: без согласования волна удваивается на открытом конце и звенит, параллельный резистор 50 Ом на конце гасит отражение, последовательный 25 Ом у источника даёт чистый фронт на приёмнике

Сигнал по дорожке над слоем земли идёт медленнее, чем в вакууме: часть поля проходит в стеклотекстолите. Для линии 50 Ом на FR-4 толщиной 1,5 мм эффективная проницаемость 3,385, скорость 162,9 мм/нс, задержка 6,14 пс на миллиметр.

Линию считают длинной, когда задержка распространения больше примерно шестой части фронта. При фронте 1 нс это 27 мм дорожки, при 5 нс — 136 мм, при 10 нс — 272 мм. Фронт вывода микроконтроллера — единицы наносекунд, поэтому провод к датчику на полметра — длинная линия всегда, а дорожка на плате — начиная с нескольких сантиметров.


160.2 Волновое сопротивление микрополоска

Дорожка над сплошным слоем земли — микрополосок. Его волновое сопротивление зависит от ширины дорожки w, толщины диэлектрика h и проницаемости, а не от длины. Формула IPC-2141 для FR-4 с медью 35 мкм:

Толщина до земли Ширина дорожки Z0
1,5 мм 0,3 мм 124,7 Ом
1,5 мм 1,0 мм 85,0 Ом
1,5 мм 2,729 мм 50 Ом
0,2 мм 0,326 мм 50 Ом

Волновое сопротивление микрополоска на FR-4 против ширины дорожки для двух толщин диэлектрика: при 1,5 мм до земли 0,3 мм дают 124,7 Ом, 1 мм — 85 Ом и только 2,729 мм — 50 Ом; при 0,2 мм 50 Ом получаются уже на 0,326 мм; формула действует при отношении ширины к толщине от 0,1 до 2

На двухслойной плате толщиной 1,5 мм дорожка на 50 Ом — почти 3 мм шириной, это антенный фидер, а не сигнальная линия. Уже получается копланарная линия: дорожка с зазором к залитой земле по бокам, земля снизу, ряды переходных отверстий вдоль. На той же плате 1,5 мм дорожка 1,2 мм с зазором 0,2 мм даёт около 50 Ом — так ведут антенный вывод ESP32 к разъёму. Для множества сигнальных линий заливка с зазорами неудобна, поэтому платы с быстрыми сигналами делают четырёхслойными: до ближнего слоя земли 0,2 мм, и 50 Ом получается при ширине 0,326 мм. Обычная сигнальная дорожка 0,3 мм на двухслойной плате — около 125 Ом, и согласовывать её приходится на неизвестное точно сопротивление.


160.3 Отражения: линия без согласования

Модель: вывод с выходным сопротивлением 25 Ом даёт фронт 3,3 В за 1 нс в линию 50 Ом с задержкой 5 нс (около 80 см дорожки); на конце — вход микросхемы, почти разрыв. Три варианта:

case=1 vmax_end=4.39972 vfinal=3.42208 vmax_near=2.19997
case=2 vmax_end=2.19997 vfinal=2.19997 vmax_near=2.19997
case=3 vmax_end=3.29983 vfinal=3.29983 vmax_near=1.64998

Без согласования (case=1) в линию уходит волна 3,3 × 50 / 75 = 2,2 В — делитель из выходного сопротивления и волнового. На открытом конце она отражается целиком и удваивается: на входе приёмника 4,40 В при питании 3,3 В. Отражение возвращается к источнику, снова отражается от несогласованных 25 Ом — и линия звенит: через 29 нс на конце всё ещё 3,42 В. Входу на 3,3 В такой выброс ведёт через защитные диоды ток в питание, а звон вокруг порога даёт лишние фронты.


160.4 Согласование: параллельное и последовательное

Последовательное согласование работает только для одного приёмника на конце линии: в середине линии уровень какое-то время равен половине.


160.5 I²C: фронт определяется резистором и ёмкостью

У I²C нет резкого фронта вверх: выход с открытым стоком отпускает линию, и её поднимает подтягивающий резистор, заряжая ёмкость проводов и входов. Время нарастания от 30 до 70 % — как считает спецификация I²C:

Ёмкость шины 1,5 кОм 4,7 кОм 10 кОм
100 пФ 127 нс 398 нс 848 нс
400 пФ 508 нс 1593 нс 3389 нс

Время растёт ровно пропорционально R·C: 4,7 кОм × 100 пФ = 470 нс, и фронт 398 нс — это 470 × ln(7/3). Предел фронта — 1000 нс для стандартного режима и 300 нс для быстрого (раздел 17). Отсюда картина:

Каждый метр провода и каждое устройство добавляют ёмкость. Длинная шина I²C чинится не «уменьшением резистора до упора»: у выхода есть предел тока в низком уровне — по спецификации I²C он обязан держать 0,4 В при 3 мА, отсюда R ≥ (3,3 − 0,4) / 3 мА ≈ 0,97 кОм, и ниже примерно 1 кОм подтяжку не опускают (раздел 17). Для метров провода берут усилители шины I²C или другой интерфейс.


160.6 Грабли

Симптом Причина
тактовый вход ловит лишние фронты звон несогласованной линии проходит через порог
на входе выше питания, микросхема греется отражение на открытом конце удваивает волну
на конце параллельного резистора 50 Ом логика не читает единицу делитель с выходным сопротивлением вывода: уровень ниже порога
последовательный резистор, а приёмник в середине линии сбоит в середине линии уровень какое-то время равен половине
I²C работает на столе, сбоит в корпусе на проводах ёмкость проводов затягивает фронт за предел режима
быстрый режим I²C не работает с модулями на 10 кОм фронт при таких подтяжках в разы длиннее 300 нс
дорожка «на 50 Ом» шириной 0,3 мм на двухслойной плате до земли 1,5 мм — это около 125 Ом

160.7 Итоги

Дальше: раздел 161 «Питание и нагрузки вокруг ESP32: стабилизатор, пики Wi-Fi, ключи, реле и выбросы».

Открыть в интерактивном справочнике