Нужны ли подтягивающие резисторы на линиях SWD?
Обновлено Редакция GAW
SWD — двухпроводной интерфейс: SWCLK — такт от отладчика, SWDIO — данные в обе стороны. Когда направление передачи меняется, по спецификации Arm линию SWDIO в такт смены направления не ведёт никто, и её уровень держит только подтяжка. Она же не даёт линии плавать, когда отладчик не подключён.
Что требуют документы
| Документ | SWDIO | SWCLK |
|---|---|---|
| Arm IHI 0031G | подтяжка около 100 кОм к питанию на стороне кристалла | не нормирует |
| ST RM0090 (STM32F4) | встроенная подтяжка к питанию | встроенная подтяжка к земле |
ST пишет прямо: встроенные подтяжки избавляют от необходимости ставить внешние резисторы. В разделе о протоколе SWD тот же справочник повторяет требование Arm о подтяжке 100 кОм — у STM32F4 её роль выполняет встроенная. Для других кристаллов смотрите их документацию: требование Arm адресовано разработчику микросхемы, а будет ли резистор внутри, решает производитель.
Почему подтяжка высокоомная
Arm объясняет: подтяжка лишь удерживает состояние линии и должна быть достаточно слабой, чтобы ток был мал, когда отладчик держит линию в нуле. При 3,3 В:
(наш расчёт). Для устройства на батарейке, которое долго висит на отладчике в режиме низкого потребления, Arm советует, чтобы отладчик держал линию в единице. Зато слабая подтяжка медленно возвращает линию из нуля — за много тактов, поэтому перед тем как отпустить линию, отладчик сам выставляет единицу.
Если отладчик не подключается, дело редко в подтяжках — порядок проверки в ответе «Что делать, если ST-LINK пишет No target connected». Протокол и порты отладки описаны в статье «JTAG и SWD», разъёмы — на странице «Распиновка JTAG и SWD», а как работает подтягивающий резистор, объясняет словарь.
Похожие вопросы
Повредит ли внешний резистор 10 кОм на SWDIO?
Обычно нет — драйверы отладчика и кристалла его перетягивают. Но Arm просит высокоомную подтяжку, чтобы ток в нуле был мал: 10 кОм при 3,3 В дают 0,33 мА вместо 33 мкА, что заметно в устройствах на батарейке, если отладчик подключён долго.
Почему SWCLK тянут к земле, а не к питанию?
ST объясняет, что SWCLK подаётся на тактовые входы триггеров отладки и не должен плавать. Подтяжка к земле держит такт неактивным, пока отладчик не подключён, и случайные фронты не запускают логику отладки.
А для полного JTAG подтяжки нужны?
Стандарт IEEE, по словам ST в RM0090, рекомендует подтяжки к питанию на TDI, TMS и nTRST. У STM32F4 они встроены вместе с подтяжкой TCK к земле, и внешние резисторы не нужны; у других кристаллов проверьте их документацию.
Источники
- Arm. Arm Debug Interface Architecture Specification ADIv5.0 to ADIv5.2 (IHI 0031G, ID022122) — разд. B4.3.2 Line pull-up: на стороне кристалла требуется подтяжка 100K, она лишь удерживает состояние линии; линия, отпущенная в нуле, возвращается в единицу за много тактов; подтяжка предотвращает ложные сигналы без подключённого отладчика и должна быть достаточно высокоомной, чтобы снизить ток, когда отладчик держит линию в нуле; при долгом подключении в режиме низкого потребления отладчик должен держать линию в единице; разд. B4.1.3: в такт смены направления линию не ведёт никто
- ST. RM0090: STM32F405/415, STM32F407/417, STM32F427/437 and STM32F429/439 reference manual (Rev 21) — разд. 38.4.3: встроенные подтяжки на выводах JTAG — NJTRST, JTDI, JTMS/SWDIO к питанию, TCK/SWCLK к земле; вывод SWCLK подключён к тактовому входу триггеров отладки, плавать ему нельзя; стандарт IEEE рекомендует подтяжки на TDI, TMS и nTRST, для TCK особых рекомендаций нет; встроенные подтяжки избавляют от внешних резисторов; разд. 38.8.2: для двунаправленной линии SWDIO нужна подтяжка, Arm рекомендует 100 кОм
Нашли ошибку?
Смотрите также
- JTAG и SWDTAP из 16 состояний, IR/DR, пакеты SWD, ACK, DP и AP, SWO, VTref
- JTAG и SWDARM JTAG 20, Cortex Debug 10, STDC14, ST-LINK
- Подтягивающий резисторPull-up и pull-down: определённый уровень на свободной линии
- SWDSerial Wire Debug: отладка и прошивка Cortex-M по двум проводам
- Что делать, если ST-LINK пишет «No target connected»?Питание и земля, SWDIO/SWCLK, напряжение VTref, частота SWD, подключение под сбросом