Перейти к содержанию

Что делать, если 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 платы
4SWDIO и 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 после сброса запускается встроенный загрузчик, а не ваша программа, и отладчик подключается. После стирания флеша перемычку возвращают.

Источники

  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 спецификация не задаёт — частоту ограничивают кристалл и отладчик
  2. ST. UM1075: ST-LINK/V2 in-circuit debugger/programmer for STM8 and STM32 (Rev 10) — табл. 4 — 20-контактный разъём; напряжение цели 1,65–3,6 В; частоты SWD и JTAG
  3. ST. UM2910: STLINK-V3MINIE debugger/programmer tiny probe for STM32 (Rev 3) — табл. 4 — разъём STDC14; адаптер не питает плату; напряжение цели 1,65–3,6 В
  4. ST. UM2237: STM32CubeProgrammer software description (Rev 25) — режим Connect under reset, частота подключения, команды CLI
  5. SEGGER. VTref — VTref — опорное напряжение: по нему адаптер определяет, включена ли плата, и задаёт пороги и уровни; соединяют с шиной VDD выводов без резистора

Нашли ошибку?