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 Ом на 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 Ом |
На двухслойной плате толщиной 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 Согласование: параллельное и последовательное
- Параллельное — резистор 50 Ом на конце линии (
case=2). Отражения нет, на приёмнике ровно 2,2 В — но это и есть беда. В единице делитель 25 + 50 Ом берёт 3,3 / 75 = 44 мА — больше, чем разрешено выводу (40 мА у ESP32 на максимальной силе выхода, раздел 153.2; 20–25 мА у STM32, раздел 62), а 2,2 В ниже порога единицы: 2,475 В у ESP32 и 2,31 В у STM32 (раздел 59.4). От вывода микроконтроллера так не согласуют; если отражение на конце всё же надо погасить, 50 Ом ставят последовательно с конденсатором — на фронте цепь согласует линию, а постоянного тока нет. Само параллельное согласование — для линий с разностными приёмниками и шин вроде RS-485, где резисторы на концах — часть стандарта. - Последовательное — резистор у источника, чтобы вместе с выходом вывода получилось
волновое сопротивление: 25 + 25 = 50 Ом (
case=3). В линию уходит половина — 1,65 В, на открытом конце она удваивается ровно до 3,30 В и дальше не отражается: источник согласован. Постоянного тока нет, резистор один. Для тактовых сигналов и SPI от микроконтроллера это обычное решение: небольшой резистор прямо у вывода, подобранный так, чтобы вместе с выходным сопротивлением вывода получилось волновое сопротивление линии.
Последовательное согласование работает только для одного приёмника на конце линии: в середине линии уровень какое-то время равен половине.
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). Отсюда картина:
- 4,7 кОм и 100 пФ — стандартный режим проходит с запасом, быстрый (300 нс) — уже нет;
- быстрый режим при 100 пФ проходит с подтяжкой до 3,5 кОм — 300 нс / (0,847 · 100 пФ); например, 2,2 кОм дают 186 нс;
- 400 пФ — предел ёмкости шины — с 10 кОм не проходит даже стандартный режим.
Каждый метр провода и каждое устройство добавляют ёмкость. Длинная шина 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 Итоги
- FR-4, 1,5 мм: эффективная проницаемость 3,385, 6,14 пс/мм; длинная линия при фронте 1 нс — от 27 мм.
- Микрополосок 50 Ом: 2,729 мм на 1,5 мм диэлектрика, 0,326 мм на 0,2 мм; дорожка 0,3 мм над 1,5 мм — 124,7 Ом.
- Без согласования: волна 2,2 В удваивается до 4,40 В на конце и звенит.
- Параллельно 50 Ом — без отражений, но 2,2 В и постоянный ток; последовательно 25 Ом — 1,65 В в линию и чистые 3,30 В на конце.
- I²C: фронт ≈ R·C·ln(7/3); при 100 пФ — 127 / 398 / 848 нс для 1,5 / 4,7 / 10 кОм; предел 1000 нс стандартного и 300 нс быстрого режима; быстрый режим при 100 пФ — подтяжка от 1 до 3,5 кОм.
Дальше: раздел 161 «Питание и нагрузки вокруг ESP32: стабилизатор, пики Wi-Fi, ключи, реле и выбросы».