logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

STM32 - Nie da się więcej zaprogramować po udanym programowaniu.

MasMas 08 Gru 2015 21:25 1545 8
REKLAMA
  • #1 15223441
    MasMas
    Poziom 16  
    Posty: 418
    Ocena: 120
    Witam,
    Potrzebuję pilnej pomocy, bo nie mam już sam pomysłów.

    Procesor STM32F7-45VGT, płytka własnej roboty, programator ST-LINK v2 (ew. U-LINK2), interface SWD / JTAG.

    Wszystko działało - napisałem ST-LINK Utility wykrywał procka, napisałem program w Eclipse (wygenerowany podstawa przez STM32CubeMX) do migania diodą. Wgrałem program, dioda miga, zegary ustawione - wszystko śmiga.

    I na tym koniec. Dioda dalej miga a ja nie mogę z prockiem nic zrobić. W ogóle się nie chce mi się z nim połączyć - więc nie mogę ani wyczyścić, zaprogramować czy odczytać.
    Próbowałem ST-Linkiem (taki tani, chiński) po SWD w ST-Link Utility oraz U-Linkiem 2 po JTAG, przez Keil uVision 5. To samo. Nie da się połączyć. Błąd.


    Problem prawdopodobnie jest w tym, że w swoim programie ustawiłem piny odpowiedzialne za programowanie (SWD/JTAG) jako wyjścia GPIO.
    Ale programuje to POD resetem... Więc powinno chyba ustawić na domyślne funkcje.
    Zarówno w uVision jak i Utility ustawiłem "connect under reset" i procek jest resetowany (widzę po diodzie), ale nie może się połączyć.

    Ma ktoś jakiś pomysł? Bo ja już nie wiem jak to naprawić i co się w ogóle stało...
  • REKLAMA
  • #2 15223515
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Connect under reset, reset: hardware, reset after connect, SWD (a nie JTAG), częStotliwość poniżej 1 MHz i musi zadziałać. Możesz jeszcze spróbować nacisnąć guzik reset podczas łączenia. I ZAWSZE zachowuj funkcję SWD na obu nogach (AF0), nie ustawiaj ich jako GPIO ani nic innego.

    Spróbuj zrobić to pod Keil MDK-ARM (przynajmniej skasować pamięć).
  • REKLAMA
  • #3 15223594
    MasMas
    Poziom 16  
    Posty: 418
    Ocena: 120
    Robiłem już tak. To znaczy w Keilu wykrywa mi SWD. Jak wejdę w opcje projektu -> "Debug" i tam dam ustawienia programatora, to daje właśnie SWD i te resety i nie ma błędu, coś odczytuje (pojawia się w tym polu po prawej jakiś adres, typ SWD i takie czarne kółeczko - więc chyba tutaj ok).

    Ale jak daje Flash -> Erase, to wywala mi błąd i nic się nie dzieje...
  • #4 15223804
    BlueDraco
    Specjalista - Mikrokontrolery
    Posty: 6479
    Pomógł: 939
    Ocena: 421
    Zaktualizuj oprogramowanie ST-Link (STSW-LINK007). Spróbuj użyć ST-Link z płytki Discovery. Sprawdź w Keil, czy masz ustawiony właściwy algorytm programowania. To musi działać.
  • REKLAMA
  • #5 15224306
    failflood
    Poziom 9  
    Posty: 9
    Włącz eclipse -> wybierz program który chcesz wgrać -> wciśnij i trzymaj reset na płytce -> kliknij wgrywanie programu -> jak się pojawi czerwony tekst w konsoli to puść reset

    U mnie zadziałało
  • REKLAMA
  • #6 15226049
    MasMas
    Poziom 16  
    Posty: 418
    Ocena: 120
    Udało mi się :) Próbowałem tym Eclipsem ale nie mogłem skonfigurować dla F7 tego Eclipsa.

    W każdym razie odpaliłem ST-Link Utility i przytrzymałem reset, jakoś go potem puściłem i zamiast connect dałem erase i ruszyło! Choć próbowałem różne takie kombinacje, w tym tę także, już wczoraj, ale nie szło.
    W każdym razie dzisiaj się udało i już się programuje.


    --------------
    Pytanie w takim razie: nie da się używać tych pinów od SWD jako GPIO? Tak, żeby móc dalej programować?
    A gdybym zrobił w programie opcję, że po jakimś przerwaniu zewnętrznym program ustawi te piny z GPIO na SWD to wtedy byłbym w stanie zaprogramować? (trochę zależy mi na tych pinach po prostu...).
  • #7 15226381
    vonar
    Poziom 28  
    Posty: 690
    Pomógł: 151
    Ocena: 30
    Na początku programu przed skonfigurowaniem pinów odczekaj po prostu kilka sekund.
  • #8 15226511
    MasMas
    Poziom 16  
    Posty: 418
    Ocena: 120
    Dobra, to jest znacznie lepsza opcja, z poczekaniem po prostu... Albo nawet ze zworką.

    Bo rozumiem, że to jest tak, że jak już programator (ST-Link) "złapie" procka, tzn. się z nim połączy to wykonywanie kodu jest wstrzymane i wtedy może już sobie tak wisieć ile chce?
  • #9 15226585
    vonar
    Poziom 28  
    Posty: 690
    Pomógł: 151
    Ocena: 30
    To zależy od konfiguracji narzędzi (np. w skrypcie OpenOCD: "halt" / "reset halt").

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napotkał problem z programowaniem procesora STM32F7-45VGT po pomyślnym wgraniu programu, który powodował miganie diody. Po wgraniu programu, nie był w stanie nawiązać połączenia z procesorem, co uniemożliwiało dalsze programowanie, czyszczenie pamięci lub odczyt. Problemy mogły wynikać z ustawienia pinów SWD/JTAG jako wyjścia GPIO. Użytkownicy sugerowali różne metody, takie jak łączenie pod resetem, aktualizacja oprogramowania ST-Link, oraz użycie ST-Link Utility z przytrzymanym resetem, co ostatecznie pomogło w rozwiązaniu problemu. Użytkownik zadał dodatkowe pytanie o możliwość używania pinów SWD jako GPIO oraz o możliwość ich ponownej konfiguracji w programie po przerwaniu zewnętrznym.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA