Pular para conteúdo

ST-Link

ST-Link é um programador e depurador para microcontroladores STM32.

No contexto de dispositivos simples, é usado para:

  • programar uma placa STM32;
  • recuperar uma placa após programação falhada;
  • conectar-se ao chip através de SWD;
  • apagar memória;
  • verificar se o microcontrolador é visível;
  • às vezes depurar o programa.

ST-Link não é necessário para todas as placas. ESP32, RP2040 e Arduino geralmente programam de forma diferente.

O que é SWD

SWD é Serial Wire Debug.

É uma interface de depuração e programação para microcontroladores ARM, comumente utilizada com STM32.

Para conexão básica você geralmente precisa:

  • SWDIO;
  • SWCLK;
  • GND;
  • às vezes NRST;
  • às vezes 3.3V ou VTref como tensão de referência de alvo.

Importante: 3.3V em ST-Link nem sempre significa "alimentar a placa a partir daqui". Frequentemente ST-Link precisa ver a tensão da placa de alvo para compreender os níveis de sinal.

Conexão mínima

Normalmente você conecta:

ST-Link SWDIO -> board SWDIO
ST-Link SWCLK -> board SWCLK
ST-Link GND   -> board GND
ST-Link NRST  -> board NRST if reset is needed
ST-Link 3.3V/VTref -> 3.3V target if required by specific ST-Link

A placa STM32 é frequentemente alimentada a partir de sua alimentação normal ou USB.

Antes de conectar, verifique a documentação para seu ST-Link e placa específicos.

Placas Nucleo para STM32 com depurador ST-Link integrado

Fonte: Wikimedia Commons, Avandalen, CC BY-SA 4.0

Alimentação da placa

A confusão mais comum: a placa é alimentada por ST-Link ou separadamente?

Opções:

  1. Placa é alimentada separadamente, ST-Link apenas conecta-se a SWD e GND.
  2. ST-Link fornece 3.3V a uma pequena placa de alvo, se é realmente projetada para isto.
  3. ST-Link apenas lê VTref, mas não deve alimentar a placa.

Você não pode conectar cegamente múltiplas fontes de energia.

Se a placa já é alimentada por USB ou fonte de alimentação, não conecte energia de ST-Link até ter certeza que o esquema permite.

DFU é um modo de programação através de um bootloader USB, se disponível.

ST-Link funciona através de SWD diretamente com o microcontrolador.

ST-Link é útil quando:

  • DFU não está disponível;
  • o bootloader está corrompido ou não é utilizado;
  • a programação desativou USB;
  • a placa não entra em modo de programação normal;
  • você precisa apagar memória;
  • você precisa recuperar acesso STM32.

Mas se uma placa programa normalmente através de USB/DFU ou cartão SD, ST-Link pode não ser necessário.

Conectar sob reset

Às vezes o firmware quebra acesso SWD.

Por exemplo:

  • pinos SWD são utilizados como GPIO normal;
  • firmware coloca rapidamente o chip em sleep;
  • código trava logo após startup;
  • modos de relógio/potência estão configurados incorretamente.

Em tais casos, o modo Connect under reset ajuda.

A ideia: ST-Link mantém reset e tenta conectar antes de firmware ruim executar.

Isto frequentemente requer conectar NRST.

Em STM32CubeProgrammer ou ferramenta similar você geralmente vê:

  • se ST-Link está conectado;
  • se o alvo é encontrado;
  • que chip é detectado;
  • se você pode ler memória;
  • se você pode apagar flash.

Se ST-Link é visível como dispositivo USB mas o alvo não é encontrado, o problema é frequentemente a conexão da placa:

  • placa de alvo não tem energia;
  • sem GND comum;
  • SWDIO e SWCLK estão trocados;
  • VTref não está conectado se necessário;
  • frequência SWD muito alta;
  • chip está bloqueado;
  • firmware impede conexão;
  • Connect under reset é necessário.

Frequência SWD

Se a comunicação é instável, tente reduzir a frequência SWD.

Em fios longos, jumpers Dupont pobres ou placas instáveis, alta frequência pode interferir com conexão.

Para recuperação de placa, lento e confiável bate rápido.

Erros comuns

  • esqueceu GND;
  • trocou SWDIO e SWCLK;
  • conectou energia de ST-Link e USB ao mesmo tempo sem compreender o esquema;
  • não alimentou a placa de alvo;
  • não conectou NRST quando Connect under reset é necessário;
  • definiu frequência SWD muito alta;
  • tentando programar ESP32 ou RP2040 com ST-Link;
  • tentando conectar a um chip bloqueado sem compreender proteção de leitura;
  • usando fios longos de má qualidade;
  • não atualizou firmware ST-Link ou não instalou driver.

O que você não pode fazer

Você não pode:

  • aplicar 5V a uma placa STM32 3.3V sem verificar;
  • conectar múltiplas fontes de energia cegamente;
  • conectar ST-Link a uma placa sob tensão de rede sem isolamento seguro e invólucro;
  • mudar fios SWD com energia ligada se há risco de curto-circuito;
  • assumir que um clone ST-Link tem o mesmo pinout do original.

Os pinouts dos clones ST-Link podem diferir. Verifique sempre as marcações do seu adaptador específico.

Os essenciais

  • ST-Link é necessário para STM32 através de SWD.
  • Mínimo: SWDIO, SWCLK, GND, às vezes NRST e VTref.
  • A placa deve ser alimentada corretamente, mas não necessariamente a partir de ST-Link.
  • DFU e ST-Link são métodos de programação diferentes.
  • Connect under reset ajuda a recuperar acesso após firmware ruim.
  • Se o alvo não é encontrado, primeiro verifique potência, GND, SWDIO/SWCLK, NRST e frequência SWD.

Materiais de referência