Zbudowałem własną płytę z STM32F7-45VGT6. Z powodzeniem zaprogramowałem go za pomocą ST-LINK v2 (choć nie oryginalnego), a teraz nie mogę nawet połączyć się z MCU.
Używam ST-Link Utility z interfejsu ST i SWD. Może być tak, że używam pinów SWD jako wyjścia i w swoim kodzie ustawiam je jako wyjście GPIO. Czy może tak być?
Mimo to podłączam pin reset do GND i ustawiam opcję „Connect under reset” w ST-Link Utility, ale to nie działa ... Co mogę zrobić?
W Internecie znalazłem coś na temat używania BOOT0 Pin, ale nie wiem dokładnie ...
stm32
programming
flash
st-link
zupazt3
źródło
źródło
Odpowiedzi:
Udało mi się rozwiązać ten problem. Jeśli ktoś napotka podobny problem, oto co zrobiłem:
Użyłem ST-Link v2 i ST-Link Utility. W ustawieniach ustawiam „Połącz w trakcie resetowania” i interfejs SWD (nie jestem pewien częstotliwości).
Następnie wciskam przycisk resetowania na mojej płycie i klikam „Cel” -> „Wymaż chip” i zaraz po kliknięciu zwolniłem przycisk - Wymazałem chip, dzięki czemu mogę teraz przeprogramować MCU.
W każdym razie, jeśli potrzebujesz użyć pinów SWD jako wyjścia, dodaj trochę opóźnienia na początku programu lub użyj zworki, aby wyłączyć / włączyć ustawienie tych pinów jako wyjść.
źródło
Aby połączenie z resetem działało, ST-Link musi mieć kontrolę nad pinem resetowania, jeśli przywiążesz go do uziemienia, ST-Link nie ma szans na uruchomienie celu i uzyskanie do niego dostępu.
Jeśli wyciągniesz pin BOOT0 wysoko podczas włączania, MCU uruchomi się w wewnętrznym module ładującym i możesz uzyskać dostęp za pomocą kilku protokołów szeregowych (więcej szczegółów znajdziesz w instrukcji obsługi).
Wewnątrz modułu ładującego piny SWD powinny być dostępne, aby uzyskać dostęp, ale nie jestem tego w 100% pewien.
Demonstrator programu ładującego ST Flash to narzędzie, które umożliwia kasowanie / programowanie mikro za pomocą interfejsu UART. Jeśli nie możesz uzyskać dostępu do żadnego z UART mikroprocesora, to rozwiązanie nie będzie działać.
źródło
jeśli używasz stmcubemx, musisz skonfigurować przewód szeregowy na zakładce stmcube pinout. na zakładce pinout kliknij SYS i zmień opcję debugowania na przewód szeregowy. naprawiło mój problem, a może i twój problem.
źródło
Pobrałem trochę kodu na własną płytkę STM32F427. Wtedy nie mogę już połączyć się z moją płytą za pomocą ST-LINK Utility. Myślę, że mój kod popsuł konfiguracje pinów portu debugowania (? Nie można potwierdzić). Wykonałem następujące czynności, aby nawiązać połączenie i przeprogramować płytę:
Za pomocą tej sztuczki przywróciłem 2 plansze. Mam nadzieję że to pomoże. --Kok
źródło
Jak powiedział Dili:
STM32CubeMx domyślnie nie konfiguruje portu debugowania, w związku z czym ST-Link przestanie działać po flashowaniu kodu. Na przykład musisz skasować układ za pomocą ST-link Utility. Aby połączyć się z MCU, musiałem pociągnąć pin BOOT0 wysoko podczas włączania, aby aktywować bootloader. Następnie przejdź do menu Tarjet i wymaż chip .
źródło
Aby ponownie zaprogramować MCU, przytrzymaj przycisk resetowania i wybierz podłącz do urządzenia w ST-Link Utility lub naciśnij pobierz w swoim IDE (na przykład Keil), a następnie zwolnij przycisk resetowania.
źródło
Szpilki rozruchowe (bity w niektórych wersjach) mogą uniemożliwić uruchomienie debugera. Upewnij się, że nie wdrażasz wzorca rozruchu podczas uruchamiania (pewien wzorzec binarny na pinach boot0 i boot1), w przeciwnym razie MCU przejdzie w stan rozruchu.
źródło