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 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

janchar 17 Mar 2019 12:09 3369 23
REKLAMA
  • #1 17847946
    janchar
    Poziom 14  
    Posty: 190
    Pomógł: 1
    Ocena: 96
    Witam szanowne grono.
    Spotkałem się z takim problemem i nie umiem sobie z nim poradzić.
    Tworzę pewien projekt. Zainspirowany zastosowaniem procesora STM32 z tego tematu Link https://www.elektroda.pl/rtvforum/topic3484148.html postanowiłem go wykorzystać.
    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu
    Załadowałem bootloader i pięknie wszystko się ładowało i testowało. Problem powstał, gdy projekt przeniosłem na płytkę i nie mogłem załadować programu. Okazało się, że wykorzystywałem piny, które są połączone do USB - dokładnie PA11 i PA12.

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    Podczas testu tych pinów nie używałem.
    Wpadłem na pomysł, aby zaprogramować przez programator ST LINK V2.

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    Wszystko ładnie się programuje. Jednak proces testowania już nie.

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    Przy testowaniu wykorzystuje się terminal z portu szeregowego.

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    Programator ST LINK V2 nie uruchamia wirtualnego portu COM, przez co nie można uruchomić terminala.

    Czy ma ktoś jakiś pomysł lub zna inny driver dla tego programatora, który by taki port COM uruchomił pod ARDUINO. Zdaję sobie sprawę, że można to rozwiązać w inny sposób, jednak na początek chciałbym spróbować zrobić to standardowo.
  • REKLAMA
  • #2 17847984
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    janchar napisał:
    Programator ST LINK V2 nie uruchamia wirtualnego portu COM, przez co nie można uruchomić terminala.

    Jak podłączyłeś rzekomy VCOM na ST-LINK V2 do uruchamianej płytki? Pokaż schemat.
  • #3 17848067
    janchar
    Poziom 14  
    Posty: 190
    Pomógł: 1
    Ocena: 96
    Na drugim obrazku płytka STM32. Piny przeznaczone do programowania przez programator STLINK V2 połączone jeden do jeden czyli SWDIO na płytce do programatora o tej samej nazwie SWDIO. Podobnie SWCLK. Na koniec GND. Co do Vcc to użyłem 3.3V lub bez niego dając oddzielne zasilanie. Z tym nie było różnicy.
  • Pomocny post
    #4 17848077
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    janchar napisał:
    Na drugim obrazku płytka STM32. Piny przeznaczone do programowania przez programator STLINK V2 połączone jeden do jeden czyli SWDIO na płytce do programatora o tej samej nazwie SWDIO. Podobnie SWCLK.

    No to podłączyłeś SWD do programowania/debugowania, gdzie połączenia rzekomego VCOM?

    Dodano po 37 [sekundy]:

    PS
    Może poczytaj o ST-LINK V2/1
  • #5 17848123
    janchar
    Poziom 14  
    Posty: 190
    Pomógł: 1
    Ocena: 96
    Więcej połączeń nie robi się. Przynajmniej tak mi się wydaje.

    Gdy programowałem i testowałem używając załadowanego bootloadera, a połączony byłem poprzez port USB, driver tworzył wirtualny port COM.

    Ponadto jak wspomniałeś programowania/debugowania... mi właśnie chodzi o to debugowanie.

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu

    STM32 z Arduino i STLINK V2 - nie wykrywa portu COM po zaprogramowaniu
  • REKLAMA
  • #6 17848173
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    janchar napisał:
    Więcej połączeń nie robi się.

    Skoro tak twierdzisz to nie rób.

    janchar napisał:
    Gdy programowałem i testowałem używając załadowanego bootloadera, a połączony byłem poprzez port USB,

    No właśnie. Ale twierdzisz, że więcej połączeń się nie robi.

    Pomijając to, pokaż mi w instrukcji ST-LINK V2 gdzie piszą o VCOM. Domyślam się też, że zignorowałeś moją radę i nie czytałeś o ST-LINK V2/1. Cóż, skoro wiesz lepiej.
  • #7 17848252
    janchar
    Poziom 14  
    Posty: 190
    Pomógł: 1
    Ocena: 96
    Nie czytałem instrukcji o ST-LINK V2.

    Wydaje mi się (gdybym wiedział to bym nie zawracał głowy) że jest alternatywą programowanie używając portu USB, poprzez ST-LINK czy poprzez UART.

    Alternatywą, czyli jedna z metod.

    Programowałem poprzez UART aby załadować bootloader i zakończone było sukcesem. Testowania, czyli uruchomienia terminala nie przeprowadzałem, gdyż nie miałem takiej potrzeby.

    Poprzez port USB (po wcześniejszym załadowaniu bootloadera) ładowałem program i uruchamiałem terminal. Pełen sukces do momentu, gdy fizycznie użyłem PIN-y PA11 i PA12, czyli gdy coś do nich elektrycznie podłączyłem.

    Poprzez programator ST-LINK ładowałem program, lecz terminala już nie można.
  • REKLAMA
  • #8 17848254
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    janchar napisał:
    mi właśnie chodzi o to debugowanie.

    Do tego nie używa się VCOM ponadto Arduino IDE nie wspiera debugowania.

    janchar napisał:
    jest alternatywą programowanie używając portu USB, poprzez ST-LINK czy poprzez UART.

    Słyszysz, że dzwoni ale nie wiesz, w którym kościele.

    janchar napisał:
    Nie czytałem instrukcji o ST-LINK V2.

    Nie trzeba jej nawet czytać, wystarczy przeczytać jakie ma możliwości V/2 a jakie V2. Bez tego dalsza dyskusja jest bez sensu.

    janchar napisał:
    Pełen sukces do momentu, gdy fizycznie użyłem PIN-y PA11 i PA12, czyli gdy coś do nich elektrycznie podłączyłem.

    Wiesz do czego służą PA11 i PA12?

    Dodano po 2 [minuty]:

    janchar napisał:
    Poprzez programator ST-LINK ładowałem program, lecz terminala już nie można.

    I tak w kółko Macieju.
    Poczytaj o ST-LINK V2 i V2/1.
    Dowiedz się o USB więcej niż że jest to interfejs szeregowy.
    Co to VCOM, jak działa, co to mostek USB-UART.
    Poczytaj do czego służy JTAG i SWD.
    Zapoznaj się z bootloadem w STM32.
  • #9 17848384
    janchar
    Poziom 14  
    Posty: 190
    Pomógł: 1
    Ocena: 96
    LChucki napisał:
    Arduino IDE nie wspiera debugowania.

    Debugowanie przeprowadza się poprzez wyprowadzanie zmiennych na UART
    czyli dalej na terminal. Nie chodzi mi o wykonywanie krokowe instrukcji, gdyż tak też można. Idąc tym tropem można przeprowadzać debugowanie za pomocą diody świecącej. Jednak w tym przypadku staje się to męczące.

    LChucki napisał:

    Słyszysz, że dzwoni ale nie wiesz, w którym kościele.

    Nie bardzo rozumie. Gdybym wiedział, to bym nie pytał.

    LChucki napisał:

    Nie trzeba jej nawet czytać, wystarczy przeczytać jakie ma możliwości V/2 a jakie V2. Bez tego dalsza dyskusja jest bez sensu.

    Chyba będę musiał sięgnąć do innych źródeł.

    LChucki napisał:

    Wiesz do czego służą PA11 i PA12?

    W moim przypadku wykorzystuję je do sterowania tranzystorami n-mosfet.
    Ponadto wynika z dokumentacji, że są to piny D+ i D-, które mogą być użyte do portu USB.

    Dodano po 2 [minuty]:

    LChucki napisał:

    Poczytaj o ST-LINK V2 i V2/1.
    Dowiedz się o USB więcej niż że jest to interfejs szeregowy.
    Co to VCOM, jak działa, co to mostek USB-UART.
    Poczytaj do czego służy JTAG i SWD.
    Zapoznaj się z bootloadem w STM32.

    Im dalej w las, tym więcej drzew.
    Chyba nie o to mi chodzi. Dziękuję za pomoc i za poświęcony czas.
  • #10 17848457
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    janchar napisał:
    LChucki napisał:
    Arduino IDE nie wspiera debugowania.

    Debugowanie przeprowadza się poprzez wyprowadzanie zmiennych na UART

    To uruchom ten UART w swoim programie i podłącz przejściówkę USB-UART albo użyj ST-LINK V2/1.

    janchar napisał:

    Nie chodzi mi o wykonywanie krokowe instrukcji, gdyż tak też można.

    Pułapki, praca krokowa, podgląd zmiennych to prawdziwe debugowanie a nie wypluwanie zmiennych na UART.

    janchar napisał:

    Idąc tym tropem można przeprowadzać debugowanie za pomocą diody świecącej.

    Do tego dążysz używając UART zamiast debugera.

    janchar napisał:

    LChucki napisał:

    Słyszysz, że dzwoni ale nie wiesz, w którym kościele.

    Nie bardzo rozumie. Gdybym wiedział, to bym nie pytał.

    Napisałem z jakimi tematami masz się zapoznać. Nadal nie przeczytałeś o różnicach między ST-LINK V2 a V2/1. Wiedza sama nie przyjdzie.


    janchar napisał:

    LChucki napisał:

    Wiesz do czego służą PA11 i PA12?

    W moim przypadku wykorzystuję je do sterowania tranzystorami n-mosfet.
    Ponadto wynika z dokumentacji, że są to piny D+ i D-, które mogą być użyte do portu USB.

    Więc czemu się dziwisz, ze gdy miałeś pseudo debugowanie przez CDC i wyłączyłeś USB, to owo debugowanie przestało działać? Jak w Arduino UNO wykorzystasz TX0 i RX0 do sterowania tranzystorami to monitor będzie działać?
    <ciach>

    LChucki napisał:

    Poczytaj o ST-LINK V2 i V2/1.
    Dowiedz się o USB więcej niż że jest to interfejs szeregowy.
    Co to VCOM, jak działa, co to mostek USB-UART.
    Poczytaj do czego służy JTAG i SWD.
    Zapoznaj się z bootloadem w STM32.

    Im dalej w las, tym więcej drzew.
    [/quote]
    Nie masz podstaw a bez tego możesz liczyć najwyżej na szczęście. Jak zrozumiesz różnicę pomiędzy UART a USB, co robi mostek USB-UART to wszystko stanie się proste.

    Dodano po 2 [minuty]:

    rs6000 napisał:
    a tu porada sprowadza się do do tego, aby znalazł rozwiązanie sam

    Nie znalazł sam, tylko zaznajomił się z tym co niezbędne. Jak ktoś nie odróżnia USB wbudowanego w uC od mostka USB-UART to jak mam pomóc? <ciach>

    Moderowany przez Marek_Skalski:

    Zbędne uwagi usunąłem.

  • Pomocny post
    #11 17848744
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #12 17848750
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    khoam napisał:
    Nie można wykorzystać ST-LINK jako monitor portu szeregowego w Arduino IDE,

    Ale ST-LINK V2/1 tak.

    Moderowany przez Marek_Skalski:

    Brak związku z tematem, ponieważ Autor nie posiada tego urządzenia. Zostawiam w temacie, aby zachować kontekst kolejnych postów.

  • REKLAMA
  • Pomocny post
    #13 17848766
    Konto nie istnieje
    Poziom 1  
  • #14 17848894
    janchar
    Poziom 14  
    Posty: 190
    Pomógł: 1
    Ocena: 96
    khoam napisał:

    Nie można wykorzystać ST-LINK V2 jako monitor portu szeregowego w Arduino IDE, analogicznie (w dużym przybliżeniu) z tego samego powodu, z którego nie zadziała monitor portu szeregowego w Arduino IDE z programatorem USBasp w wypadku płytki Arduino z AVR.


    Co prawda nie tego się spodziewałem, ale skoro tak mówisz, to tak to przyjmuję. Ja jestem za cienki na to, aby napisać driver pod windowsa. Przyjmuję więc, że się nie da i w takim razie muszę sobie inaczej z tym poradzić.
    Dziękuję za odpowiedź na nurtujące mnie pytanie i pozostaje mi tylko zamknąć temat, aczkolwiek zawsze warto poczytać o czymś nowym.
    Dziękuję wszystkim.
  • #15 17848905
    Konto nie istnieje
    Poziom 1  
  • #16 17848909
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    janchar napisał:
    khoam napisał:

    Nie można wykorzystać ST-LINK V2 jako monitor portu szeregowego w Arduino IDE, analogicznie (w dużym przybliżeniu) z tego samego powodu, z którego nie zadziała monitor portu szeregowego w Arduino IDE z programatorem USBasp w wypadku płytki Arduino z AVR.


    Co prawda nie tego się spodziewałem, ale skoro tak mówisz, to tak to przyjmuję. Ja jestem za cienki na to, aby napisać driver pod windowsa.

    Nic nie trzeba pisać pod Windę. Gdybyś poczytał o samym ST-LINK V2-1 to już wiele byś wiedział. Napisałem też tematy innych zagadnień, z którymi trzeba się zapoznać. Niestety, choć piszesz
    janchar napisał:
    Jaka jest różnica pomiędzy UART i USB wiem.

    to tak do końca tego nie wiesz i w tym cały problem.
  • #17 17848918
    Konto nie istnieje
    Poziom 1  
  • #18 17848927
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    khoam napisał:
    Serial w Arduino HAL nie służy tyle debugowaniu, co monitorowaniu na bieżąco podstawowych/istotnych parametrów programu w trakcie jego działania.

    Rozwijając temat, debugera używam zawsze i wszędzie ale poza nim, przez USB lub UART wysyłam informacje diagnostyczne i daję możliwość mniejszej lub większej kontroli nad programem. Dlatego w moich projektach znajdują się "dziwne" złącza np do RX, TX. Bywa, że wyświetlam informacje na LCD przyłączanym do SPI lub I2C, którego w docelowym urządzeniu nie ma, pozostaje tylko złącze.

    UART, USB czy inne złącze diagnostyczne uzupełnia debuger, niestety, nie ma możliwości, aby zastąpiło ono debuger w prosty sposób. Można napisać program monitora, ale czy warto, przy cenie ST-LINK? Ponadto, dobry monitor, pochłonąłby pewnie z 30kB, przeważnie nie dałby możliwości dynamicznego dodawania pułapek, a sprzętowy debuger nie zwiększ objętości kodu wynikowego wcale lub nieznacznie a pułapki można dodawać.

    Dodano po 7 [minuty]:

    khoam napisał:
    LChucki napisał:
    Taniej kupić

    Taniej wyjdzie zakupienie konwertera USB/UART i podłączenie go do RX1/TX1.

    Jeszcze taniej (0zł) wykorzystać sprzętowe USB w uC no ale tu wiedza na poziomie wydaje mi się, ze odróżniam USART od USB nie wystarczy chyba, że Arduino coś tam ułatwia.
  • #19 17849107
    Konto nie istnieje
    Poziom 1  
  • #20 17849152
    LChucki
    Poziom 31  
    Posty: 1940
    Pomógł: 104
    Ocena: 379
    khoam napisał:

    LChucki napisał:
    Jeszcze taniej (0zł) wykorzystać sprzętowe USB w uC no ale tu wiedza na poziomie wydaje mi się, ze odróżniam USART od USB nie wystarczy chyba, że Arduino coś tam ułatwia.

    No nie wiem, czy to się tak da zrobić, jeżeli jednocześnie chcemy korzystać z ST-LINK oraz monitorować pracę urządzenia przez Serial w Arduino HAL, ale popraw mnie i wyjaśnij nieco więcej, jeśli się mylę.

    Po podłączeniu ST-LINK V2-1 w systemie pojawią się 3 urzadzenia:
    - ST-LINK - nie trzeba wyjaśniać.
    - VCOM - ST-LINK V2-1 ma wyprowadzone TX i RX.
    - Pamięć masowa - wystarczy skopiować do niej BIN i jego zawartością zastanie zaprogramowany uC.

    Dodano po 1 [minuty]:

    khoam napisał:
    LChucki napisał:
    UART, USB czy inne złącze diagnostyczne uzupełnia debuger, niestety, nie ma możliwości, aby zastąpiło ono debuger w prosty sposób. Można napisać program monitora, ale czy warto, przy cenie ST-LINK? Ponadto, dobry monitor, pochłonąłby pewnie z 30kB, przeważnie nie dałby możliwości dynamicznego dodawania pułapek, a sprzętowy debuger nie zwiększ objętości kodu wynikowego wcale lub nieznacznie a pułapki można dodawać.


    Wszystkie te piękne rzeczy, o których piszesz na temat debuggera nie mają wsparcia w Arduino IDE, którego używa Autor.
    Dopóki Autor nie przesiądzie się na inne IDE

    Jak zabiera się za ARM to chyba logiczne, ze długo z Arduino IDE nie pociągnie i przesiądzie się na normalne IDE.
  • #21 17849180
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #22 17849520
    Konto nie istnieje
    Poziom 1  
  • #23 17849571
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napotkał problem z wykrywaniem portu COM po zaprogramowaniu płytki STM32 przy użyciu programatora ST-LINK V2. Po załadowaniu bootloadera i podłączeniu przez USB, port wirtualny COM działał poprawnie, jednak po fizycznym użyciu pinów PA11 i PA12, które są związane z interfejsem USB, testowanie programu stało się niemożliwe. Uczestnicy dyskusji sugerowali, aby użytkownik zapoznał się z różnicami między ST-LINK V2 a ST-LINK V2-1, a także z zasadami działania portów UART i USB. Wskazano, że ST-LINK V2 nie obsługuje monitorowania portu szeregowego, co wymaga użycia konwertera USB-UART. Użytkownik został również zachęcony do rozważenia przejścia na inne środowiska programistyczne, takie jak PlatformIO, które oferują lepsze wsparcie dla debugowania.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA