Czy interfejs Arduino może współpracować z urządzeniami USB bez osłony hosta USB?

Chcę podłączyć różne urządzenia USB do Arduino Uno (w szczególności gamepad i kamerę internetową, ale interesuje mnie ogólny przypadek) ). Czy jest to możliwe bez korzystania z osłony hosta USB, ponieważ Uno ma port USB i konwerter USB na port szeregowy? Mógłbym użyć tarczy, ale jestem ciekaw, czy / dlaczego jest to konieczne.

Witryna Sparkfun podaje, że:

SparkFun USB Host Shield zawiera wszystkie cyfrowe układy logiczne i analogowe niezbędne do zaimplementowania kontrolera urządzenia peryferyjnego / hosta USB o pełnej prędkości z Arduino.

Czy Arduino już tego nie zawiera, potrzebuje tylko odpowiedniego oprogramowania (chociaż oczywiście łatwiej jest korzystać z już napisanej biblioteki dla osłony hosta), czy też są ograniczenia sprzętowe?

Zgodnie z Czy zamiast osłony Ethernet dla arduino można użyć klucza USB Ethernet? (odpowiedź Majenko), teoretycznie można to zrobić za pomocą Due, ale nie za pomocą Uno . W takim razie, czy to dlatego, że Uno używa ATmega16U2 zamiast FTDI FT232RL do komunikacji USB?

Komentarze

  • Nie ' nie myślę, że to niemożliwe, USB jest rodzajem magistrali szeregowej z określonymi protokołami, tj. oznaczaniem urządzeń, rozdzielaniem urządzeń na określone zakresy czasowe (niektóre podobne protokoły jak jeden przewód). Myślę, że jedynym ograniczeniem jest szybkość, dlatego synchronizacja wszystkich poleceń i danych specyficznych dla USB jest przyczyną problemów.
  • @GeneralChaos You ' w porządku, to ' nie jest " niemożliwe " – ale jest to wysoce niepraktyczne. Istnieje programowa implementacja urządzenia USB (VUSB), które ' nie wymaga żadnego specjalnego sprzętu. To ' w najlepszym przypadku jest niepewne i prawie nie działa w najlepszych momentach. Nie ma powodu, dla którego nie można ' napisać odpowiednika hosta – jednak nigdy nie działałby on na niczym innym niż 1,5 MHz USB 1.0 " Niska prędkość ", więc nigdy nie można było rozmawiać z niczym innym niż zwykłą klawiaturą lub myszą. Rzeczy takie jak Ethernet lub kamery internetowe są całkowicie niemożliwe bez sprzętu hosta lub OTG, który Due ma wbudowany w główny układ.

Odpowiedź

Najpierw musisz nauczyć się podstaw działania USB.

W USB są dwie główne rzeczy: hosty i urządzenia.

Masz jeden host (zwykle komputer) i wiele urządzeń (takich jak Arduino, drukarki, skanery, kamery internetowe, klucze Wi-Fi itp.).

Bycie gospodarzem wymaga wiedzy o tym, jakie urządzenia zamierzasz podłączyć i jak się z nimi komunikować. Bycie urządzeniem oznacza po prostu komunikowanie się z hostem na swój własny sposób.

Jak widać, praca hosta jest znacznie bardziej złożona niż bycie urządzeniem.

Arduino to urządzenia . Małe chipy interfejsu USB, których używają, mają bardzo niski pobór mocy i mogą być tylko urządzeniem, nigdy hostem.

Jeśli chcesz podłączyć urządzenie do czegoś, musi to być host (uwaga: jestem celowo ignorując tutaj koncentratory).

Arduino Due wykorzystuje znacznie mocniejszy układ, który może być hostem (używając tak zwanego trybu On-The-Go).

Aby to zrobić z cokolwiek mniej wydajnego niż Due wymaga dodatkowego sprzętu, który jest specjalnie zaprojektowany jako host USB – i właśnie tam pojawia się osłona hosta USB. Posiada chip zaprojektowany specjalnie jako host USB, dzięki czemu można podłączyć urządzenie w to.

Żaden z chipów na Uno nie jest zaprojektowany jako host. Po prostu nie mają wystarczającej mocy.

Odpowiedź

Nie. USB ściśle rozróżnia role hosta i urządzenia. Kilka chipów mają bloki funkcjonalne, które mogą pełnić obie role, ale 8u2 / 16u2 nie są tego przykładem.

Typowe konwertery szeregowe USB, takie jak FT232, CP210x, CH340, PL2303, itp. są również ściśle urządzeniami i nie mogą być hosty

Istnieją niedrogie MCU z obsługą hosta, takie jak Kinetis KL25Z, ale aby użyć ich w najtańszej formie, potrzebujesz innego podejścia do oprogramowania (na przykład mbed zamiast Arduino) i dużo bardziej osobistego wysiłku. Teensy-LC jest powiązane, ale płacisz więcej za pomocnika ładowania kodu Arduino, niż za MCU, które uruchamia sam twój program.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *