Skocz do zawartości

Pomocna odpowiedź

Napisano

 Hej, dopiero zaczynam swoją przygodę z mikrokontrolerami STM i mam kilka pytań odnośnie obsługi USB. Większość płytek Nucleo ma wbudowane wbudowany port USB pod programator i komunikację UART. Co jednak w przypadku, gdy chciałbym uruchomić coś jako HID, tak aby przykładowo STM udawał klawiaturę. W tych bardziej rozbudowanych płytkach umieszczany jest dodatkowy port USB i jak rozumiem w takim przypadku problemu nie ma. Co jednak w przypadku mniejszych płytek, takich jak ta. W opisie można znaleźć, że wspiera ona USB, jednak nie do końca rozumiem w jaki sposób. Czy chodzi o pojedynczy wbudowany port, czy któreś z wyprowadzeń może obsługiwać dodatkowo USB i potrzebne jest zewnętrzne złącze, które trzeba sobie "dolutować"? 

(edytowany)

No to piszemy...

  1. USB wymaga bardzo dokładnego taktowania rdzenia. Niektóre STM32 dają radę na wbudowanych zegarach (np. L432KBU6), a niektóre wymagają zewnętrznego kwarcu (F103CBT6). Z reguły lepiej jest podłączyć zewnętrzny kwarc, co na niektórych płytkach Nucleo wiąże się z przestawianiem zworek na spodzie płytki (powinno być to opisane w dokumentacji konkretnego modelu).
  2. Do tego USB ma konkretne specyfikacje (w zależności od wersji). W przypadku 1.1FS wymaga, by obie ścieżki miały odpowiednią rezystancję ścieżek i "termination resistors", w przypadku STM32 zwykle 22R, które niektóre modele mają wbudowane (trzeba sprawdzić w DS czy takie posiada). Dodatkowo niezbędny może okazać się rezystor 1.5K podciągający linię D+ do 3V3, który jest używany do rozpoznawania prędkości urządzenia (też czasami są wbudowane, a czasami są osobne).
  3. W STM32 CubeIDE musisz ustawić odpowiedni rdzeń dla USB (w Twoim przypadku HID) i liczyć, że wszystko będzie działać poprawnie... 😉 
  4. Tak, będziesz potrzebować zewnętrznego złącza USB (najlepiej takie na kabelku i to dość krótkim, co by impedancja nie spowodowała problemów z sygnałem, ale 1.1FS ma dość spory zapas na wszystkie problemy).

A to i tak pewnie nie wszystko tylko najważniejsze problemy z USB... 😄 

Interesuje cię UM2505 dla MB1367.

Edytowano przez H1M4W4R1
  • Lubię! 1
14 minut temu, _LM_ napisał:

Proponuję zaopatrzyć się w popcorn, trochę czasu i coś do robienia notatek 😉

Masochista jeden... robić LL jak STM ma biblioteki HAL do HID'a xD

  • Lubię! 1

Moim zdaniem masochizmem jest używanie HAL do USB. To delikatnie mówiąc niezbyt dobrze i prosto napisana biblioteka...

Natomiast na rejestrach można sobie zrobić pięknie działającego HID-a w moment 🙂

  • Lubię! 2
22 godziny temu, H1M4W4R1 napisał:

USB wymaga bardzo dokładnego taktowania rdzenia.

Przesąd 😉

Kiedyś się bawiłem biblioteką LUFA na avr i działało nawet na wewnętrznym zegarze RC (po programowym dokalibrowaniu)

Ale fakt że z kwarcem 12MHz wszystko jest łatwiejsze

Większość STM32 nawet high-speed (480Mbps) nie obsługuje o 3.0 i nowszych nie ma nawet co marzyć.

Natomiast full-speed, czyli 12Mbps jest obsługiwane przez większość modeli i pozwala zapoznać się z możliwościami jakie oferuje USB. Bardzo fajny interfejs do nauki zanim się zabierze za coś bardziej nowoczesnego jak USB 3.1, albo PCIe.

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...