Skocz do zawartości

Programowanie Nucleo STM32F103 z zewnętrznego programatora, System Workbench


Gramol1992

Pomocna odpowiedź

Jestem nowy na forum, więc witam wszystkich 🙂

Mój problem jest następujący. Mam 2 płytki Nucleo. Jedną z uszkodzonym mikrokontrolerem, a drugą z uszkodzonym programatorem. Uczę się STM'ów z kursu ELVISA, zatem korzystam ze środowiska programistycznego "System Workbench for STM32". Problem polega na tym, że jak podłącze sprawny programator ze sprawnym mikrokontrolerem(SWCLK, SWDIO, GND, 3,3V) to nie mogę programować za pośrednictwem Workbencha, pojawia się poniższy komunikat. Korzystając z programu ST-LINK Ultinity wiem że mam poprawnie zainstalowane sterowniki, gdyż program rozpoznaje mikrokontroler (screen w załączniku), jest możliwość zaprogramowania go, tylko jest problem z tym, że System Workbench po kompilacji nie aktualizuje pliku bin w pliku projektu (folder Debug). Dodam jeszcze, że na w pełni sprawnej płytce nucleo wszytko działało. Uprzejmie proszę o pomoc w rozwiązaniu jednego z tych problemów. 🙂

Open On-Chip Debugger 0.10.0-dev-00267-g884c33c (2016-03-16-12:22)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
srst_only separate srst_nogate srst_open_drain connect_assert_srst
srst_only separate srst_nogate srst_open_drain connect_assert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
Error: open failed
in procedure 'program' 
in procedure 'init' called at file "embedded:startup.tcl", line 473
in procedure 'ocd_bouncer'
** OpenOCD init failed **
shutdown command invoked
Link do komentarza
Share on other sites

Pierwsze pytanie - czy obie płytki są tego samego typu, tzn. NUCLEO-F103RB? Można oczywiście używać programatora z innego modelu Nucleo, ale są dwie wersje programatora: ST-Link/V2 i ST-Link/V2-1. Z tego co podpowiada wujek google, drivery czasem mają problemy z jedną lub drugą wersją.

Rozwiązaniem mogłoby być odinstalowanie i ponowne zainstalowanie sterowników - dla odpowiedniej wersji.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Co do JP1 to jedyny pin z programatora z którego mogę pociągnąć potencjał 3,3V. Po dołożeniu sygnału reset komunikat po próbie zaprogramowania jest następujący:

Open On-Chip Debugger 0.10.0-dev-00267-g884c33c (2016-03-16-12:22)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'.
Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD
adapter speed: 1000 kHz
adapter_nsrst_delay: 100
srst_only separate srst_nogate srst_open_drain connect_assert_srst
srst_only separate srst_nogate srst_open_drain connect_assert_srst
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : Unable to match requested speed 1000 kHz, using 950 kHz
Info : clock speed 950 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : STLINK v2 JTAG v28 API v2 SWIM v17 VID 0x0483 PID 0x374B
Info : using stlink api v2
Info : Target voltage: 0.017346
Error: target voltage may be too low for reliable debugging
Info : stm32f1x.cpu: hardware has 6 breakpoints, 4 watchpoints
Error: timed out while waiting for target halted
TARGET: stm32f1x.cpu - Not halted
in procedure 'program' 
in procedure 'reset' called at file "embedded:startup.tcl", line 478
in procedure 'ocd_bouncer'

** Unable to reset target **
shutdown command invoked

Elvis, mógłbyś podpowiedzieć jakie biblioteki są najistotniejsze by przejść Twój kurs. Znajomy mi polecił żebym spróbował ze środowiskiem Atolic (może dzięki niemu nie będzie problemów z tworzeniem plików bin/hex i uda się zaprogramować przy pomocy ST-LINK Ultinity).

Link do komentarza
Share on other sites

Error: target voltage may be too low for reliable debugging

Moim zdaniem nadal nie wszystko jest podłączone. Co do bibliotek, to kurs bazuje na StdPeriph, możesz używać dowolnego środowiska, ja pisząc kurs używałem "gołego" eclipse, dopiero później przeniosłem prorgamy do OpenSTM32.

Sprawdź, czy płytka nucleo zadziała zasilana z 3.3V - nie ma na niej przypadkiem stabilizatora z 5V? I jeszcze syngnał z programatora vcc trzeba podłączyć do procesora, inaczej będzie myślał, że coś jest źle.

Wydaje mi się, że takie same problemy będą w innych środowiskach, użycie Atolic-a raczej nie pomoże.

Link do komentarza
Share on other sites

Co do podłączenia powinno być wszystko ok. dioda LD3 świeci. Mierzyłem napięcia VDD na mikrokontrolerze wszystkie 4 wskazują wartość 3,27 V względem masy. Co ciekawe z podłączonym sygnałem reset ST-LINK nie chce się podłączyć z STM'em. Przy odłączeniu pinu reset komunikacja jest poprawna. Dodatkowo podłączyłem sygnał 3,3 V z pinem VDD_Target z listwy SWD i komunikat z Workbencha jest taki sam.

Link do komentarza
Share on other sites

Zgodnie z dokumentacją (UM1724) musisz odłączyć obydwie zworki z CN2, niestety nie do końca widzę na zdjęciu, czy tak zrobiłeś.

Poza tym wydaje mi się, że sugestia Elvisa odnośnie zasilania, to dobry trop. Spróbuj zasilić płytkę z mikrokontrolerem z zewnętrznego źródła i normalnie połącz VDD_TARGET z 3.3V na płytce, którą chcesz zaprogramować. Może być na przykład tak, że mierzysz sobie napięcie i niby wszystko się zgadza, ale w momencie jak zaczynasz programować, to programator pobiera więcej prądu i nie wyrabia.

Link do komentarza
Share on other sites

Piny CN2 są rozwarte. Trzymają się na skrajnych pinach nie zwierając niczego (próbowałem też bez nich skutek ten sam). Spróbuję odpalić układ z zewnętrznego napięcia 3,3 V. Czekam za elementami (już wcześniej zamówiłem) także jutro ew. w poniedziałek spróbuję zaprogramować na zewnętrznym napięciu.

Edit:

DZIAŁA 😃

Tzn. nie działa programowanie przez System Workbench, ale buduje plik .bin wystarczyło w Run Configurations zaznaczyć ustawienia tak, jak na rysunku poniżej, aby można było wgrywać wsad do mikrokontrolera za pomocą ST-LINK Ultinity. Komunikat System Workbecha z konsoli jest identyczny jak ten co już wcześniej wrzuciłem. Teraz uruchamiałem na zewnętrznym źródle zasilania (ale chyba nie miało to wpływu). Dziękuję Panowie za zainteresowanie moim problemem, i przy okazji słowa uznania dla Elvisa za napisanie kursu 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.