Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32 USB device - żądanie deskryptora urządzenia nie powiodło się

30 Paź 2017 13:40 942 6
  • Poziom 16  
    Używam STM32F7-45 na własnej płytce i próbuje zrobić USB Device podpinane do PC (próbowałem (osobno) virtual COM i HID).

    Ale po wpięciu do PC płytka jest wykrywana (po chwili) z błędem "Nieznane urządzenie - żądanie deskryptora urządzenia nie powiodło się".

    Elektrycznie (PCB):
    - Myślę, że samo PCB nie jest tutaj błędem. Prowadzę po prostu sygnały D+ i D- z konektora do uC, obie ścieżki mają tę samą, krótką długość. I tyle.
    Mam jeszcze pull-up 1.5K, który i tak nie jest potrzebny w STM32 (bo ten ma w środku). Zresztą próbowałem kilka razy z przylutowanym pullup'em i bez. Plus Vcc z USB idzie do VBUS.
    Sprawdziłem dokładnie łączność (od pinów uC do końca kabla USB) i wszystko styka.

    Kod:
    Używam HAL i programu wygenerowanego z STM32CubeMx, który złączyłem ze swoim projektem. Ogólnie rzecz biorąc - program się zacina.

    1) Po wykonaniu linii (z biblioteki) USBx->GAHBCFG |= USB_OTG_GAHBCFG_GINT;. Wiem to, bo dawałem printf() przed i za i tylko pierwszy printf coś printuje.
    Nie rozumiem w ogóle jak program może utknąć na linii ustawiającej bit w rejestrze.
    W każdym razie, jak wyłączę wykrywanie VBUS, to program sie już tam nie zacina i kończy całą inicjalizacje.

    2) Ale wtedy program wykonuje trochę cykli (np. wypisze coś na UART i zaświeci diodę) i potem się zacina. I tyle. Ta dioda powinna migać w nieskończonej pętli w main, a tylko się zaświeci i koniec. Tak jakby program wskoczył do jakiegoś przerwania i tam został.
    Ale w każdym handlerze na błędy (jak hard fault itp) mam dane zapalanie diody błędu, a ta sie nie zapala, więc nie wiem gdzie miałby skoczyć.

    - Po Virtual COM, próbowałem z HID, ale to samo zachowanie.
    - Jeśli zasilę płytkę z ładowarki (tj. nie podpinam jej do PC) to program sie nie zacina i działa normalnie.

    Siedziałem cały dzień nad tym i nie wiem gdzie może być błąd...
  • PCBway
  • Pomocny post
    Użytkownik usunął konto  
  • PCBway
  • Specjalista - Mikrokontrolery
    Zaktualizuj CubeMX. Wersje 4.22 mają poważne błędy. Upewnij się, że masz wyłączoną opcję VBUS Sensing w oknie konfiguracji urządzenia USB.
  • Poziom 16  
    Ściągałem CubeMX parę dni temu, więc chyba jest najnowsza.
    Spróbuje jeszcze użyć tego przykładu z HALa a nie CubeMX, zobaczymy..
  • Użytkownik usunął konto  
  • Specjalista - Mikrokontrolery
    "Parę dni temu" to np. 23.10 - błędna wersja 4.22 lub 25.10 - mniej błędna wersja 4.23. Dostałeś jeszcze jedną radę nt. ustawnienia VBUS sensing w dwóch miejscach (sprzęt i oprogramowanie) - zareagowałeś jakoś na te rady poza niefrasobliwym odbiciem?
  • Poziom 16  
    @Piotrus_999 Dzięki, to była dobra sugestia. Ściągnąłem STM32F7Cube i użyłem przykładu z tej paczki i wszystko śmiga jak należy.

    Także myślę, że temat rozwiązany. Ważne, że hardware jest ok, kod sobie będę przerabiał powoli.

    @BlueDraco Wybacz. Niczego nie miałem zamiaru odbijać. Jakoś założyłem po prostu, że mówisz o znacznie starszej wersji. A o VBUS sensing pisałem w pierwszym poście. Tak czy inaczej już sie rozwiązało.