Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

STM32F030 i F4 discovery - SWD i problem z programowaniem stm32.

22 Mar 2014 18:40 7134 16
  • Level 9  
    Witam.

    Mam pewien problem z programowaniem STM32F030C8T6 za pomocą linii SWD.
    Wyskakują mi takie błędy:
    Przy setting -> connect under reset:
    "18:29:25 : Can not connect to target!
    If you're trying to connect to an STM32W1xx device, please select Normal or HotPlug mode from Target->Settings menu.
    18:29:26 : Internal command error"
    żeby było ciekawiej to za pomocą bootloadera i programu Flash Loader mam zielone światło i jest napisane, że urządzenie jest gotowe. Wciskam next i widzę mapę pamięci. Wiec proc jest ok moim zdaniem. Wczoraj bawiłem się F4discovery i nie zauważyłem by proc na discovery miał jakieś problemy z wgraniem programu.
    Nie mam pojęcia co źle robię. Przeszukałem internet i nic nie znalazłem na ten temat. Widziałem że ktoś miał też taki sam problem ale cuda się u niego stały i po n-tym podłączeniuu się połączył z procem co chce zaprogramować.
    Dałem też na wrazie czego rezystor pullup do nrst. Z resztą przedstawie schemat połączeniowy proca.
    Żeby nie było. Zworki boot zmieniam. (bootloader pod VDD, stlink gnd)
    Połączenie standardowe
    SWDIO <-> SWDIO
    SWCLK <-> SWCLK
    GND<-> GND

    i z wciśniętyym i bez wciskania resetu nie działa...
    Byłbym bardzo wdzięczny za pomoc.

    STM32F030 i F4 discovery - SWD i problem z programowaniem stm32.
  • Helpful post
    Level 15  
    Jagi_prg wrote:
    Połączenie standardowe
    SWDIO <-> SWDIO
    SWCLK <-> SWCLK
    GND<-> GND

    W tym wątku opisuję moje problemy - połączenie się udało, gdy podłączyłem też Vcc programowanego procesora z Vcc złącza SWD (które niby do niczego nie jest podłączone); innym sposobem na udaną komunikację bez Vcc było obniżenie napięcia zasilania programowanego procesora do poziomu 3V.

    Pozdrowienia,
    m.ki
  • Level 9  
    Powiem szczerze. :) Znalazłem ten temat również i pierwsze co mi przyszło do głowy to " co Ty solisz?! Przecież są poziomy napięć które proc przyjmuje jako H i L"
    Teraz wiem że kurde miałeś rację! Wielkie wielkie wielkie dzięki! :D
    Temat można zostawić dla potomnych ku przestrodze lub wykasować. :)
  • Level 10  
    Mam ten sam problem (takie same błędy w ST-LINK Utility) ale niestety u mnie nie pomogło ani obniżenie napięcia ani podpięcie Vcc do złącza SWD. Procesor mam podłączony na kabelkach połączeniowych (ok 20cm), ale to chyba nie jest przyczyną. Zasilałem procesor z płytki DISCO, później z ATX'a za pomocą stabilizatora (napięcie 3V). Próbowałem też z podpiętym NRST. BOOT0 też podpinałem i do gnd i do Vcc. Nie mam już pomysłów co może być nie tak. Sprawdzałem rezystancje procesora na zasilaniu (1.1MOhm) i wydaje się że procesor spalony nie jest. Proszę o pomoc.
  • Level 9  
    a przez bootlader widzisz mapę pamięci? Jak masz disco to weź podłącz kabelkami pod 3V które tam jest i 3 kable od SWD.
  • Level 10  
    Nie wiem dlaczego ale zaczęło działać, próbowałem dziś w CooCox debugować, żeby sprawdzić czy się połączy, ale nie działało, później dla pewności spróbowałem jeszcze raz w ST-LINK Utility (przed sprawdzeniem procka na innym programatorze) i stał się chyba jakiś cud, bo działa!
  • Level 9  
    powiem szczerze... Koledzy na F1 dają pull-up (tak w nocie jest) do SWCLK i SWDIO i chodzi na 3,3V, STM32F030 ma wewnętrzny pull-down na SWCLK i to wszystko kasztani... w każdym razie działa i to jest najważniejsze.
  • Level 10  
    Problem powrócił, tylko teraz jest tak ze jak odepnę usb i podepną jeszcze raz to raz w ST-LINK Utility mogę się połączyć choć nie zawsze, w CooCox nie da się nic zrobić, jak podpiąłem NRST pod zasilanie to CooCox się łączył i niby programował układ, ale w rzeczywistości na procku był dalej tan sam program, a debugowanie się nie udawało bo źródła były inne. Dodam jeszcze ze przy próbie połączenia się gasła dioda która była podpięta pod PWM procka. Maci jakieś pomysły co może być przyczyną takich anomalii?
  • Level 17  
    Mam również problemy z układem STM32F030 (obudowa TSSOP20).
    Główny problem polega na tym, że ST-Link (wykorzystuję ST-Link na płytce discovery) łączy się prawidłowo z układem ale nie programuje go. Nie działa również programowanie option bytes.
    Za każdym razem wyskakuje błąd weryfikacji już na pierwszym adresie flash (0x08000000). Natomiast odczyt pamięci i option bytes odbywa się bez błędów.
    Dodatkowo, programator nieprawidłowo wykrywa typ układu - wyświetla, że układ jest typu STM32F031 zamiast STM32F030. Mam zamiar sprawdzić czy te same problemy są przy użyciu standardowego programatora ST-Link/V2.

    Jeśli chodzi o pin VCC w programatorze. Na płytce Discovery M0 sygnał VCC będzie brany pod uwagę przez programator tylko wtedy gdy będzie zwarty rezystor R10. Fabrycznie nie jest on montowany i oznaczony na schemacie jako "not fitted". Zanim do tego doszedłem również miałem problemy z dbugowaniem w CooCox (raz działało raz nie)

    Schemat na Figure 15:

    http://www.st.com/st-web-ui/static/active/en/...technical/document/user_manual/DM00050135.pdf
  • Level 10  
    Procesor ma zasilanie i tak z płytki discovery, wstawienie tego rezystora rozwiązuje problem w takie sytuacji?
  • Level 17  
    Takiej konfiguracji akurat nie sprawdzałem ale warto to przetestować. Płytkę najlepiej nie zasilać z programatora tylko z oddzielnego zasilacza.
    Miałem natomiast problem gdy debugowany układ był zasilany z 3,3V. Obniżenie do 3V pomagało ale z kolei inne układy (które musiały być zasilanie z 3,3V) nie działały. Problem został rozwiązany dopiero po wlutowaniu tego rezystora R10.
    Dodam, że zawsze przydaje się podłączenie NRST. Jeśli w programie zdarzy się, że procesor zablokuje interfejst SWD/JTAG wskutek jakiegoś błędu wówczas CooCox nie połączy się z układem. W taki przypadku należy odpalić ST-Link Utility, ustawić opcję "Connect under reset" i wykonać "Mass erase" (i oczywiście poprawić błąd w programie, który powoduje blokadę SWD/JTAG) i ponownie zacząć debugowanie.
  • Level 10  
    Z podpiętym NRST w ogóle nie udało się połączyć. Dziwne jest to ze jak na początku nie dało się połączyć i w końcu się udało to działało wszystko bez problemów aż do wczoraj. I nie działa w ogóle, a nie tak że się raz uda zaprogramować a raz nie.
  • Level 17  
    Widzę, że na schemacie do NRST podpięty jest kondensator 100n. Ja nigdy nie stosuję kondensatora w tym miejscu. Można jeszcze sprawdzić czy po odłączeniu go coś się zmieni. Jest to spora pojemność (jak na sygnał reset), która może zakłócać sterowanie sygnałem NRST przez programator.
  • Level 9  
    kekon wrote:
    Widzę, że na schemacie do NRST podpięty jest kondensator 100n. Ja nigdy nie stosuję kondensatora w tym miejscu. Można jeszcze sprawdzić czy po odłączeniu go coś się zmieni. Jest to spora pojemność (jak na sygnał reset), która może zakłócać sterowanie sygnałem NRST przez programator.


    coś w tym może być... Moje wcześniejsze przemyślenia z pull-downem są idiotyczne...:D kiedyś próbowałem tak z czystej ciekawości wylaczyc pull-down z pinu programujacego. Nic to nie dało. :)
    W innym projeekcie przy tym samym procu mam na Resecie pull-up 10k bez przycisku i kondziora.(nie trzeba bo patrząc na note to widać że jest wewnetrzny pull-up... ja dałem na w razie czego) jak zasilam projek 3.3V to programator się o dziwo nie pluje... w przedstawionym przeze mnie na samym początku schemacie jest kondzior dla debouncigu tylko, ale przy 3.3V programator pluje się...
    Co do aktualizacji St-linka to w moim przypadku nie pomogło...
  • Level 17  
    W końcu wymieniłem procek na nowy i zaczął działać. Dziwne to, bo był wlutowany zupełnie nowy. Wygląda na to, że miał uszkodzony flash (najprawdopodobniej).
    Nie mam pojęcia co było przyczyną uszkodzenia.
  • Level 8  
    A ja mam inny problem zaprojektowałem sobie płytkę z STM na pokładzie podłączam GND, SWDIO i SWCLK i nie działa jednak jak mierze miernikiem (przypadkiem zwarłem dwie rożne nóżki kiedy szukałem zwarcia) zobaczyłem, ze miernik wskazuje mi od 9 do 20k Ohmow czy to znaczy, ze procek jest zepsuty?

    PS. zapomniałem napisać, że koszytam z STM32f10xx Nucleo jako programatora zewnętrznego.