Jste zde

Co se skrývá pod komunikací označenou jako USB OTG ?

USB OTG, neboli dle IEEE USB On-The-GO (někdy se však uvádí i USB On-To-Go), je přidaná specifikace do klasického USB standardu, která do klasického formátu USB komunikace typu Master - Slave (Host-Device) přináší možnost přímého přenosu dat typu bod-bod (point-to-point), tedy něco podobného jako u FireWire. Pokud se však podíváme pod pokličku specifikace OTG, zjistíme, že nejde o nic převratného, spíše jde jen o malou úpravu běžné USB komunikace, která se jako bod-bod jen tváří.

V poslední době se stal hitem zvláště u spotřební elektroniky a multimediálních přístrojů na první pohled tajuplný režim komunikace pod USB označený jako OTG. Téměř v každém popisu zařízení, kde je USB OTG komunikace implementována se můžete dočíst, že jde o schopnost vzájemné point-to-point (peer-to-peer) komunikace dvou periferních zařízení bez potřeby intervence počítače nebo jiného nadřazeného systému. Například mohou přímo mezi sebou komunikovat dva mobilní telefony, nebo fotoaparát či kamera s tiskárnou nebo s externím diskem, kam přímo uloží nově nasnímané obrázky či video, bez toho, aby se musely jakkoliv připojovat k PC. Někde je také režim USB OTG přirovnáván ke komunikaci FireWire, která již přímou komunikaci typu bod-bod dvou periferních zařízení podporuje. Vše je pravda, ale s tím rozdílem, že i když komunikace v režimu OTG navenek připomíná rovnocennou komunikaci bod-bod, pokud se podíváme pod pokličku tohoto režimu, který dnes podporuje již mnoho různých zvláště 32bitových MCU, zjistíme, že stále jde o klasický USB přenos dat typu Master-Slave, pouze upravený tak, aby se zařízení mohlo adaptabilně dle požadované situace chovat jako Host (Master) nebo jako Device (Slave). Doposud totiž mikrokontroléry a tedy i všechna zařízení, která je využívala (MP3 přehrávače a další podobná malá mobilní zařízení), byly v USB komunikaci v pozici Slave, které „poslouchaly“ příkazy řídícího počítače (Host – Master), který má implementované plné UHCI/OHCI USB řadiče a komunikaci řídí. Nebylo tedy možné vzájemně propojit periferní „Slave“ přístroje (MCU), protože zde nebyl prostředek, který by přenos dat zahájil a řídil. To i přes značnou popularitu a rozšířenost USB komunikace byla „černá kaňka na kabátu USBčka a umožňovala žít jeho konkurentovi – komunikaci FireWire, která to umožňovala.

Jak tedy OTG režim prakticky funguje ?

Jak již bylo uvedeno výše, není režim OTG kdovíjaký zázrak, protože stále zachovává USB vlastní komunikační model Host/Device (Host/Periferie či Master/Slave, jak chcete), kde jedno nadřazené Host zařízení (dříve obvykle PC) „promlouvá a oslovuje“ k němu připojená periferní zařízení a přikazuje jim, co mají udělat (poslat data, přijmout data, přejít do sleep módu apod.). OTG však do USB řadičů (včetně těch uvnitř různých MCU) přínáší tzv. DRD (Dual-Role Device). To je schopnost provozovat řadiče jak v režimu Host (Master), tak i v režimu Device (Slave) a navíc i schopnost během komunikace s jiným zařízením podporující OTG se mezi těmito dvěma režimy přepínat, samozřejmě až po „dohodě“ se svým protějškem na druhé straně kabelu, protože vždy jeden musí pracovat jako Host. Proto musí také druhé zařízení podporovat OTG. Jinak samozřejmě například mikrokontrolér s USB OTG může komunikovat s mikrokontrolérem s klasickým USB v režimu slave, ale pak se musí vždy chovat jen jako Host, nebo v případě komunikace s PC se musí zase chovat jen jako Slave.

Klasické USB Slave rozhraní periferního zařízení se vyznačuje zapojením dle obrázku 1, kde USB Controller může reprezentovat jak samostatný USB řadič, tak USB rozhraní integrované v MCU, FPGA nebo nějaké ASIC obvodu. Řadič je napájený z USB vodičů VBUS a GND, přičemž napájecí napětí vždy poskytuje Host USB řadič, čímž má Slave řadič pořád pod přímou kontrolou. Zároveň se napětí za 3.3V stabilizátorem přes rezistory 1500 Ohmů přivádí na datové komunikační vodiče D+ a D-. Pull up rezistory pak signalizují Host řadiči, že periferie je připojena ke sběrnici a také určují komunikační rychlost USB rozhraní (napětí přivedené na svorku D+ označuje plnou komunikační rychlost (full speed), zatímco na svorce D- indikuje nízkou rychlost (low speed)). Na druhém straně kabelu pak Host řadič nebo USB Hub má na vodiče D+ a D- připojené 15 kohmové pulldown rezistory, aby ty pullup rezistory mohly být detekovány.

Obr. 1 Blokové schéma konstrukce běžného USB rozhraní periferie (v režimu Device=Slave)

Pokud tedy má být USB rozhraní univerzální (mít schopnost DRD), tedy se chovat jako Host i jako Device (Slave), musí nejen mít implementované i zmíněné 15kohmové pulldown rezistory a musí umět napájet USB sběrnici, ale také musí obsahovat i následující komunikační funkce pro řízení komunikace:

  • Posílat startovací pakety SOF (Start of Frame)
  • Posílat pakety SETUP, IN a OUT
  • Plánovat přenosy v rámci 1 ms USB rámců
  • Poskytovat resetovací signál USB reset
  • Poskytovat řízení napájení (USB power management)

Mimo to, aby bylo možné zajistit softwarové přepínání mezi režimy Host a Device, OTG vyžaduje další přidané obvody pro zajištění následujících protokolů, které komunikačně OTG režim zajišťují:

  • HNP (Host Negotiation Protocol)
  • SRP (Session Request Protocol)

 

Host Negotiation Protocol

Zařízení využívající OTG tedy pracuje buď jako řídící (Host) nebo periferní (Slave). V terminologii standardu OTG se zařízení, které se po provedení inicializace vždy automaticky zapne do režimu Host se označuje jako A-zařízení (A-Device) a zařízení, které se přednostně po spuštění nahodí do režimu periferie je pak B-zařízení (B-Device). Důležitá jsou zde právě slova „po provedení inicializace“, protože i když je OTG režim duální, musí být vždy pro dvě vzájemně propojená zařízení po zapnutí napájení přesně dáno, kdo bude Host a kdo periferie. Aby nikdy nemohlo vzniknout v tomto směru nedorozumění, je to dáno hardwarově právě propojovacím kabelem, kde zapojení jeho obou konektorů není souměrné (viz obrázek 3).

Zatímco zařízení s USB OTG má definován 5vývodový konektor mini-AB, přičemž správný propojovací kabel má na jedné straně tzv. konektor mini-A a na druhé straně konektor mini-B. Rozdíl je v tom, že zatímco mini-A má vývod označený jako ID uzemněný, mini-B ho má rozpojený. Zařízení (strana) s uzemněným ID pinem tak se vždy po inicializaci nastaví jako Host (A-zařízení), zatímco druhé zařízení do režimu periferie (B-zařízení). A-zařízení pak provádí i napájení sběrnice. Praktickou potřebu přepínání (protokolu HNP) pak demonstruje například propojení fotoaparátu a tiskárny. V případě, že kabel bude zapojen tak, že jako A-zařízení bude inicializována tiskárna. To je však v tomto případě špatně, protože foťák (B-zařízení) má driver k řízení tisku. Proto místo toho, aby musel uživatel otáčet kabel, si raději zařízení HNP protokolem pozice vymění. Pouze však z pohledu řízení. Jinak z pohledu napájení, které je definováno hardwarově kabelem, bude napájení nadále provádět tiskárna. To je v tomto případě i výhoda, protože zatímco tiskárna je napájena ze sítě 230 V, foťák obvykle z baterií a po USB se může během tisku třeba i dobíjet. Zde je tak jasně vidět užitečnost HNP protokolu.

 

Obr. 2 Příklad použití USB OTG - propojení tiskárny (Printer) s fotoaparátem obashující tiskový driver

Obr. 3 Rozdílná konstrukce USB konektoru Mini A a Mini B

Obr. 4. Praktické provedení univerzálního USB konektoru miniAB

Session Request Protocol

SRP je druhý protokol zavedený OTG, který poskytuje B-zařízení schopnost „probudit“ A-zařízení, které napájí sběrnici a tedy určuje, kdy se bude komunikovat, z nízkopříkonového sleep režimu. Například obrázek 4 může představovat dva propojené mobilní telefony a pokud nedochází k přenosu dat (například synchronizaci adresáře) zapne A-zařízení sleep mód. Pokud však někdo na mobilu reprezentující B-zařízení stiskne tlačítko a je potřeba přenést data, vyšle SRP puls po vodiči D+, na který druhý mobil zareaguje probuzením, připojením napájení na vodič VBUS a zahájením komunikace. Stejně to funguje, i když si díky HNP pozice prohodí a sběrnici tak napájí zařízení pracující v periferním režimu (viz tiskárna v předchozím příkladu). Pouze následnou komunikaci pak zahajuje již druhé zařízení.

 

Obr. 5 Mobilní telefon vlevo, i když je v pozici B-zařízení (dle připojeného konce kabelu) a tedy neřídí napájení USB sběrnice, může SRP pulsem A-zařízení probudit ze sleep módu a tak iniciovat potřebu komunikace.

Blokové schéma zapojení USB řadiče / transceiveru s OTG

Pokud se vezmou v potaz všechny výše uvedené informace, vyplyne nám z toho následující blokové schéma USB OTG transceiveru - viz obrázek 5. Přepínač PERIPH a HOST provádějí připnutí příslušných pull up nebo pull down rezistorů. Blok VBUS COMPARATOR hlídá přítomnost napětí, pokud zařízení pracuje jako Host (A-zařízení). Naopak přepínač SRP se využije v režimu periferie (Slave).

Obr. 6 Blokové schéma USB rozhraní s funkcí OTG, tedy se schopností pracovat v režimu Host (Master) i Device (Slave periferie)

Závěr

USB OTG představuje zajímavou a praktickou funkci, díky které lze dvě jinak periferní zařízení bezproblémů vzájemně propojit a například z foťáku přetáhnout fotografie přímo do externí databanky. Oba stroje však musí funkci OTG podporovat. Samozřejmé však je, že přístroj s USB OTG může komunikovat jako s přístrojem, kde USB pracuje jen jako Host (PC) nebo s klasickým periferním zařízením. Pak jsou samozřejmě ze hry vyřazeny protokoly HNP i SRP.

 

Antonín Vojáček

DOWNLOAD & Odkazy

Hodnocení článku: 

Komentáře

OTG=On-The-Go ("za běhu"), On-To-Go=nesmysl.
Jak máme jako čtenáři HW serveru věřit, že se jedná o váš vlastní článek a že víte o čem píšete, když ani nevíte, jak se to jmenuje?

Ja bych na Vasem miste byl s tim hodnocenim trochu opatrnejsi, nebot OTG lze vykladat a take se vyklada obema zpusoby (Ano, IEEE hovori o "On-The-go", mnozi vyrobci hardware zase o "On-to-go"). Asi jako DVD ve vasem nicku se vyklada jako Digital Video Disk stejne jako Digital Versatile Disk a to ve zhruba stejnem pomeru ci jako se casem zmenil vyklad zkratky PHP a mnohych jinych.
Nakonec dukazem budiz prave ta rada vyrobcu HW ktera hovori o "USB 2.0 On-To-Go new specifications", ale urcite se jedna o jejich vlastni zarizeni :) Verejne mineni bohuzel tvori prave tito vyrobci, ne specifikace.

Ano, nemusel jsem to napsat tak ostře. Ale! U článku nejsou napsány zdroje, je zde rubrika DOWNLOAD & Odkazy. První dva uvádí výrobce součástek, kteří pojmenovávají OTG jako On-The-Go. Poslední odkaz zde na HW server je obecně o USB.
Jak jste řekl, IEEE hovoří o On-The-Go. Pokud je On-To-Go jenom jiný název pro On-The-Go, tak by bylo slušné použít standard. Pokud se jedná o jinou technologii, tak to uvést a nezaměňovat.

Vážení,
Ano, dle IEEE jde o USB On-The-Go, i když u recenzí některých přístrojů se píše On-To-Go. Moc děkuji za upozornění. Článek vznikl jako vedlejší produkt z mé potřeby rychlého získání informací o funkci USB OTG pro potřebu práce s novými MCU Luminary Micro. Protože osobně si nerad nechávám informace pro sebe a psaní článků je mi koníčkem ve mém osobním volnu (je to lepší než sedět u televize :-), chtěl jsem čerstvě nabité zajímavé informace předat dále v podobě, jak jsem USB OTG pochopil já. A protože bohužel nejsem neomylný, děkuji za každé praktické upozornění nebo radu.

Děkuji, že to neberete osobně, kromě toho, že jsem si všiml jiné interpretace té zkratky jsem se i já přiučil a kéž by podobné články vycházely i v budoucnosti.

Rád bych jenom doplnil, že USB OTG disponují už i 32 bitové procesory od Microchipu, které budou pravděpodobně čtenářům v ČR známější a možná i lépe dostupné.

Mohu se zeptat, k jakému účelu jste USB OTG studoval? Jestli pro tento způsob komunikace vyvíjíte nebo máte vyvinutou nějakou konkrétní aplikaci.

vzhledem k tomu ze google na dotaz "on to go" nevyhodi zadne smyslu plne vysledky ale zato na dotaz "on the go" jich vyhodi mraky, tak se domnivam ze je jasne ktere oznaceni asi bude spravne ...

lol, tady se řeší elektronika, Živě má jiné URL ;) je vidět, že vám ta registrace stála za to :)

No prave, ze se tady resi elektronika. A k tomu podobne napruzene komentare typu "... jak vam mame verit, ze vite o cem pisete ..." myslim moc nepatri. A uz vubec ne pod docela dobry clanek.

Preji Vam krasny skoroletni den.
rollfree

Neni to spatny clanek, ale pokud aspon trochu umite anglicky tak se na me nezlobte, ale On-To-Go nema absolutne zadny smysl, kdezto On-The-Go ma a proto je jmenem pro tento zpusob komunikace. Proto me velice zajimalo, jak muze autor napsat takovou kravinu, kdyz musel precist spoustu dalsi literatury dostupne pouze v anglictine.
Spousta clanku v dnesni dobe vznika bohuzel pouhohopouhym prelozim z anglictiny, aniz by autor vedel, o co jde (coz neni tento pripad!).

Ze by to autorovi uvizlo v hlave pote co jako prvni se setkal s oznacenim On-To-Go ? :)

Verte, ze se mi pri psani clanku take sveho casu podarilo prisoudit 89c2051 Intelu, byt jsem opisoval technicke udaje s datasheetu s logem Atmel.

mno .. vzdyt se tam o on-the-go vsude pise, jen na zacatku je pro informaci uvedeno, ze to nekdy nekdo pise i jako on-to-go .. tot vse, pouze informace, ze to je nekdy i jinak

Otazka k obrazku c.1 - co presne znazornuje blok ESD? Jake zapojenie sa tam pouziva?
Dik moc.
pb

ESD alebo ak chces ElectroStatic Discharge jeochrana pred napatovym alebo prepatovym  vybojom a elektrostatickou  elektrikou.

Dobrý den. Z ryze praktického hlediska, nebylo by možné USB OTG využít jako náhradu ztracené mikroflash od bezdrátového prezentéru? Poradí někdo, kdo se v této problematice vyzná? Děkuji

Chtěl bych se zeptat zdali potřebuji OTG pro připojení aktivního USB HUBu a klasické klávesnice a myši k androidímu zařízení, např. smartfonu pro psaní delších textů? Zdali bez OTG bude myš a klávesnice fungovat? Vybírám ze dvou telefonů PRESTIGIO MultiPhone 5307 DUO (OTG nemá) a verzí 5550 (OTG má).