Что делать, если ST-LINK пишет «No target connected»?
Обновлено Редакция GAW
Сообщение «No target connected» (в STM32CubeProgrammer — похожее «No STM32 target found») значит, что ST-LINK послал по SWD сброс линии и запрос идентификатора, а кристалл не ответил. По спецификации Arm после сброса линии — не меньше 50 тактов с единицей на SWDIO — первой операцией читают регистр DPIDR. Если ответа нет, причина почти всегда в одном из пунктов ниже.
Порядок проверки
| Шаг | Что проверить | Как |
|---|---|---|
| 1 | Питание платы | напряжение VDD мультиметром на выводах микроконтроллера |
| 2 | Общая земля | провод GND между ST-LINK и платой |
| 3 | Опорное напряжение | вход VAPP/T_VCC ST-LINK соединён с VDD платы |
| 4 | SWDIO и SWCLK | не перепутаны, распиновка клона совпадает с надписями |
| 5 | Частота SWD | снизить с 4000 кГц до сотен килогерц |
| 6 | Программа отключила SWD или спит | Connect under reset с проводом NRST или BOOT0 = 1 |
Питание и опорное напряжение. ST-LINK/V2 работает с напряжением цели 1,65–3,6 В и узнаёт его по отдельному входу. SEGGER объясняет смысл такого входа (VTref у J-Link): по нему адаптер понимает, включена ли плата, и выставляет свои пороги. Без него связь не устанавливается или сбоит. Распиновки оригинальных разъёмов и клонов — на странице «Распиновка JTAG и SWD».
Частота. Временных параметров SWCLK спецификация Arm не задаёт — частоту ограничивают кристалл и отладчик. На длинных проводах и макетке удобнее начинать с низкой частоты, а потом поднимать.
Программа мешает отладке. Если плата раньше подключалась, а после прошивки перестала, программа могла переназначить выводы PA13 и PA14 или уйти в режим низкого потребления. Как вернуть такой кристалл, подробно разобрано в ответе «Почему ST-LINK перестал подключаться к STM32 после прошивки»; про выбор загрузки выводом BOOT0 — статья о режимах загрузки.
Проверка с другой стороны
Если не помогло ничего, проверьте сам адаптер на заведомо рабочей плате, например на Nucleo, и прозвоните провода. Как устроен протокол и что значат его ответы, описано в статье «JTAG и SWD» и в словаре на странице SWD.
Похожие вопросы
ST-LINK видит плату, но запись обрывается на середине — это та же проблема?
Скорее всего, да, но в лёгкой форме: на длинных проводах SWD фронты искажаются, и часть транзакций проходит с ошибками. Укоротите провода, проложите рядом с SWCLK общий провод и снизьте частоту SWD.
Почему подключиться получается, только если держать кнопку RESET?
Значит, работающая программа мешает отладке — переназначает выводы SWD или усыпляет кристалл. Пока RESET нажат, программа не выполняется, и отладчик успевает подключиться; то же автоматически делает режим Connect under reset с проводом NRST.
Помогает ли перемычка BOOT0?
Да, если программа сразу после старта отключает SWD или усыпляет кристалл: с BOOT0 = 1 после сброса запускается встроенный загрузчик, а не ваша программа, и отладчик подключается. После стирания флеша перемычку возвращают.
Источники
- Arm. Arm Debug Interface Architecture Specification ADIv5.0 to ADIv5.2 (IHI 0031G, ID022122) — гл. B4: SWD — два провода, SWCLK от отладчика и двунаправленный SWDIO; разд. B4.3.3: сброс линии — не меньше 50 тактов с SWDIO = 1, после него первая операция — чтение DPIDR; временные параметры SWCLK спецификация не задаёт — частоту ограничивают кристалл и отладчик
- ST. UM1075: ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32 (Rev 10) — табл. 4 — 20-контактный разъём; напряжение цели 1,65–3,6 В; частоты SWD и JTAG
- ST. UM2910: STLINK-V3MINIE debugger/programmer tiny probe for STM32 (Rev 3) — табл. 4 — разъём STDC14; адаптер не питает плату; напряжение цели 1,65–3,6 В
- ST. UM2237: STM32CubeProgrammer software description (Rev 25) — режим Connect under reset, частота подключения, команды CLI
- SEGGER. VTref — VTref — опорное напряжение: по нему адаптер определяет, включена ли плата, и задаёт пороги и уровни; соединяют с шиной VDD выводов без резистора
Нашли ошибку?
Смотрите также
- JTAG и SWDARM JTAG 20, Cortex Debug 10, STDC14, ST-LINK
- JTAG и SWDTAP из 16 состояний, IR/DR, пакеты SWD, ACK, DP и AP, SWO, VTref
- Почему ST-LINK перестал подключаться к STM32 после прошивки?Программа заняла SWD или ушла в сон — подключаться под сбросом
- SWDSerial Wire Debug: отладка и прошивка Cortex-M по двум проводам
- Режим загрузки STM32 (BOOT0, BOOT1)Выводы, выбирающие, откуда стартует STM32