Jak korzystać z zewnętrznego ST-Link do debugowania / programu MCU STM32F103?

16

Używam MCU STM32F103 do własnego projektu i chcę użyć ST-Link płyty STM32F411 Nucleo do zewnętrznego debugowania / programowania.

Wyłączyłem zworki CN2, a moje aktualne pytanie dotyczy pinoutów SWO (CN2). Jak to zrobić, to:

  • PIN 1 (SWO) to VDD_Target
  • PIN 2 to SWCLK
  • PIN 3 to GND
  • PIN 4 to SWDIO
  • PIN 5 to NRST
  • PIN 6 to SWO

O ile mi wiadomo, nie powinienem używać wszystkich powyższych szpilek. Po podłączeniu się

  • PIN 2 do PIN 37 (lub PA14) w MCU
  • PIN 3 do GND
  • PIN 4 do PIN 34 (lub PA13)
  • PIN 5 do PIN 7 lub (RESET) w docelowym MCU.

Nie jestem pewien, czy powinienem podłączyć pin SWO, ponieważ jest on ustawiony jako „zarezerwowany” (dlaczego?). Podaję również 3,3 V na pin VIN MCU, co oznacza, że ​​nie muszę podłączać VDD (PIN 1 stlink).

Proszę odnieść się do tej tabeli, którą wziąłem z oficjalnego arkusza danych:

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Oto ogólna konfiguracja pinout MCU tutaj:

wprowadź opis zdjęcia tutaj

Testowałem „prawie” wszystko za pomocą oscyloskopu i testera i wszystko wydaje się w porządku. Czego jeszcze tu brakuje? Czy powinienem zrobić coś z pinami BOOT0 lub BOOT1?

baqx0r
źródło

Odpowiedzi:

11

Przede wszystkim masz rację, jeśli Twoja płytka ma już źródło napięcia zasilania, nie musisz podłączać styku VDD ST-Link.

Drugą rzeczą, którą poleciłbym wam, jest otwarcie podręcznika referencyjnego płytki STM32F411 Nucleo i spojrzenie na schematy. Zwłaszcza część, w której ST-Link jest podłączony do kontrolera na płycie.

wprowadź opis zdjęcia tutaj

Przez ST Microelectronics SWCLK, SWDIO, NRST i SWO (i GND oczywiście) są podłączone do docelowego MCU. Dodatkowy pin SWO służy do debugowania, można uzyskać dostęp do drukowanych danych za pomocą tej printffunkcji za pomocą tego pina za pomocą ST-Link Utility .

Printf przez SWO Viewer wyświetla dane printf wysłane z celu przez SWO.

Mogę więc polecić również połączenie SWO, może być przydatne później. Podłącz swój MCU do ST-Link, tak jak podłączono do niego MCU Nucleo.

Jeśli chodzi o konfiguracje rozruchu, istnieją trzy opcje do wyboru, najłatwiej jest trzymać się głównej pamięci flash i powiązać Boot0 z GND, ale nie znam twoich wymagań, więc to zależy od ciebie.

wprowadź opis zdjęcia tutaj

Bence Kaulics
źródło
3
Chociaż można „uciec”, nie podłączając styku VDD, nie ma tam zasilania, ale raczej do wykrywania napięcia zasilania celu (zobacz, jak jest podłączony do wejścia analogowego). Bardziej wyrafinowany interfejs debugowania mógłby bez tego utrzymywać swoje linie na niskim poziomie i jedynie podnosić je do odpowiedniego poziomu zasilania, obsługując wiele napięć docelowych. Linia resetowania nie jest zwykle potrzebna (w przeciwieństwie do wielu innych implementacji SWD). Jest to klucz do przywracania sprawności po złych obciążeniach i oprogramowaniu sprzętowym, które wyłączają piny SWD, ale można nimi również ręcznie manipulować.
Chris Stratton,
Na płycie STM32F1xx głównym powodem, aby zewnętrznie wybrać BOOT0, jest wybranie, jeśli istnieje potrzeba użycia fabrycznego programu ładującego ROM UART (itp.). W '103 to nie obsługuje USB, podobnie jak w wielu późniejszych częściach ST. Jeśli ktoś chciał bootloadera USB na '103, musi on znajdować się w głównej pamięci flash, więc pin BOOT0 nie jest do tego przydatny.
Chris Stratton,
Moje boot0 i boot0 są ustawione na zero, aby mieć pewność, że program zostanie zapisany w pamięci Flash. Oprócz tego spróbuję użyć narzędzia st-link na komputerze z systemem Windows. Obecnie używam Mac OS, ale nie jestem pewien, czy mój problem dotyczy systemu operacyjnego.
baqx0r,
Użyłem ST-Link STM32F407 Discovery Kit do zaprogramowania STM32F303. Po prostu podłączyłem złącze SWD zestawu (2-5 pinów) do mojej płyty SWCLK, GND, SWDIO, NRST, SWO (podobnie jak w Discovery i Nucleo) i działało z narzędziem ST-Link Utility. Pin boot0 jest przywiązany do GND poprzez rezystor 10k, na podstawie podręcznika sprzętowego STM32F303 .
Bence Kaulics,
6

Przede wszystkim dziękuję wszystkim za ich wkład.

Po dwóch nieprzespanych nocach i zmaganiach mogłem znaleźć problem. Problem polegał na połączeniach pinów na mojej niestandardowej płycie: Myślałem, że w moim MCU, Pin 9 (VDDA) jest zwarty z PIN-ami 24-36-48, a Pin 8 (VSSA) z PIN-ami 23-35-47, ale tak nie jest.

Musiałem dać kolejną 3.3V i GND do VDDA i VSSA i ST-Link rozpoczął pracę.

Metoda rozwiązania : Użyłem schematów Maple Mini, aby zrozumieć połączenia STM32F103. Okazało się, że zwarli VDDA z VDD1, VDD2 i VDD3, a VSSA z VSS1, VSS2 i VSS3. Myślę, że powinienem to zrozumieć z nazewnictwa VSSA, ponieważ nie jest to VSS0 ani VSS4.

baqx0r
źródło