Não é possível programar uma placa STM32 personalizada

9

Eu projetei uma placa STM32 simples. Abaixo estão as imagens esquemáticas e de layout do PWB:

Esquema:
insira a descrição da imagem aqui

Layout de PCB: insira a descrição da imagem aqui

Layout da placa de circuito impresso com VDD destacado: insira a descrição da imagem aqui

Layout de PCB com GND destacado: insira a descrição da imagem aqui

Somente as partes deste design relevantes para minha pergunta são mostradas nas figuras acima.

Meu problema é: tentei usar o ST-Link interno de uma placa de descoberta STM32 para programar essa placa personalizada, mas ainda não consegui. O aplicativo ST-Link Utility no PC pode reconhecer o programador, mas não pode detectar o MCU de destino. As mensagens de erro que recebi foram: "Alvo não conectado" e "Erro de comunicação USB do ST-Link".

Aqui estão alguns fatos relacionados sobre o meu problema:

  • O STM32 Discovery Board funciona bem: eu posso usá-lo ST-Link embutido para programar o MCU STM32 integrado. Está tudo bem
  • O STM32 MCU foi soldado com a orientação correta na placa personalizada. Eu verifiquei isso duas vezes.
  • Eu verifiquei vestígios de VDD e SWD. Eles estão bem conectados (sem problemas de solda). O Pin Boot0 está em 0V. O pino NRST está em 3.3V.
  • O cabo SWD é curto, com apenas 7-8 cm de comprimento.
  • O STM32 no meu quadro personalizado é do mesmo tipo que o do Discovery Board.
  • Segui as instruções no manual do STM32 Discovery Board sobre como usar o Discovery Board para programar um MCU STM32 externo. Para ser mais específico, removi os 2 jumpers CN3 e conectei as placas como nesta tabela: insira a descrição da imagem aqui

  • Também removi a ponte de solda SB11 no Discovery Board (para que o pino NRST possa funcionar corretamente).

  • Eu tentei o aplicativo ST-Link Utility e Keil. As mensagens de erro que recebi são as mesmas.
  • No começo, não conectei o pino 6 na tabela acima (SWO) porque, pelo que sei, não é necessário. No entanto, depois disso, liguei também, mas as coisas ainda não deram certo.
  • Também adicionei uma tampa de 100nF do pino NRST ao GND e, em seguida, um resistor de 100k deste pino ao VDD. O problema ainda permanece.
  • Também tentei usar o modo "conectar sob redefinição" do programa Utilitário ST-Link. Sem sorte também.

Suspeito que possa haver algo errado com o design, mas não tenho certeza. Por favor me ajude a resolver o problema.

Muito obrigado :)

user3286500
fonte
Tanto quanto me lembro, você precisa alimentar o st-link e seu quadro personalizado. O 3.3V no conector SWD da sua placa personalizada deve fornecer o 3.3V para o st-link detectar.
Davidrojas
@didroidrojas: Obrigado pela sua resposta. Bem, atualmente eu alimento o ST-Link pela porta USB do meu PC. A placa STM32 personalizada é alimentada por um externo, 3.3V separado. No entanto, o aterramento dessas 2 placas já está conectado (como na tabela acima). Além disso, o 3.3V da minha placa personalizada também está conectado ao VDD_TARGET no ST-Link. Você acha que isso é suficiente?
user3286500
Deve ser o suficiente, sim. Outra questão poderia ser o comprimento e o layout das linhas SWDIO e SWCLK; tive problemas de conexão intermitente no passado por causa disso. Eles devem ser o mais curtos possível. Tente diminuir também a velocidade do SWD.
Davidrojas
Reduzi a velocidade do SWD, do padrão 1,8 MHz para menos de 400 kHz, mas ainda não obtive sucesso. Quanto ao comprimento do cabo, na minha configuração, o comprimento total da conexão SWD (do ST-Link ao STM32 de destino) é de cerca de 12 a 13 cm. Isso ainda está dentro do limite?
user3286500
11
Você notou que o aterramento sob o chip está fisicamente isolado e não está realmente conectado a nenhum dos pinos de aterramento? As conexões reais entre os pinos de aterramento seguem caminhos tortuosos fora do chip, e alguns deles podem realmente ser isolados. Você precisa ajustar suas folgas para que o vazamento do solo não tenha ilhas isoladas, e isso ajudará a garantir que todos os pinos de aterramento do chip estejam muito mais próximos do mesmo potencial.
Dave Tweed

Respostas:

5

Obrigado por seus ótimos comentários. Por causa deles, tenho certeza de que meu design é livre de erros. É por isso que concentrei minha atenção na busca por erros no hardware. E eu encontrei o erro! Este é um erro de solda.

Encontrei este erro após seguir estas instruções: "Use um multímetro e teste todas as conexões em busca de curtos ou falta de conexão. Lembre-se de tocar nos pinos / almofadas / o que for realmente delicado, porque se você pressionar a sonda com força, poderá" consertar "a conexão temporariamente (por exemplo, você empurra o pino do IC para o rastreio na PCB e o teste é bom, mas assim que você solta o pino se dobra novamente)". A postagem original está aqui .

user3286500
fonte