STM32F103 MCU를 디버그 / 프로그래밍하기 위해 외부 ST-Link를 사용하는 방법은 무엇입니까?


16

내 프로젝트에 STM32F103 MCU를 사용하고 있으며 외부 디버깅 / 프로그래밍 목적으로 STM32F411 Nucleo 보드의 ST-Link를 사용하려고합니다.

CN2 점퍼를 끄고 실제 질문은 SWO (CN2)의 핀 배치에 있습니다. 이를 진행하는 방법은 다음과 같습니다.

  • SWO의 PIN 1은 VDD_Target입니다.
  • PIN 2는 SWCLK입니다
  • PIN 3은 GND입니다
  • PIN 4는 SWDIO입니다
  • PIN 5는 NRST입니다
  • PIN 6은 SWO입니다

내가 아는 한, 위의 모든 핀을 사용해서는 안됩니다. 에서와 같이, 나는 연결했다

  • MCU의 PIN 2-PIN 37 (또는 PA14)
  • PIN 3에서 GND
  • PIN 4 ~ PIN 34 (또는 PA13)
  • 대상 MCU의 PIN 5 ~ PIN 7 또는 (리셋)

SWO 핀이 "예약 됨"(왜)으로 설정되어 있는지 SWO 핀을 연결해야하는지 잘 모르겠습니다. 또한 MCU의 VIN 핀에 3.3V를 제공하므로 VDD (stlink의 PIN 1)를 연결할 필요가 없습니다.

공식 데이터 시트에서 가져온이 표를 참조하십시오.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

MCU의 일반적인 핀아웃 구성은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

오실로스코프와 테스터로 "거의"모든 것을 테스트했으며 모든 것이 정상인 것 같습니다. 내가 여기서 뭘 놓치고 있니? BOOT0 또는 BOOT1 핀으로 무엇을해야합니까?

답변:


11

우선, 보드에 이미 공급 전압 소스가 있다면 ST-Link의 VDD 핀을 연결할 필요가 없습니다.

두 번째로 권장하는 것은 STM32F411 Nucleo 보드의 참조 매뉴얼 을 열고 회로도를 보는 것입니다. 특히 ST-Link가 보드의 컨트롤러에 연결된 부분.

여기에 이미지 설명을 입력하십시오

ST Microelectronics는 SWCLK, SWDIO, NRST 및 SWO (및 물론 GND)를 대상 MCU에 연결합니다. 추가 SWO 핀은 디버그 목적으로 사용 printf되며 ST-Link Utility 를 통해이 핀을 통해이 기능으로 인쇄 된 데이터에 액세스 할 수 있습니다 .

SWO 뷰어를 통한 Printf는 SWO를 통해 대상에서 전송 된 printf 데이터를 표시합니다.

따라서 SWO를 연결하는 것이 좋습니다. 나중에 유용 할 수 있습니다. Nucleo의 MCU를 연결된 것처럼 MCU를 ST-Link에 연결하십시오.

부팅 구성의 경우 선택할 수있는 세 가지 옵션이 있습니다. 기본 플래시를 사용하고 Boot0을 GND에 연결하는 것이 가장 쉬운 방법이지만 요구 사항을 잘 모르므로 선택해야합니다.

여기에 이미지 설명을 입력하십시오


3
VDD 핀을 연결하지 않고 "이탈"할 수는 있지만 공급 장치는 없지만 대상의 공급 전압 을 감지 할 수 있습니다 (아날로그 입력에 연결되는 방법 참조). 보다 정교한 디버그 인터페이스는 라인 없이도 라인을 낮게 유지할 수 있으며 해당 타겟 레벨까지만 상승시켜 여러 대상 전압을 지원할 수 있습니다. 다른 많은 SWD 구현과 달리 리셋 라인은 일반적으로 필요 하지 않습니다 . SWD 핀을 비활성화하는 불량로드 및 펌웨어를 복구하는 것이 중요하지만 수동으로도 조작 할 수 있습니다.
Chris Stratton

STM32F1xx 보드에서 BOOT0을 외부에서 선택 가능하게하는 주된 이유는 팩토리 ROM UART (etc) 부트 로더를 사용하려는 경우입니다. '103 년에는 ST의 많은 후반부에서와 마찬가지로 USB를 지원 하지 않습니다 . '103 년에 USB 부트 로더를 원한다면 메인 플래시 메모리에 있어야하므로 BOOT0 핀은 유용하지 않습니다.
Chris Stratton

프로그램이 플래시 메모리에 기록되도록하려면 boot0과 boot0이 0으로 설정됩니다. 그 외에도 Windows 시스템에서 st-link 유틸리티를 사용해 보겠습니다. 현재 Mac OS를 사용하고 있지만 문제가 OS와 관련이 있는지 확실하지 않습니다.
baqx0r

STM32F407 Discovery Kit의 ST-Link를 사용하여 STM32F303을 프로그래밍했습니다. (2-5 핀) 키트의 SWD 커넥터를 보드 SWCLK, GND, SWDIO, NRST, SWO (Discovery 및 Nucleo에서 수행 한 것처럼)에 연결하고 ST-Link Utility와 함께 작동했습니다. boot0 핀은 STM32F303 하드웨어 참조 매뉴얼 에 따라 10k 저항을 통해 GND에 연결되어 있습니다 .
Bence Kaulics

6

우선 그들의 공헌에 감사드립니다.

잠 못 이루는 두 밤과 투쟁 후, 나는 그 문제를 알 수 있었다. 문제는 맞춤형 보드의 핀 연결에 있습니다. MCU에서 핀 9 (VDDA)는 핀 24-36-48로, 핀 8 (VSSA)은 핀 23-35-47로 단락되었다고 생각했습니다. 하지만 그렇지 않습니다.

VDDAVSSA에 또 다른 3.3VGND제공 해야 했으며 st-link가 작동하기 시작했습니다.

해결 방법 : STM32F103의 연결을 이해하기 위해 메이플 미니 회로도를 사용했습니다. VDD1, VDD2 & VDD3, VSA1, VSS2 및 VSS3을 사용하는 VDDA를 단락시켰다. VSS0 또는 VSS4가 아니기 때문에 명명 VSSA에서 이것을 이해해야한다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.