Különböző USB-eszközöket szeretnék csatlakoztatni egy Arduino Uno-hoz (konkrétan egy játékvezérlőhöz és egy webkamerához, de az általános eset érdekel) ). Lehetséges-e ez az USB gazdagép védelme nélkül, mivel az Uno rendelkezik USB-porttal és USB-soros átalakítóval? Használhatnám a pajzsot, de kíváncsi vagyok, hogy miért / miért szükséges.
A Sparkfun webhely kijelenti, hogy:
A SparkFun USB Host Shield tartalmazza az összes digitális logikát és analóg áramkört, amelyek szükségesek ahhoz, hogy teljes sebességű USB perifériát / hosztvezérlőt hozzanak létre az Arduinóval.
Az Arduino még nem tartalmazza ezt, csak a megfelelő szoftverre van szüksége (bár nyilván könnyebb használni a már írt könyvtárat a Host Shield számára). Vagy vannak hardveres korlátozások?
A Lehet-e egy Ethernet USB Dongle Ethernet pajzs helyett az arduino számára? (Majenko válasza), elméletileg elvégezhető a Due-vel, de az Uno-val nem . Ebben az esetben ez azért van, mert az Uno az ATmega16U2-t használja az FTDI FT232RL helyett az USB-kommunikációhoz?
Megjegyzések
- Nem ' nem gondolja, hogy lehetetlen, az USB egyfajta soros busz, amely speciális protokollokkal rendelkezik, vagyis olyan eszköz, amely felosztja az eszközöket meghatározott időtartományokra (néhány hasonló protokoll, például egy vezeték). Azt hiszem, az egyetlen korlátozás a sebesség, ezért az összes USB-specifikus parancs és adat szinkronizálása okoz problémát.
- @GeneralChaos Te ' igazad van, igaz A ' nem " impossble " – de nagyon kivitelezhetetlen. Van egy olyan USB-eszköz (VUSB) szoftveres megvalósítása, amelyhez nincs szükség ' külön hardverre. ' a legjobb esetben is zord, és a legjobbkor is alig működik. Nincs oka annak, hogy ne tudna ' írni gazdagép-megfelelőt – azonban soha nem működhet más, mint az 1,5 MHz-es USB 1.0 " Kis sebesség ", így soha nem tudott mással beszélni, csak egy egyszerű billentyűzettel vagy egérrel. Olyan dolgok, mint az Ethernet vagy a webkamerák, teljesen lehetetlenek Host vagy OTG hardver nélkül, amelyet a Due beépített a fő chipbe.
Válasz
Először először meg kell tanulnia az USB működésének alapjait.
Az USB-n két fő” dolog “van: Gazdák és Eszközök.
egy gazdagép (általában a számítógéped) és sok eszköz (például Arduinos, nyomtatók, szkennerek, webkamerák, WiFi hardverkulcsok stb.).
Gazdának lenni azt jelenti, hogy tudják, milyen eszközöket fognak hozzád csatolni. és hogyan lehet velük kommunikálni. Eszköznek lenni azt jelenti, hogy csak a saját módon kommunikálsz a gazdagéppel.
Amint láthatod, sokkal összetettebb munka hosztnak lenni, mint eszköznek lenni.
Az Arduinos eszközök . Az általuk használt kis USB interfész chipek nagyon alacsony energiafogyasztásúak, és csak eszközök lehetnek, soha nem gazdagépek.
Ha valamihez csatlakoztatni akarsz egy eszközt, annak hostnak kell lennie (megjegyzés: szándékosan vagyok figyelmen kívül hagyva az itt található hubokat).
Az Arduino Due sokkal erősebb chipet használ, amely képes gazda lenni (az úgynevezett On-The-Go módot használva).
Ehhez bármi, ami kevésbé hatékony, mint a Due, további hardverre van szüksége, amelyet kifejezetten USB hosztnak terveztek – és itt jön be az USB hoszt pajzs. Van egy chipje, amelyet kifejezetten USB hosztnak terveztek, így csatlakoztathat egy eszközt
Az Uno egyik chipjét sem úgy tervezték, hogy gazda legyen. Csak nincs erejük.
Válasz
Nem. Az USB szigorúan megkülönbözteti a gazdagép és az eszköz szerepét. Néhány chip rendelkeznek funkcionális blokkokkal, amelyek képesek bármelyik szerep végrehajtására, de a 8u2 / 16u2 nem példa erre.
Az olyan tipikus USB soros átalakítók, mint az FT232, CP210x, CH340, PL2303 stb., szintén szigorúan eszközök és képtelenek gazdagépek
Vannak olcsó gazdagép-képes MCU-k, mint a Kinetis KL25Z, de a legolcsóbb formában történő használatukhoz más szoftveres megközelítésre (például mbed helyett Arduino) és sokkal több személyes erőfeszítésre van szükség. A Teensy-LC kapcsolatban áll, de többet fizet az Arduino kódbetöltő segítőért, mint az ön programját futtató MCU-ért.